From 4f48225a7aa06de99fd0246631ebf4114100e131 Mon Sep 17 00:00:00 2001 From: Shx Guo Date: Tue, 4 Mar 2025 21:20:02 +0800 Subject: [PATCH 1/2] Fix o models from OpenAI --- .../APIs/OpenAIChatCompletionsService.swift | 35 +++++++++++++++++-- .../Preferences/Types/ChatGPTModel.swift | 18 ++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/Tool/Sources/OpenAIService/APIs/OpenAIChatCompletionsService.swift b/Tool/Sources/OpenAIService/APIs/OpenAIChatCompletionsService.swift index b614f775..0c34f40a 100644 --- a/Tool/Sources/OpenAIService/APIs/OpenAIChatCompletionsService.swift +++ b/Tool/Sources/OpenAIService/APIs/OpenAIChatCompletionsService.swift @@ -311,7 +311,25 @@ actor OpenAIChatCompletionsService: ChatCompletionsStreamAPI, ChatCompletionsAPI .requiresBeginWithUserMessage, canUseTool: model.info.supportsFunctionCalling, supportsImage: model.info.supportsImage, - supportsAudio: model.info.supportsAudio + supportsAudio: model.info.supportsAudio, + supportsTemperature: { + guard model.format == .openAI else { return true } + if let chatGPTModel = ChatGPTModel(rawValue: model.info.modelName) { + return chatGPTModel.supportsTemperature + } else if model.info.modelName.hasPrefix("o") { + return false + } + return true + }(), + supportsSystemPrompt: { + guard model.format == .openAI else { return true } + if let chatGPTModel = ChatGPTModel(rawValue: model.info.modelName) { + return chatGPTModel.supportsSystemPrompt + } else if model.info.modelName.hasPrefix("o") { + return false + } + return true + }() ) self.model = model self.requestModifier = requestModifier @@ -714,7 +732,9 @@ extension OpenAIChatCompletionsService.RequestBody { requiresBeginWithUserMessage: Bool, canUseTool: Bool, supportsImage: Bool, - supportsAudio: Bool + supportsAudio: Bool, + supportsTemperature: Bool, + supportsSystemPrompt: Bool ) { temperature = body.temperature stream = body.stream @@ -737,6 +757,17 @@ extension OpenAIChatCompletionsService.RequestBody { var body = body + if !supportsTemperature { + temperature = nil + } + if !supportsSystemPrompt { + for (index, message) in body.messages.enumerated() { + if message.role == .system { + body.messages[index].role = .user + } + } + } + if requiresBeginWithUserMessage { let firstUserIndex = body.messages.firstIndex(where: { $0.role == .user }) ?? 0 let endIndex = firstUserIndex diff --git a/Tool/Sources/Preferences/Types/ChatGPTModel.swift b/Tool/Sources/Preferences/Types/ChatGPTModel.swift index ae199b75..bf372cd3 100644 --- a/Tool/Sources/Preferences/Types/ChatGPTModel.swift +++ b/Tool/Sources/Preferences/Types/ChatGPTModel.swift @@ -86,5 +86,23 @@ public extension ChatGPTModel { return false } } + + var supportsTemperature: Bool { + switch self { + case .o1Preview, .o1Preview20240912, .o1Mini, .o1Mini20240912, .o1, .o3Mini: + return false + default: + return true + } + } + + var supportsSystemPrompt: Bool { + switch self { + case .o1Preview, .o1Preview20240912, .o1Mini, .o1Mini20240912, .o1, .o3Mini: + return false + default: + return true + } + } } From 8067e1c28b9720353fa2034032d5d98388f96b93 Mon Sep 17 00:00:00 2001 From: Shx Guo Date: Tue, 4 Mar 2025 22:07:44 +0800 Subject: [PATCH 2/2] Bump version --- Version.xcconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Version.xcconfig b/Version.xcconfig index bc3af414..3ee2110f 100644 --- a/Version.xcconfig +++ b/Version.xcconfig @@ -1,4 +1,4 @@ -APP_VERSION = 0.35.5 -APP_BUILD = 443 +APP_VERSION = 0.35.6 +APP_BUILD = 451 RELEASE_CHANNEL = RELEASE_NUMBER = 1