From ec0be1ff2716be098008bc2bbc6ca1f6fb207c5d Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 4 Mar 2025 21:02:08 +0800 Subject: [PATCH] feat: Enhance image upload and model-specific message handling - Add vision model check before image upload in Inputbar - Implement flexible message start forcing for specific models - Improve provider-level message routing logic --- src/renderer/src/pages/home/Inputbar/Inputbar.tsx | 2 +- src/renderer/src/providers/OpenAIProvider.ts | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx index 2fc23c35..bc440720 100644 --- a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx +++ b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx @@ -366,7 +366,7 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic }) => { event.preventDefault() if (file.path === '') { - if (file.type.startsWith('image/')) { + if (file.type.startsWith('image/') && isVisionModel(model)) { const tempFilePath = await window.api.file.create(file.name) const arrayBuffer = await file.arrayBuffer() const uint8Array = new Uint8Array(arrayBuffer) diff --git a/src/renderer/src/providers/OpenAIProvider.ts b/src/renderer/src/providers/OpenAIProvider.ts index 34cdd143..044a9bc6 100644 --- a/src/renderer/src/providers/OpenAIProvider.ts +++ b/src/renderer/src/providers/OpenAIProvider.ts @@ -213,6 +213,18 @@ export default class OpenAIProvider extends BaseProvider { return model.id.startsWith('o1') } + private isForceUserMessageStart(model: Model) { + if (model.id === 'deepseek-reasoner') { + return true + } + + if (model.provider === 'xirang') { + return true + } + + return false + } + async completions({ messages, assistant, onChunk, onFilterMessages }: CompletionsParams): Promise { const defaultModel = getDefaultModel() const model = assistant.model || defaultModel @@ -232,7 +244,7 @@ export default class OpenAIProvider extends BaseProvider { const _messages = filterContextMessages(takeRight(messages, contextCount + 1)) onFilterMessages(_messages) - if (model.id === 'deepseek-reasoner') { + if (this.isForceUserMessageStart(model)) { if (_messages[0]?.role !== 'user') { userMessages.push({ role: 'user', content: '' }) }