OpenAI Responses API 怎样在 store=false 时保留加密推理上下文
把 Responses API 设置为 store=false 后,很多人会误以为模型只能处理一次请求。实际边界是:服务端不替调用方保存 response,但调用方仍可保留返回的完整 output item,在下一次请求中原样回放,其中就包括 reasoning item 里的 encrypted_content。这样可以在无状态或 Zero Data Retention 场景下延续可用的推理上下文。
官方资料:https://developers.openai.com/api/docs/guides/reasoning
这里的“保留”不是读取或解密模型的原始推理文本,而是保存 API 返回的 opaque item。文章只讨论这条保存与回放链路,不展开工具调用事件分类、结构化输出或普通多轮状态设计。
store=false 为什么仍能保留推理上下文
先把两个概念分开:store=false 控制服务端是否保存这次 response;上下文连续性则取决于下一次请求有没有拿到上一轮需要的输入项。无状态模式下,响应的 output 数组仍可能包含类型为 reasoning 的项目,项目里带有用于后续请求的 encrypted_content。
这个字段应当被当作不透明数据处理。应用可以将完整 item 序列化后放入自己的短期上下文仓库,或跟随业务会话加密保存;不应把它当作可展示的思维过程,也不应自行修改其中的字符串。

先保留完整 output,而不是只抄 encrypted_content
最稳妥的做法是保留 SDK 返回的完整 output item,再用 SDK 提供的转换方法把它们放回下一次 Responses 输入。只拷贝一个字段容易丢掉 item 的类型、标识或其它上下文信息,也会让后续请求的形状和服务端返回形状不一致。
import OpenAI from "openai";
import { toResponseInputItems } from "openai/lib/responses/ResponseInputItems";
const client = new OpenAI();
const history = [
{
role: "user",
content: "请把这段技术需求拆成三个可执行的实现约束。",
},
];
const first = await client.responses.create({
// store=false 让调用方负责保存后续需要的响应项。
model: "gpt-6.1-sol",
store: false,
input: history,
reasoning: { context: "current_turn" },
});
// 原样转换完整 output,保留 reasoning item 及其 encrypted_content。
history.push(...toResponseInputItems(first.output));
history.push({
role: "user",
content: "现在根据这些约束给出接口字段草案。",
});
const second = await client.responses.create({
// all_turns 允许兼容模型使用历史 reasoning 上下文。
model: "gpt-6.1-sol",
store: false,
input: history,
reasoning: { context: "all_turns" },
});
console.log(second.output_text);
示例里的模型名只表示一个支持该能力的 reasoning 模型占位,项目应替换为自己账号可用且属于兼容模型家族的模型。关键不在于手写 encrypted_content,而在于把 first.output 转成可回放输入,再追加新的用户消息。
把历史项回放到下一次请求
回放时保持顺序很重要:先放入上一轮响应产生的输入项,再追加新的用户消息。第一轮可以使用 current_turn;当下一轮需要让模型使用更早的可用 reasoning 上下文时,再显式设置 reasoning.context 为 all_turns。
如果业务要把历史写入数据库,建议把整个响应项作为受控 JSON 保存,并对会话标识、访问权限和生命周期做隔离。不要只保存一段看起来像随机字符串的字段,更不要在日志中打印完整加密内容。

三个容易混淆的边界
- 无状态不等于无上下文。它意味着服务端不替你保存 response,调用方仍要保存下一轮所需的输入项。
- 加密字段不等于可读推理。
encrypted_content是供模型继续使用的 opaque 数据,不应展示给用户或尝试自行解密。 - 上下文有模型兼容范围。持久化 reasoning 只能在兼容的模型家族之间复用;切换到不兼容的模型时,不能假设旧 reasoning 一定会被继续使用。
另外,store=false 只解决服务端 response 存储边界,不会自动替应用清理自己的数据库、缓存或日志。真正需要零数据保留时,还要把调用方保存链路纳入同一套生命周期策略。
常见问题
需要手动把 encrypted_content 放进 include 吗?
当前 Responses 文档说明,reasoning item 默认会带 encrypted content;兼容场景仍可看到 reasoning.encrypted_content 这个 include 名称。写回放代码时优先保留完整 output item,不要围绕单个字段做脆弱拼装。
为什么不能把 reasoning.summary 当成完整上下文?
summary 是给调用方看的摘要信息,不等同于模型继续生成所需的加密 reasoning item。需要保持上下文连续性时,应回放 API 返回的完整 output item。
store=false 下能否使用 previous_response_id?
本文不把它作为无状态保存方案。若目标是由调用方掌控数据生命周期,就按完整 output item 回放的方式组织请求,并明确自己的保存与清理边界。
小结
Responses API 的无状态模式把责任从服务端转给调用方:设置 store=false,保留完整 output,把其中的 reasoning item 原样转换并回放,再追加新的用户消息。只要把 encrypted_content 当作不透明上下文、遵守模型兼容范围,并同步治理自有存储,就能在零数据保留约束下维持需要的推理连续性。
Docker buildx bake 用 HCL 统一多服务构建参数
- 上一篇
- Docker buildx bake 用 HCL 统一多服务构建参数
- 下一篇
- Hugging Face Transformers generate 怎样用 max_new_tokens 控制输出长度
-
- 科技周边 · 人工智能 | 39分钟前 |
- Hugging Face Datasets IterableDataset batch 丢弃尾批的配置方法
- 297浏览 收藏
-
- 科技周边 · 人工智能 | 52分钟前 |
- Hugging Face Transformers generate 怎样用 max_new_tokens 控制输出长度
- 437浏览 收藏
-
- 科技周边 · 人工智能 | 9小时前 |
- OpenAI Responses API 怎样为图片生成请求绑定输入图
- 412浏览 收藏
-
- 科技周边 · 人工智能 | 9小时前 |
- OpenAI Batch API 怎样安排离线批量请求
- 114浏览 收藏
-
- 科技周边 · 人工智能 | 9小时前 |
- 模型输出为什么会被截断以及怎样读取完成原因
- 277浏览 收藏
-
- 科技周边 · 人工智能 | 9小时前 |
- OpenAI API 怎样为结构化输出定义 JSON Schema
- 101浏览 收藏
-
- 科技周边 · 人工智能 | 9小时前 |
- OpenAI Embeddings 怎样按批量输入组织请求
- 124浏览 收藏
-
- 科技周边 · 人工智能 | 9小时前 |
- Hugging Face Hub 怎样固定模型修订版本
- 123浏览 收藏
-
- 科技周边 · 人工智能 | 9小时前 |
- OpenAI API 怎样读取请求 ID 进行故障定位
- 231浏览 收藏
-
- 科技周边 · 人工智能 | 9小时前 |
- OpenAI API 怎样把图片输入和文本问题放在同一请求
- 417浏览 收藏
-
- 科技周边 · 人工智能 | 9小时前 |
- OpenAI API 怎样区分流式输出中的文本事件
- 352浏览 收藏
-
- 科技周边 · 人工智能 | 9小时前 |
- OpenAI Responses API 怎样保留多轮对话上下文
- 348浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 702次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 711次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 785次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 746次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 582次使用
-
- Go Excelize API源码阅读SetSheetViewOptions示例解析
- 2022-12-24 485浏览
-
- Go快速开发一个RESTfulAPI服务
- 2023-01-01 493浏览
-
- etcd通信接口之客户端API核心方法实战
- 2023-01-07 433浏览
-
- golangAPI请求队列的实现
- 2023-01-24 489浏览
-
- Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据的思路详解
- 2022-12-28 267浏览

