LangChain 中思考模型的切换问题

最近在学一个agent项目,项目地址为:langgraph-101,碰到该问题

什么是思考模型?

思考模型(Thinking/Reasoning Model)是指在生成最终回答之前,会先进行一段内部"思考"过程的模型。代表:

  • OpenAI: o1, o3-mini
  • DeepSeek: DeepSeek-R1, DeepSeek-V4-Pro
  • 小米: MiMo-V2.5-Pro
    这些模型在 API 响应中会返回一个额外的 reasoning_content 字段,包含模型的思考链。

问题:思考模型 + LangChain 多轮对话不兼容

报错信息

BadRequestError: Error code: 400
'The reasoning_content in the thinking mode must be passed back to the API.'

原因分析

  1. 思考模型第一轮调用返回 reasoning_content(思考过程)+ content(最终回答)
  2. LangChain 的 AIMessage 只保留了 contenttool_calls,丢弃了 reasoning_content
  3. 第二轮调用时,API 要求把上一轮的 reasoning_content 传回去
  4. LangChain 没传 → API 报错

影响范围

  • ❌ Agent 的工具调用循环(需要多轮对话)
  • ❌ 带 Memory 的多轮对话
  • ✅ 单轮问答(不涉及历史消息传回)

解决方案

关闭思考模式

如果 API 平台支持关闭思考模式:

from langchain_openai import ChatOpenAI

# DeepSeek 官方 API 的写法
model = ChatOpenAI(
    model="deepseek-v4-pro",
    extra_body={"thinking": {"type": "disabled"}}
)

# 另一种常见写法(取决于平台)
model = ChatOpenAI(
    model="deepseek-v4-pro",
    extra_body={"enable_thinking": False}
)

⚠️ 具体参数名取决于你的 API 平台实现,需查阅平台文档。deepseek的文档:思考模式的配置

总结

  1. 学习 LangGraph Agent 时,优先使用非思考模型,避免兼容性问题
  2. 如果必须用思考模型,尝试通过 extra_body 关闭思考模式
  3. 如果平台不支持关闭,只能换模型
  4. 使用第三方平台时,务必确认 OPENAI_BASE_URL 已正确设置
posted @ 2026-05-18 15:59  江鸟Dev  阅读(224)  评论(0)    收藏  举报