Remove enhancement opacity, update Gemini models, add AI reasoning filter
This commit is contained in:
parent
d08cac5a3a
commit
2bd2c96be2
25
VoiceInk/Services/AIEnhancementOutputFilter.swift
Normal file
25
VoiceInk/Services/AIEnhancementOutputFilter.swift
Normal 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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
|
||||
@ -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 [
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user