对话状态(OpenAI)
OpenAI 提供了几种管理对话状态的方式。
核验日期
定义
OpenAI 提供了几种管理对话状态的方式。每个文本生成请求是独立且无状态的,但仍可以通过把额外消息作为参数提供给文本生成请求来实现多轮对话。通过交替使用用户消息和助手消息,可以在一次发给模型的请求中捕获对话之前的状态。
Conversations API 与 Responses API 配合,把对话状态保存为一个带有自身持久标识符的长期运行对象。对话存储的条目可以是消息、工具调用、工具输出和其他数据。
一图看懂
向 Chat Completions 发起 API 请求并使用 o1 模型时,词元计数会计入上下文窗口总量。模型的输入和输出以词元计量,词元从输入中解析以分析其内容和意图,并被组装成合乎逻辑的输出。
- 输入词元是通过 Chat Completions 包含在 messages 数组中的输入。
- 输出词元是模型针对提示生成的词元。
- 推理词元是模型用来规划回复的词元。
- 向 Responses API 发起 API 请求并使用支持推理的模型(如 o1 模型)时,词元计数计入上下文窗口总量。
- 输入词元是包含在 Responses API 的 input 数组中的输入。
- 每个模型的输出词元限制不同。
- gpt-4o-2024-08-06 最多可生成 16,384 个输出词元。
- gpt-4o-2024-08-06 的总上下文窗口为 128k 词元。
原文没有明确这些要点的先后顺序,因此按要点列出,不画先后箭头。
工作原理
要手动在已生成的响应之间共享上下文,需要把模型之前的响应输出作为输入包含进来,并追加到下一次请求中。Responses API 默认返回加密的推理条目。重放完整输出会让推理条目和助手 phase 值保持完整。
创建对话对象后,可以跨会话、设备或任务继续使用它。在多轮交互中,可以把对话传入后续响应以保存状态并在后续响应之间共享上下文,而不必把多个响应条目链接在一起。previous_response_id 参数用于在已生成的响应之间共享上下文,并可让你链接响应、创建串联的对话。
使用 Responses API 的 WebSocket 模式时,延续沿用与 HTTP 模式相同的 previous_response_id 语义,但通过持久套接字和重复的 response.create 事件进行。响应对象默认保存 30 天,将 store 设为 false 可以禁用这一行为。对话对象及其中的条目不受 30 天 TTL 的约束。
例子
另一个示例是让模型讲一个笑话,随后再请求另一个笑话。上下文窗口是单次请求中可使用的词元数量上限。上下文窗口描述可用于输入和输出词元的总词元数,对部分模型还包括推理词元。
超出上下文窗口限制生成的词元可能会在 API 响应中被截断。可以使用基于 tiktoken 库构建的 tokenizer 工具查看一段文本包含多少词元。
来源
本页内容整理自以下官方来源,点击可核对原文。
核验日期 ·
本页由 AI 依据上述官方来源整理,并经自动核对,未经本站实测。 发现错误?告诉我们。