长耗时推理不适合让一个 HTTP 连接一直等待。OpenAI Responses API 的后台模式会先返回响应对象,程序再按响应 ID 轮询状态。核心验收不是“请求已提交”,而是终态为 completed 且确实取回输出。
创建后台响应
安装 SDK、配置 OPENAI_API_KEY 后,保存为 background_job.py:

from time import sleep
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="gpt-6-astra",
input="整理一份详细的客服工单分类方案,并列出验收表。",
background=True,
)
print("id:", resp.id, "status:", resp.status)
while resp.status in {"queued", "in_progress"}:
sleep(2)
resp = client.responses.retrieve(resp.id)
print("status:", resp.status)
if resp.status == "completed":
print(resp.output_text)
else:
print("任务没有成功完成,最终状态:", resp.status)
轮询时要保存什么
创建成功后立即持久化 resp.id、业务任务 ID、创建时间和当前状态。进程重启后可继续用响应 ID查询,避免重新提交造成重复成本。轮询应设置间隔、最大等待时间和退避,不要每几十毫秒请求一次。
怎样验证结果
先用一个需要几十秒的非敏感测试任务。日志应依次出现 queued 或 in_progress,最后出现 completed,并且输出含有题目要求的分类方案与验收表。若最终为失败、取消或过期状态,记录状态与请求 ID并交由重试策略判断,不把空输出当成功。
存储和隐私边界
后台执行需要服务端暂存响应以支持异步运行和轮询。官方文档对不同数据保留设置给出了专门说明;有零数据保留或敏感数据要求时,应先核对项目设置和官方限制,再决定是否采用后台模式。
本文按 2026 年 10 月 1 日官方后台模式文档整理,未在你的项目、模型权限和数据保留配置上实际运行。
相关问题
可以靠断开连接取消任务吗?
不能这样假定。后台任务已在服务端运行,应使用官方取消方法并核对取消后的状态。
任务完成后一定有 output_text 吗?
不一定。工具调用或其他输出类型可能位于结构化 output 数组中,应按任务类型解析。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31239.html