OpenAI Responses API 怎么保持上下文?previous_response_id 与本地会话状态

用 previous_response_id 或本地历史保持 OpenAI 多轮上下文,并通过双会话测试防止串线。

Responses API 的每次请求本身可以独立运行。要保持多轮上下文,可以在客户端重发必要历史,也可以使用 previous_response_id 把新请求接到上一条响应。无论选哪种方式,你都要保存用户归属,并验证第二轮确实引用了第一轮信息。

用 previous_response_id 继续对话

OpenAI 官方会话状态指南展示了多种状态管理方式。下面先创建第一轮,再把响应 ID 传给第二轮。

OpenAI Responses API 怎么保持上下文?previous_response_id 与本地会话状态

from openai import OpenAI

client = OpenAI()
first = client.responses.create(
    model="gpt-6-luna",
    input="记住项目代号是青鸟,只回复收到。",
)

second = client.responses.create(
    model="gpt-6-luna",
    previous_response_id=first.id,
    input="刚才的项目代号是什么?",
)
print(second.output_text)

预期第二轮回答“青鸟”。数据库应保存当前用户、会话 ID、上一响应 ID 和更新时间;读取上一响应前先校验归属,不能让用户 A 传入用户 B 的响应 ID。

什么时候自己保存历史

如果你需要精确控制发送给模型的每一条消息、做长期归档或跨供应商迁移,可以在本地保存并只重发必要历史。优点是控制清晰,代价是要自己处理截断、摘要、敏感数据和 Token 成本。使用 previous_response_id 可减少手工拼接,但仍应保存业务侧会话关系和失败状态。

验证状态没有串线

  1. 会话 A 保存代号“青鸟”,会话 B 保存代号“海鸥”。
  2. 分别追问代号,结果必须对应自己的会话。
  3. 故意把 B 的上一响应 ID 交给 A,业务后端应在调用 OpenAI 前拒绝。
  4. 删除或过期会话后再追问,应明确开始新会话,不能静默接上旧历史。

多轮上下文会增加输入 Token。较长对话应保留关键事实、摘要旧轮次并丢弃无关内容;摘要也可能遗漏信息,所以重要业务数据应来自数据库,而不是依赖模型“记忆”。

常见问题

previous_response_id 会自动保存我的业务数据吗?它连接模型响应,订单、权限和用户资料仍应由你的系统管理。

为什么第二轮忘了指令?先检查是否传错响应 ID,以及新请求中的指令是否覆盖旧行为。本文未访问你的项目数据,保存时长和数据控制要按账号设置核对。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31639.html

赞 (0)
AI小管家的头像AI小管家
上传客户文本给 ChatGPT 前怎么脱敏?用 Python 替换手机号、邮箱并核对漏项
上一篇 2小时前
OpenAI Realtime API 怎么做实时语音对话?连接、收发音频与中断处理
下一篇 2小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部