上下文管理可赋予智能体短期记忆能力,使其在单次会话中能够回溯并参考最近 N 轮历史对话记录,从而做出更精准、连贯的回复。您可以通过以下两种方式管理上下文:
说明
短期记忆会在会话结束后清空。如需实现跨越会话的长期记忆,可接入火山记忆库。具体实现方法,请参见接入记忆库(长期记忆)。
在发起对话时,通过 StartVoiceChat 接口为 LLM 设定初始的上下文信息,该上下文作用于整个任务。不同的大模型平台,其上下文管理机制有差异。
使用火山方舟平台时,模型对话上下文生成逻辑由系统提示词(SystemMessages)、用户提示词(UserPrompts)和历史问题轮数(HistoryLength)共同控制。
参数名 | 类型 | 说明 |
|---|---|---|
| String[] | 系统提示词。定义模型的角色、行为准则及输出格式等核心指令。 |
| Object[] | 用户提示词。可用于增强模型的回复质量,模型回复时会优先参考此处内容,引导模型生成特定的输出或执行特定的任务。需包含 |
| Integer | 模型存储历史问题轮数。 |
| String[] | 旧版本参数,不推荐使用,仅为兼容保留。 |
UserMessages 说明UserMessages 是一个为保证向后兼容性而保留的旧版参数,不推荐使用,与 UserPrompts 的差异如下:
维度 | UserPrompts (推荐) | UserMessages (不推荐) |
|---|---|---|
数据类型 | 对象数组 Object[] | 字符串数组 String[] |
字段要求 | 必须包含 Role 和 Content 字段,且 user 和 assistant 角色需成对交替出现。 | 无严格字段要求,直接存储对话文本。 |
存储机制 | 自动逐出:当对话历史超过 HistoryLength 限制时,最早的 UserPrompts 会被逐出,为新的对话历史腾出空间。 | 会话内固定:在当前会话中, |
上下文总长度(以 Tokens 计算)不得超过所选大模型的上限(如 8k)。计算方式取决于您使用的参数组合。
计算逻辑:UserPrompts 支持自动逐出,计算总长度时只包含当前对话中仍然生效的 UserPrompts。
计算公式:
总 Token 数 = SystemMessages + 当前生效的 UserPrompts + HistoryLength 轮对话
示例:若 HistoryLength 为 3,模型上限 8k。当一轮旧的 UserPrompts 因对话轮数增加被逐出后,计算总长度时就不再包含它,从而为新的对话历史腾出空间。
计算逻辑:UserMessages 会被永久保留,计算总长度时需包含全部内容。
计算公式:
总 Token 数 = SystemMessages + 全部 UserMessages + HistoryLength 轮对话
示例:若 HistoryLength 为 3,模型上限 8k。由于 UserMessages 会永久存储,即使对话轮数增加,之前传入的 UserMessages 内容仍会一直占用上下文空间,因此需注意控制传入内容的长度以避免超出模型上限。
使用Coze平台时,上下文管理有两种模式,通过 StartVoiceChat 中的字段 LLMConfig.EnableConversation 控制:
模式 | 上下文生成逻辑 |
|---|---|
RTC管理上下文 | 即 |
Coze平台管理上下文 | 即 |
Coze 编排功能、插件等搭建能力详细介绍参看 Coze 开发智能体功能概述。
需要确保编排页人设与回复逻辑、插件、知识库与会话内容文本总长度不超过大模型上下文长度。历史问题轮数在 RTC 管理上下文时通过 HistoryLength 参数控制,在 Coze 平台管理上下文时通过模型设置页面操作。
传入自定义文本信息给 LLM,作下一轮回答的上下文参考,但不会立即触发回复。适用于需要结合实时变化或用户无法通过语音表达的隐式信息的场景。
场景 | 描述 | 示例 |
|---|---|---|
游戏陪玩 | 结合用户实时游戏数据生成合适的回答,为用户提供更贴心的陪伴。 |
|
健康咨询 | 结合用户实时生理数据生成个性化建议,提升健康指导的精准度。 |
|
动态传入上下文在启用端到端实时语音大模型(S2SConfig)时无效。详细说明,请参见接入端到端实时语音大模型。
调用 UpdateVoiceChat 接口传入上下文,可参考以下示例:
完整参数及说明,参见对应的接口文档:UpdateVoiceChat(2025-06-01)、UpdateVoiceChat(2024-12-01)。
{ "AppId": "YOUR_AppId", // 与 StartVoiceChat 的一致 "RoomId": "YOUR_RoomId", // 与 StartVoiceChat 的一致 "TaskId": "YOUR_TaskId", // 与 StartVoiceChat 的一致 "Command": "ExternalPromptsForLLM", // 必须为该值 "Message": "当前用户战绩 0-14,金币落后" // 填入要传入的背景信息文本 }