English
主导航

旧版 API

后台模式

异步在后台运行耗时较长的任务。

诸如 Codex and 深度研究 等智能体表明,推理模型可能需要数分钟才能解决复杂问题。后台模式使您能够在 GPT-5.2 和 GPT-5.2 pro 等模型上可靠地执行耗时较长的任务,而无需担心超时或其他连接问题。

后台模式会异步启动这些任务,开发者可以通过轮询响应对象来随时检查状态。要在后台启动响应生成,请使用以下参数发起 API 请求: background 进行上传,并将其设置为 true:

由于后台模式会存储响应数据约 10 分钟以支持轮询,因此它与零数据留存 (ZDR) 不兼容。出于遗留原因,来自 ZDR 项目的请求在带有 background=true 的情况下仍会被接受,但使用它会破坏 ZDR 保证。修改版滥用监控 (MAM) 项目可以安全地使用后台模式。

在后台生成响应
1
2
3
4
5
6
7
8
9
10
11
from openai import OpenAI

client = OpenAI()

resp = client.responses.create(
  model="gpt-5.5",
  input="Write a very long novel about otters in space.",
  background=True,
)

print(resp.status)

轮询后台响应

要检查后台请求的状态,请使用 Responses 的 GET 端点。在请求处于 queued 或 in_progress 状态时,请继续轮询。当其离开这些状态时,即表示已达到最终(终止)状态。

检索在后台执行的响应
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from openai import OpenAI
from time import sleep

client = OpenAI()

resp = client.responses.create(
  model="gpt-5.5",
  input="Write a very long novel about otters in space.",
  background=True,
)

while resp.status in {"queued", "in_progress"}:
  print(f"Current status: {resp.status}")
  sleep(2)
  resp = client.responses.retrieve(resp.id)

print(f"Final status: {resp.status}\nOutput:\n{resp.output_text}")

取消后台响应

您也可以像这样取消正在处理中的响应:

取消正在进行的响应
1
2
3
4
5
6
from openai import OpenAI
client = OpenAI()

resp = client.responses.cancel("resp_123")

print(resp.status)

取消操作是幂等的——后续调用只会返回最终的 Response object.

流式传输后台响应

您可以创建后台响应并立即开始从中流式传输事件。如果您预计客户端会断开流连接并希望稍后能够恢复,这将非常有用。为此,请使用以下参数创建响应: background and stream 进行上传,并将其设置为 true。你需要跟踪一个与 sequence_number 您在每个流式传输事件中接收到的内容。

目前,从后台响应接收首个 token 的时间要高于同步响应。我们正在努力在未来几周内缩小这一延迟差距。

生成并流式传输后台响应
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from openai import OpenAI

client = OpenAI()

# Fire off an async response but also start streaming immediately
stream = client.responses.create(
  model="gpt-5.5",
  input="Write a very long novel about otters in space.",
  background=True,
  stream=True,
)

cursor = None
for event in stream:
  print(event)
  cursor = event.sequence_number

# If your connection drops, the response continues running and you can reconnect:
# SDK support for resuming the stream is coming soon.
# for event in client.responses.stream(resp.id, starting_after=cursor):
#     print(event)

限制

  1. 后台采样需要 store=true;无状态请求将被拒绝。
  2. 要取消同步响应,请终止连接
  3. 只有在创建后台响应时带有 stream=true.