Responses API 的异步工具调用允许模型在应用运行慢速工具期间继续处理独立工作;应用负责执行后台任务,并在后续请求中用原始 call_id 提交结果。
适合的任务:慢速外部查询、可并行处理的独立子任务,以及需要边工作边等待用户回答的应用流程。
不适合的任务:由 OpenAI 托管执行的内置工具、Programmatic Tool Calling;Multi-agent 模式下也不要与 parallel tool calls 组合。
适用的模型版本:兼容章节原文写明 “GPT-6 Astra and later models”。该表述没有明确列出 GPT-6 Sol;本文归档在 Sol 目录不代表 Sol 兼容性已确认,实施前应以目标模型的当前 API 兼容性为准。
适用的客户端、Agent 或 API:Responses API;工具由应用执行。异步工具本身不会把执行交给 OpenAI,也不负责管理应用的后台任务。
推荐的推理档位和参数:原文未指定固定推理档位。工具定义需按具体函数或自定义工具加入 async: true。
在 Responses API 的函数或自定义工具定义中添加 async: true。例如:
{
"type": "function",
"name": "lookup_price",
"description": "Look up a product price in the background.",
"async": true,
"strict": true,
"parameters": {
"type": "object",
"properties": {"sku": {"type": "string"}},
"required": ["sku"],
"additionalProperties": false
}
}收到完整的 function_call 或 custom_tool_call 后,由应用启动对应后台任务,并保存响应 ID、原始 call_id 与任务状态。流式响应时,等完整的工具调用项到达后再启动任务。
模型可以在同一响应中继续输出独立答案;应用可先展示这部分结果,同时让后台任务继续运行。若中间发生新的对话轮次,更新继续请求所用的最新 response ID,但保留原工具调用的 call_id。
任务完成后,在后续 Responses 请求中提交对应输出:函数使用 function_call_output,自定义工具使用 custom_tool_call_output。延续请求使用最新 previous_response_id,并继续带上 tools 和 instructions。
若模型需要决定何时等待,可增加普通同步的 wait_for_tasks 函数。为异步调用参数加入 task_handle,应用维护整个对话范围内的 handle → 原始 call_id / 后台任务注册表;handle 即使任务完成也不可复用。
收到 wait 调用后,只等待注册表中指定且尚未返回的任务。先按各原始 call_id 回传新完成的结果,再用 wait 调用自己的 call_id 回传状态。模型下一步依赖结果时才等待;应用也可在结果完成时主动回传,无须 wait 工具。
若异步工具向用户收集信息,应用展示问题并将用户答复作为原始调用的工具结果返回。等待期间继续独立工作;若用户取消或超时,返回明确的无答案结果。
工具定义中的 async: true 使返回的调用项带有 async: true;这表示可异步处理,不表示应用已启动或完成任务。
输出项必须使用原调用的 call_id。wait 工具是应用自定义普通函数,wait_for_tasks 和 request_user_input_async 都不是 Responses API 内置工具。
对用户提问的异步调用,工具结果应是用户的真实答复;仅确认“已展示问题”不能完成该调用。
异步执行不会让一个 Response 一直保持打开并等待工具或用户;应用需要在后续请求中提交工具结果。
异步能力适用于应用执行的 function 和 custom tools,不适用于 hosted built-in tools。Programmatic Tool Calling 应直接调用工具,不要配置异步工具。
Multi-agent 模式下不要将 async tools 与 parallel tool calls 组合。
官方兼容说明只写 “GPT-6 Astra and later models”;它没有在该页明确说明 gpt-6-sol 是否属于此范围。本文未在 Sol 专属环境验证。
示例中的天气、价格和用户答复均为演示数据或流程示例,不是实际服务结果。
GPT-6 Sol