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.'
原因分析
- 思考模型第一轮调用返回
reasoning_content(思考过程)+content(最终回答) - LangChain 的
AIMessage只保留了content和tool_calls,丢弃了reasoning_content - 第二轮调用时,API 要求把上一轮的
reasoning_content传回去 - 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的文档:思考模式的配置
总结
- 学习 LangGraph Agent 时,优先使用非思考模型,避免兼容性问题
- 如果必须用思考模型,尝试通过
extra_body关闭思考模式 - 如果平台不支持关闭,只能换模型
- 使用第三方平台时,务必确认
OPENAI_BASE_URL已正确设置

浙公网安备 33010602011771号