Remove enhancement opacity, update Gemini models, add AI reasoning filter

This commit is contained in:
Beingpax 2025-07-14 22:55:42 +05:45
parent d08cac5a3a
commit 2bd2c96be2
4 changed files with 36 additions and 8 deletions

View File

@ -0,0 +1,25 @@
import Foundation
struct AIEnhancementOutputFilter {
private static let reasoningPatterns = [
#"(?s)<think>.*?</think>"#,
#"(?s)<reasoning>.*?</reasoning>"#,
#"(?s)<analysis>.*?</analysis>"#,
]
static func filter(_ text: String) -> String {
var filteredText = text
for pattern in reasoningPatterns {
if let regex = try? NSRegularExpression(pattern: pattern) {
let range = NSRange(filteredText.startIndex..., in: filteredText)
filteredText = regex.stringByReplacingMatches(in: filteredText, options: [], range: range, withTemplate: "")
}
}
filteredText = filteredText.replacingOccurrences(of: #"\s{2,}"#, with: " ", options: .regularExpression)
filteredText = filteredText.trimmingCharacters(in: .whitespacesAndNewlines)
return filteredText
}
}

View File

@ -181,7 +181,8 @@ class AIEnhancementService: ObservableObject {
if aiService.selectedProvider == .ollama {
do {
let result = try await aiService.enhanceWithOllama(text: formattedText, systemPrompt: systemMessage)
return result
let filteredResult = AIEnhancementOutputFilter.filter(result)
return filteredResult
} catch let error as LocalAIError {
switch error {
case .serviceUnavailable:
@ -251,7 +252,8 @@ class AIEnhancementService: ObservableObject {
throw EnhancementError.enhancementFailed
}
return enhancedText.trimmingCharacters(in: .whitespacesAndNewlines)
let filteredText = AIEnhancementOutputFilter.filter(enhancedText.trimmingCharacters(in: .whitespacesAndNewlines))
return filteredText
case 401:
throw EnhancementError.authenticationFailed
@ -306,7 +308,8 @@ class AIEnhancementService: ObservableObject {
throw EnhancementError.enhancementFailed
}
return enhancedText.trimmingCharacters(in: .whitespacesAndNewlines)
let filteredText = AIEnhancementOutputFilter.filter(enhancedText.trimmingCharacters(in: .whitespacesAndNewlines))
return filteredText
case 401:
throw EnhancementError.authenticationFailed
@ -368,7 +371,8 @@ class AIEnhancementService: ObservableObject {
throw EnhancementError.enhancementFailed
}
return enhancedText.trimmingCharacters(in: .whitespacesAndNewlines)
let filteredText = AIEnhancementOutputFilter.filter(enhancedText.trimmingCharacters(in: .whitespacesAndNewlines))
return filteredText
case 401:
throw EnhancementError.authenticationFailed

View File

@ -52,7 +52,7 @@ enum AIProvider: String, CaseIterable {
case .deepSeek:
return "deepseek-chat"
case .gemini:
return "gemini-2.5-pro"
return "gemini-2.0-flash-lite"
case .anthropic:
return "claude-sonnet-4-0"
case .mistral:
@ -75,7 +75,8 @@ enum AIProvider: String, CaseIterable {
case .groq:
return [
"llama-3.3-70b-versatile",
"llama-3.1-8b-instant"
"llama-3.1-8b-instant",
"qwen/qwen3-32b"
]
case .openAI:
return [

View File

@ -73,7 +73,6 @@ struct EnhancementSettingsView: View {
.padding()
.background(Color(.windowBackgroundColor).opacity(0.4))
.cornerRadius(10)
.opacity(enhancementService.isEnhancementEnabled ? 1.0 : 0.6)
// 3. Enhancement Modes & Assistant Section
VStack(alignment: .leading, spacing: 16) {
@ -102,7 +101,6 @@ struct EnhancementSettingsView: View {
}
.padding()
.background(CardBackground(isSelected: false))
.opacity(enhancementService.isEnhancementEnabled ? 1.0 : 0.6)
}
}
.padding(24)