gpt-5.4+ models not detected as Responses API models, causing tool_choice.function error

用户在使用 langchain-openai 库(版本 1.1.10)时,调用 ChatOpenAI 并绑定 gpt-5.4 系列模型(例如 gpt-5.4-2026-03-05 ),通过 bind_tools 方法指定 tool_choice (如 tool_choice="my_tool" )时

gpt-5.4+ models not detected as Responses API models, causing tool_choice.function error

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-procodex 模型,缺少对 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

解决步骤

  1. 升级 langchain-openai 到修复版本:等待或安装包含 PR #35643 修复的版本,该 PR 在 _model_prefers_responses_api 函数中添加了 "gpt-5.4" in model_name 的检测逻辑。升级后 gpt-5.4 模型将自动路由到 Responses API。
  2. 手动指定 Responses API(可优先尝试):在创建 ChatOpenAI 实例时添加 use_responses_api=True 参数,强制使用 Responses API。
    llm = ChatOpenAI(model="gpt-5.4-2026-03-05", use_responses_api=True)
  3. 临时绕过方案:如果暂时无法升级,可考虑直接使用 OpenAI Python SDK 来构造请求,避免经由 langchain-openai 的序列化逻辑。

验证方法

运行以下测试代码确认问题已解决:

  • 不使用 use_responses_api=True 调用 gpt-5.4 模型并绑定工具,观察是否不再抛出 BadRequestError
  • 检查 _model_prefers_responses_api 函数源码或相关文档,确认 gpt-5.4 已被列入自动检测列表。

参考来源

langchain-ai/langchain #35584

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 8640

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注