diff --git a/packages/ai/src/providers/ollama.ts b/packages/ai/src/providers/ollama.ts index fb9f72092..4234a62f4 100644 --- a/packages/ai/src/providers/ollama.ts +++ b/packages/ai/src/providers/ollama.ts @@ -199,7 +199,18 @@ function convertMessages(model: Model<"ollama-chat">, context: Context): OllamaM }); } messages.push(...context.messages); - return transformMessages(messages, model).map(convertMessage); + const isCloud = model.provider === "ollama-cloud"; + return transformMessages(messages, model).map(msg => { + const converted = convertMessage(msg); + // Ollama cloud rejects requests when assistant history messages contain the `thinking` + // field — it's valid in model responses but not accepted as a history input. Strip it + // to prevent HTTP 400 errors. Local Ollama instances are unaffected. + if (isCloud && converted.role === "assistant" && converted.thinking) { + const { thinking: _t, ...rest } = converted; + return rest; + } + return converted; + }); } function convertTools(tools: Tool[] | undefined): OllamaFunctionTool[] | undefined {