Explorar o código

fix: ensure assistant messages always have reasoning on them for deepseek (#24180)

Aiden Cline hai 3 meses
pai
achega
86715fecc4
Modificáronse 1 ficheiros con 18 adicións e 0 borrados
  1. 18 0
      packages/opencode/src/provider/transform.ts

+ 18 - 0
packages/opencode/src/provider/transform.ts

@@ -175,6 +175,24 @@ function normalizeMessages(
     return result
   }
 
+  // Deepseek requires all assistant messages to have reasoning on them
+  if (model.api.id.includes("deepseek")) {
+    msgs = msgs.map((msg) => {
+      if (msg.role !== "assistant") return msg
+      if (Array.isArray(msg.content)) {
+        if (msg.content.some((part) => part.type === "reasoning")) return msg
+        return { ...msg, content: [...msg.content, { type: "reasoning", text: "" }] }
+      }
+      return {
+        ...msg,
+        content: [
+          ...(msg.content ? [{ type: "text" as const, text: msg.content }] : []),
+          { type: "reasoning" as const, text: "" },
+        ],
+      }
+    })
+  }
+
   if (typeof model.capabilities.interleaved === "object" && model.capabilities.interleaved.field) {
     const field = model.capabilities.interleaved.field
     return msgs.map((msg) => {