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: '' }) }