diff --git a/app/client/platforms/deepseek.ts b/app/client/platforms/deepseek.ts index 244601525..16dd39f1a 100644 --- a/app/client/platforms/deepseek.ts +++ b/app/client/platforms/deepseek.ts @@ -22,7 +22,10 @@ import { SpeechOptions, } from "../api"; import { getClientConfig } from "@/app/config/client"; -import { getMessageTextContent } from "@/app/utils"; +import { + getMessageTextContent, + getMessageTextContentWithoutThinking, +} from "@/app/utils"; import { RequestPayload } from "./openai"; import { fetch } from "@/app/utils/stream"; @@ -67,8 +70,13 @@ export class DeepSeekApi implements LLMApi { async chat(options: ChatOptions) { const messages: ChatOptions["messages"] = []; for (const v of options.messages) { - const content = getMessageTextContent(v); - messages.push({ role: v.role, content }); + if (v.role === "assistant") { + const content = getMessageTextContentWithoutThinking(v); + messages.push({ role: v.role, content }); + } else { + const content = getMessageTextContent(v); + messages.push({ role: v.role, content }); + } } const modelConfig = { diff --git a/app/utils.ts b/app/utils.ts index 4f5b7b0b7..887efd574 100644 --- a/app/utils.ts +++ b/app/utils.ts @@ -16,8 +16,8 @@ export function trimTopic(topic: string) { return ( topic // fix for gemini - .replace(/^["“”*]+|["“”*]+$/g, "") - .replace(/[,。!?”“"、,.!?*]*$/, "") + .replace(/^["""*]+|[""*]+$/g, "") + .replace(/[,。!?""""、,.!?*]*$/, "") ); } @@ -241,6 +241,28 @@ export function getMessageTextContent(message: RequestMessage) { return ""; } +export function getMessageTextContentWithoutThinking(message: RequestMessage) { + let content = ""; + + if (typeof message.content === "string") { + content = message.content; + } else { + for (const c of message.content) { + if (c.type === "text") { + content = c.text ?? ""; + break; + } + } + } + + // Filter out thinking lines (starting with "> ") + return content + .split("\n") + .filter((line) => !line.startsWith("> ") && line.trim() !== "") + .join("\n") + .trim(); +} + export function getMessageImages(message: RequestMessage): string[] { if (typeof message.content === "string") { return []; @@ -256,9 +278,7 @@ export function getMessageImages(message: RequestMessage): string[] { export function isVisionModel(model: string) { const visionModels = useAccessStore.getState().visionModels; - const envVisionModels = visionModels - ?.split(",") - .map((m) => m.trim()); + const envVisionModels = visionModels?.split(",").map((m) => m.trim()); if (envVisionModels?.includes(model)) { return true; }