openai: `gpt-6-astra` with function tools is not auto-routed to the Responses API

这个报错通常发生在使用 langchain-openai 调用 gpt-6-astra 并绑定 function tools 时,SDK 默认仍然走 /v1/chat/completions ,而该端点不支持 gpt-6-astra 带 function tools 的请求;优先排查 LangCha

快速结论:这个报错通常发生在使用 langchain-openai 调用 gpt-6-astra 并绑定 function tools 时,SDK 默认仍然走 /v1/chat/completions,而该端点不支持 gpt-6-astra 带 function tools 的请求;优先排查 LangChain 是否正确将模型路由到 Responses API。

适用环境:Issue 已确认环境为 langchain_core 1.6.2、langchain_openai 1.6.2、openai 3.8.0、Python 3.12.10、Windows 11。复现基于 master 60357692

最快修复方案:暂无确认的一步修复方案;Issue 中已验证的临时绕过方式是显式设置 use_responses_api=True,使调用走 /v1/responses 并返回 200。根因按 Issue 讨论由 PR #40443 修复。

注意事项:Issue 提到官方建议的 reasoning_effort="none" 绕过方式同样失败,因为 gpt-6-astra 不支持 none。显式设置 use_responses_api=True 会改变调用端点,可能影响依赖 Chat Completions 行为的其他配置;升级到包含 PR #40443 的版本前,请确认集成包版本已包含该路由修复。

问题场景

用户通过 langchain-openaiChatOpenAI 使用模型 gpt-6-astra,并通过 bind_tools 绑定了一个 function tool(@tool 定义的 lookup),期望模型回答一个不调用工具的问题。默认设置下请求失败,报 400。

Issue 中给出的对照表如下:

  • gpt-6-astra + function tool,默认设置:走 /v1/chat/completions,返回 400。
  • 同样配置 + use_responses_api=True:走 /v1/responses,返回 200。
  • gpt-5.6-sol + function tool,默认设置:走 /v1/responses,返回 200。

不带工具的普通 gpt-6-astra 调用可以正常通过 Chat Completions,因此问题只出现在绑定 function tools 的场景。

报错原文

openai.BadRequestError: Error code: 400
Function tools with reasoning_effort are not supported for gpt-6-astra
in /v1/chat/completions. To use function tools, use /v1/responses or
set reasoning_effort to 'none'.

Issue 同时指出,报错建议的 reasoning_effort="none" 绕过方式也失败,因为 gpt-6-astra 不支持 none

原因分析

按 Issue 分析,根因是 langchain-openai 中的 _RESPONSES_API_ONLY_PREFIXES 未包含 gpt-6-astra,而只包含 gpt-5.6-sol。这导致 _model_prefers_responses_api 不会把 gpt-6-astra 的 function-tool 调用默认路由到 Responses API,请求留在 Chat Completions,而该端点不支持 gpt-6-astra 带 function tools 的请求。

Issue 引用的相关修复包括:

  • #40133 曾通过把 gpt-5.6-sol 加入 _RESPONSES_API_ONLY_PREFIXES 修复了同类 failure mode。
  • #40330 添加了 gpt-6-astra 的 reasoning-effort profile,但没有更新 Responses API 路由。
  • #38860 探索针对更早 GPT 模型家族的 function tools 条件式 Responses 路由,但未合并,且不覆盖 gpt-6-astra

最终该问题在 PR #40443 中解决,做法是把 gpt-6-astra 加入 _RESPONSES_API_ONLY_PREFIXES,并扩展 test_model_prefers_responses_api 覆盖基础模型名和带日期的快照名;不带工具的普通调用行为保持不变。

环境排查

  • 确认 langchain-openailangchain-core 的版本;Issue 环境为 1.6.2。
  • 确认 openai Python SDK 版本;Issue 环境为 3.8.0。
  • 确认 Python 版本;Issue 环境为 3.12.10。
  • 确认操作系统;Issue 环境为 Windows 11。
  • 确认是否使用 ChatOpenAI(model="gpt-6-astra") 并通过 bind_tools 绑定了 function tool。
  • 确认是否显式设置 use_responses_api=True;Issue 中该设置可让请求走 /v1/responses 并成功。
  • 确认所装集成包是否已包含 PR #40443 的路由修复;若仍复现,优先核对版本。
  • 确认请求未依赖 reasoning_effort="none";该模型不支持 none

解决步骤

  1. 先按 Issue 的最小复现确认问题:使用 ChatOpenAI(model="gpt-6-astra", max_tokens=16) 绑定一个 @tool function tool 后调用,观察是否出现 Function tools with reasoning_effort are not supported for gpt-6-astra in /v1/chat/completions
  2. 可优先尝试的临时绕过:在 ChatOpenAI 中显式设置 use_responses_api=True,让带 function tools 的 gpt-6-astra 请求走 /v1/responses。Issue 对照表显示该配置返回 200。
  3. 不要依赖报错中建议的 reasoning_effort="none",Issue 已确认 gpt-6-astra 不支持 none
  4. 长期修复:升级到包含 PR #40443 的 langchain-openai 版本。该 PR 将 gpt-6-astra 加入 _RESPONSES_API_ONLY_PREFIXES,使 _model_prefers_responses_api 默认将 function-tool 调用路由到 /v1/responses,同时覆盖基础模型名和带日期的快照名。
  5. 若无法升级,先保留显式 use_responses_api=True 作为规避方式,并确认其他依赖 Chat Completions 行为的配置不受影响。

验证方法

重新运行 Issue 中的最小复现代码:ChatOpenAI(model="gpt-6-astra") 绑定 function tool 后调用,不再出现 400 BadRequestError,请求走 /v1/responses 并返回 200。同时确认不带工具的普通 gpt-6-astra 调用行为未发生意外变化。若已升级到包含 PR #40443 的版本,可额外用基础模型名和带日期的快照名分别验证路由是否一致。

参考来源

langchain-ai/langchain #40346

修复 PR:langchain-ai/langchain #40443

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 23451

发表回复

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