您无法随身携带的会话
推理 API 的最初承诺是非常简单的:发送一些输入,接收一些输出。如果你都保留了,就有了对话。你可以检查它,归档它,重放它,或者把它交给不同的模型。然而,这种抽象从来没有完全真实过。提示缓存存储在其他人的 GPU 上,分词在模型之间有所不同,采样是不可重现的(而且这是完全有意的)。但是,以转录本形式存在的会话的语义记录仍然可以属于用户。转录本应该包含指令、消息、工具调用和工具结果。另一个足够强大的模型可能不会完全一样地继续,但它可以理解发生了什么并接管。推理 API 令人沮丧地在一定程度上远离了这种特性。它们越来越多地返回混合文本和供应商绑定状态,这种状态是非常有意图地不可移植的。推理代币被向用户收费,但仅作为不透明、加密的二进制大块返回,至多是无用的摘要,供模型访问的来源材料是客户端永远无法看到的,压缩的上下文只有原始提供者能够解密,子代理的指令和消息对运行代理的应用程序是隐藏的,采用加密有效负载的形式,文件、向量存储、容器和缓存引用在其他地方无法解析的完全由 ID 关键的响应和会话状态完全存储在提供者的服务器上。每个功能都有一个基本的理由,对于提供者来说,这个理由是微不足道的,同时也有很好的理由说明这对用户是有利的。所有这些加起来改变了 AI 会话的所有权现实:您机器上的转录本不再是您的会话,而是一个会话的部分视图,其操作状态属于推理提供者,而不是您。我们不喜欢这种方向,我们想谈谈这个对您作为用户意味着什么,以及这对我们作为该领域工具开发者的意义。会话所有权的实用测试 在可移植会话中,我们并不是说从一个模型切换到另一个模型必须产生相同的下一个令牌。这是确定的,因为模型具有不同的能力、训练个性、上下文窗口和使用工具的方式。并且,总的来说,这一切都是相当非确定性的。可移植性意味着一些更谦逊的东西:const transcript = session.export(); revokeCredentials(oldProvider); session = newProvider.continueFrom(transcript); 存档应该包含足够的可理解信息,以便另一个模型继续工作。它不应该要求旧的提供者解除引用 ID,解密 blob,记住搜索结果或重建摘要。这给我们提供了五个有用的测试:检查:用户可以看到模型看到的内容、工具的作用以及代理之间的对话吗?导出:会话是自包含的,除了可以下载的普通工件之外吗?重放:另一个实现能够重建语义上等价的上下文吗?审计:人类可以在事后解释系统为何采取某一行动吗?删除:用户可以识别并删除会话所依赖的每个服务器端副本吗? 响应 ID 不是转录文本,用户无法解密的密文不属于用户控制的状态,引用列表不是模型上下文中由搜索结果放置的证据。 为谁加密? 这些功能的命名和营销可能会误导人。encrypted_content 听起来像是用户控制下的隐私特性。通常这是一种客户无法读取的胶囊,只有提供者可以打开。提供者选择密钥,为其自己的模型解密内容,并定义数据可以被重放的位置。更好的术语是提供者密封状态。提供者密封可以带来真正的隐私好处。例如,OpenAI 可以使用 store: false 将加密推理返回给客户,然后在下一个请求中在内存中解密,而不持久化中间状态。对于零数据保留的客户,这比要求服务器端会话存储要好得多。但请记住,实际上并没有什么需要加密的东西! 最重要的是,这种加密并不会使数据对推理提供者隐藏;它隐藏了数据对您来说。 存储对话将转录本变成指针 OpenAI 的响应 API 默认存储响应。它的文档中表示,响应对象默认会保留至少 30 天。附加到会话的项目不受该 30 天的 TTL 限制。store: false 可用并且应该被使用,因为这使其更像是完成:数据不会存储在 OpenAI 的服务器上。新的 Gemini 交互 API 也做出了类似的选择。它默认为 store: true;在付费级别,交互保留 55 天,而在免费级别保留一天。显然,将状态存储在服务器上的想法相当令人担忧。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡