diff --git a/VoiceInk/Services/AIEnhancementService.swift b/VoiceInk/Services/AIEnhancementService.swift index 5ca92f2..56bc161 100644 --- a/VoiceInk/Services/AIEnhancementService.swift +++ b/VoiceInk/Services/AIEnhancementService.swift @@ -265,28 +265,28 @@ class AIEnhancementService: ObservableObject { request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.addValue("Bearer \(aiService.apiKey)", forHTTPHeaderField: "Authorization") request.timeoutInterval = baseTimeout - + let messages: [[String: Any]] = [ ["role": "system", "content": systemMessage], ["role": "user", "content": formattedText] ] - + let requestBody: [String: Any] = [ "model": aiService.currentModel, "messages": messages, - "temperature": 0.3, + "temperature": aiService.currentModel.lowercased().hasPrefix("gpt-5") ? 1.0 : 0.3, "stream": false ] - + request.httpBody = try? JSONSerialization.data(withJSONObject: requestBody) - + do { let (data, response) = try await URLSession.shared.data(for: request) - + guard let httpResponse = response as? HTTPURLResponse else { throw EnhancementError.invalidResponse } - + if httpResponse.statusCode == 200 { guard let jsonResponse = try? JSONSerialization.jsonObject(with: data) as? [String: Any], let choices = jsonResponse["choices"] as? [[String: Any]], @@ -295,14 +295,14 @@ class AIEnhancementService: ObservableObject { let enhancedText = message["content"] as? String else { throw EnhancementError.enhancementFailed } - + let filteredText = AIEnhancementOutputFilter.filter(enhancedText.trimmingCharacters(in: .whitespacesAndNewlines)) return filteredText } else { let errorString = String(data: data, encoding: .utf8) ?? "Could not decode error response." throw EnhancementError.customError("HTTP \(httpResponse.statusCode): \(errorString)") } - + } catch let error as EnhancementError { throw error } catch { diff --git a/VoiceInk/Services/AIService.swift b/VoiceInk/Services/AIService.swift index 399b9ee..c0bb5d4 100644 --- a/VoiceInk/Services/AIService.swift +++ b/VoiceInk/Services/AIService.swift @@ -53,7 +53,7 @@ enum AIProvider: String, CaseIterable { case .anthropic: return "claude-sonnet-4-0" case .openAI: - return "gpt-4.1-mini" + return "gpt-5-mini" case .mistral: return "mistral-large-latest" case .elevenLabs: @@ -104,8 +104,9 @@ enum AIProvider: String, CaseIterable { ] case .openAI: return [ - "gpt-4.1", - "gpt-4.1-mini" + "gpt-5", + "gpt-5-mini", + "gpt-5-nano" ] case .mistral: return [