GPT-6 Sol 和 Luna 工具调用失败?先检查端点与推理参数
区分 Responses 与 Chat Completions 的函数格式,检查 reasoning、采样参数和缓存迁移,附不联网的本地请求检查器。
GPT-6 Sol 或 Luna 需要同时进行推理与函数调用时,应使用 Responses API。 当前文档中,Chat Completions 的函数调用仅支持 reasoning_effort: "none"。纯文本请求成功,不代表代理循环已经适配。
本文依据 OpenAI 迁移指南及 Sol、Luna文档,于 2026 年 9 月 23 日核对。检查范围是文档与本地请求结构,没有付费 API 实测或虚构的服务端错误回执。
先选端点,再换模型字段
| 请求目标 | 端点 | 推理字段 |
|---|---|---|
| Chat Completions 函数调用 | /v1/chat/completions | 顶层 reasoning_effort: "none" |
| 推理与函数调用 | /v1/responses | reasoning: {"effort":"low"} 等支持值 |
| Responses 内置工具 | /v1/responses | 另查该工具当前要求 |
两款模型文档列出的档位为 none、low、medium、high、xhigh、max。Chat 的顶层字段与 Responses 的嵌套对象不能混用。兼容 OpenAI 的网关也不必然实现全部 Responses 功能,供应商路由需要单独验证。
准备一个只读函数请求
下面的请求体声明订单状态查询,不实施订单操作。Responses 中函数直接放在工具对象内,与 Chat 的嵌套 function 格式不同:
{
"model": "gpt-6-sol",
"input": "Look up the status of order EXAMPLE-001.",
"reasoning": {"effort": "low"},
"max_output_tokens": 2048,
"tools": [{
"type": "function",
"name": "lookup_order",
"description": "Read the status of a sample order.",
"parameters": {
"type": "object",
"properties": {"order_id": {"type": "string"}},
"required": ["order_id"],
"additionalProperties": false
},
"strict": true
}]
}
声明工具不等于实现工具,也不保证模型一定调用。应用需要处理返回的调用、验证参数、执行允许的只读操作,再按 Responses 循环返回结果。接入生产服务前,先用非敏感样例数据验证。
Chat Completions 使用嵌套的 function 对象及顶层推理字段;含函数工具时应设为 none。只改端点 URL、不调整请求体和结果处理,不算完成迁移。
删除不兼容的采样参数
迁移指南要求:推理不为 none 时,删除 temperature、top_p、top_logprobs。Chat Completions 还需删除 logprobs;Responses 则从 include 中移除 message.output_text.logprobs。
检查 SDK 包装层是否注入了默认参数,而不只检查自己写的配置。调试时查看最终请求结构,日志应隐去密钥和敏感内容。失败时保留真实响应,不用其他模型的报错文字代替。
在本地检查请求体
python3 check_request.py responses responses-example.json
检查器不联网,只覆盖本文涉及的端点、档位与参数冲突。它不是完整 Schema 校验器,不验证账号权限、计费、限流、工具行为或第三方实现。测试使用合成请求,包含故意构造的无效案例。
已有 Chat 请求可脱敏保存后使用 chat 参数检查。逐项理解诊断结果;如果业务依赖被删除字段,应调整集成并验证输出处理,而不是机械删除后直接上线。
保留工具状态和计费证据
代理循环应保留工具调用标识,回传匹配结果,并维护 API 要求的对话内容。完整流程参见函数调用文档。
从 GPT-5.5 或更早版本迁移时,当前指南还要求将 prompt_cache_retention 改为 prompt_cache_options.ttl,值为 "30m"。JSON 能解析不代表缓存配置仍受支持;缓存资格与费用应另行核对。
常见问题
- Chat Completions 能进行函数调用吗?
- 当前 Sol/Luna 指南允许在 reasoning_effort 为 none 时使用;推理加函数调用应使用 Responses。
- 检查器通过就说明账号能用模型吗?
- 不能。它不发送请求,也不验证权限、计费和模型输出。
- 启用推理后可以保留 temperature 吗?
- 当前迁移指南要求推理不为 none 时移除 temperature、top_p、top_logprobs,并检查对应端点的 logprobs 字段。


