快速结论:这个报错通常发生在使用 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-openai 的 ChatOpenAI 使用模型 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-openai与langchain-core的版本;Issue 环境为 1.6.2。 - 确认
openaiPython 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。
解决步骤
- 先按 Issue 的最小复现确认问题:使用
ChatOpenAI(model="gpt-6-astra", max_tokens=16)绑定一个@toolfunction tool 后调用,观察是否出现Function tools with reasoning_effort are not supported for gpt-6-astra in /v1/chat/completions。 - 可优先尝试的临时绕过:在
ChatOpenAI中显式设置use_responses_api=True,让带 function tools 的gpt-6-astra请求走/v1/responses。Issue 对照表显示该配置返回 200。 - 不要依赖报错中建议的
reasoning_effort="none",Issue 已确认gpt-6-astra不支持none。 - 长期修复:升级到包含 PR #40443 的
langchain-openai版本。该 PR 将gpt-6-astra加入_RESPONSES_API_ONLY_PREFIXES,使_model_prefers_responses_api默认将 function-tool 调用路由到/v1/responses,同时覆盖基础模型名和带日期的快照名。 - 若无法升级,先保留显式
use_responses_api=True作为规避方式,并确认其他依赖 Chat Completions 行为的配置不受影响。
验证方法
重新运行 Issue 中的最小复现代码:ChatOpenAI(model="gpt-6-astra") 绑定 function tool 后调用,不再出现 400 BadRequestError,请求走 /v1/responses 并返回 200。同时确认不带工具的普通 gpt-6-astra 调用行为未发生意外变化。若已升级到包含 PR #40443 的版本,可额外用基础模型名和带日期的快照名分别验证路由是否一致。
参考来源
修复 PR:langchain-ai/langchain #40443
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![Dify python code execution error: No usable temporary directory found in ['/tmp', '/var/tmp', '/usr/tmp', '/'] error: exit status 255](https://www.chat-gpts.plus/wp-content/uploads/2026/09/18678-8dcba7c2-768x403.jpg)
![[Bug]: --otlp-traces-endpoint initializes tracer but never sends spans (instrument_otel/manual_instrument_otel never invoked)](https://www.chat-gpts.plus/wp-content/uploads/2026/09/56696-8c43ad90-768x403.jpg)
![[bug]: On windows: After organizing outputs images in sub-folders, clearing intermediates becomes impossible](https://www.chat-gpts.plus/wp-content/uploads/2026/09/9504-fbb443e3-768x403.jpg)