Responses API 可以用 previous_response_id 把后一轮请求关联到前一轮。最小验收应让第一轮写入一个明确事实,第二轮只问代词或省略信息;若回答正确,才说明上下文被延续。
完成两轮可复现测试
from openai import OpenAI
client = OpenAI()
first = client.responses.create(
model="gpt-6-astra",
input="记住本次测试项目代号是‘蓝鲸’,只回复已记录。",
)
print("first:", first.output_text)
second = client.responses.create(
model="gpt-6-astra",
previous_response_id=first.id,
input="刚才的项目代号是什么?只回复代号。",
)
print("second:", second.output_text)
正确结果是第二轮只回复“蓝鲸”。把 previous_response_id 删除后再运行第二轮,模型不应凭空知道代号。这个对照实验比连续闲聊更容易确认状态是否真的生效。

应用需要保存哪些字段
至少保存业务会话 ID、最新 response ID、用户 ID、更新时间和权限范围。收到新消息时先确认该 response ID 属于当前用户与当前会话,避免把甲用户的上下文串给乙用户。
状态不是永久记忆
previous_response_id 适合把响应串起来,但应用仍需决定会话保留时间、删除机制和敏感数据处理。对长期会话,应定期提取经过用户确认的事实或摘要,避免无限增长,也不要把模型自动总结当作不可更改的真实档案。
失败与边界
- 前一响应被删除、不可访问或属于别的项目时,关联会失败。
- 上下文存在不代表模型每次都能正确引用,关键事实仍要验证。
- 需要跨设备长期持久化时,可评估 Conversations API,并先设计访问控制。
- 涉及身份、金额和授权的动作,应从业务数据库读取,不依赖聊天记忆。
本文依据 2026 年 10 月 1 日官方 Responses 迁移指南整理,未在你的项目存储策略、权限与会话时长下实测。
相关问题
每轮都要发送完整历史吗?
使用 previous_response_id 可以串联响应;不同接口和存储设置下的行为应按官方文档实现。
能把一个 response ID 给多人共用吗?
不应这样做。会话状态必须按用户和权限隔离,避免上下文泄露。
参考:Migrate to the Responses API
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31275.html