
gpt-5.4+ models not detected as Responses API models, causing tool_choice.function error
快速结论:当使用 gpt-5.4 系列模型(如 gpt-5.4-2026-03-05)并通过 bind_tools 指定 tool_choice 时,LangChain OpenAI 集成会将其错误路由到 Chat Completions API,导致 OpenAI 返回 Unknown parameter: 'tool_choice.function' 错误。优先排查 langchain-openai 版本是否包含 gpt-5.4 的自动检测逻辑,或手动设置 use_responses_api=True。
问题场景
用户在使用 langchain-openai 库(版本 1.1.10)时,调用 ChatOpenAI 并绑定 gpt-5.4 系列模型(例如 gpt-5.4-2026-03-05),通过 bind_tools 方法指定 tool_choice(如 tool_choice="my_tool")时触发问题。该问题发生在 Chat Completions API 与 Responses API 之间的路由判断上。
报错原文
openai.BadRequestError: Unknown parameter: 'tool_choice.function'
原因分析
LangChain OpenAI 集成中的 _model_prefers_responses_api 函数用于判断模型应使用 Chat Completions 还是 Responses API。在初始版本中,该函数仅覆盖了 gpt-5.2-pro 和 codex 模型,缺少对 gpt-5.4 系列模型的检测。当使用 gpt-5.4 模型时,系统错误地将其路由到 Chat Completions API,但该 API 的 tool_choice 参数格式({"type": "function", "function": {"name": "..."}})与 Responses API 的格式({"type": "function", "name": "..."})不兼容,导致 OpenAI 拒绝请求。
注意:OpenAI 官方说明 gpt-5.4 同时支持 Chat Completions 和 Responses API,但 langchain-openai 在发送请求时构造的 tool_choice 参数格式不兼容 Chat Completions API。有 Issue 参与者表示直接使用 OpenAI Python 客户端发送相同格式的请求可以成功,因此根本原因在于 LangChain 内部的参数序列化逻辑而非模型兼容性问题。
环境排查
- langchain-openai 版本:确认是否 ≤ 1.1.10(问题版本),检查是否已升级到包含修复的版本
- OpenAI Python SDK 版本:确保与 langchain-openai 兼容
- 模型名称:确认是否使用了
gpt-5.4系列模型(如gpt-5.4-2026-03-05)
解决步骤
- 升级 langchain-openai 到修复版本:等待或安装包含 PR #35643 修复的版本,该 PR 在
_model_prefers_responses_api函数中添加了"gpt-5.4" in model_name的检测逻辑。升级后gpt-5.4模型将自动路由到 Responses API。 - 手动指定 Responses API(可优先尝试):在创建 ChatOpenAI 实例时添加
use_responses_api=True参数,强制使用 Responses API。llm = ChatOpenAI(model="gpt-5.4-2026-03-05", use_responses_api=True) - 临时绕过方案:如果暂时无法升级,可考虑直接使用 OpenAI Python SDK 来构造请求,避免经由 langchain-openai 的序列化逻辑。
验证方法
运行以下测试代码确认问题已解决:
- 不使用
use_responses_api=True调用gpt-5.4模型并绑定工具,观察是否不再抛出BadRequestError; - 检查
_model_prefers_responses_api函数源码或相关文档,确认gpt-5.4已被列入自动检测列表。



