在对话式 AI 场景下,大模型上下文管理十分重要,它可以让大模型根据聊天历史进行更精准的内容回答。本文将介绍火山引擎支持平台的大模型上下文管理机制,涵盖核心参数说明、关键功能对比及长度限制规则,并补充自定义上下文的动态扩展方法。
不同大模型平台下,上下文管理机制和使用的参数不同。你可参看下文了解火山方舟平台、Coze 平台和符合平台要求的第三方大模型的上下文管理机制。
使用火山方舟平台时,模型对话上下文生成逻辑由系统提示词(SystemMessages)、用户提示词(UserPrompts 和 UserMessages)和历史问题轮数(HistoryLength)共同控制。具体说明如下:
参数名 | 类型 | 说明 |
---|---|---|
SystemMessages | String[] | 系统提示词。定义模型的角色、行为准则及输出格式等核心指令。 |
UserPrompts | Object[] | 用户提示词。可用于增强模型的回复质量,模型回复时会优先参考此处内容,引导模型生成特定的输出或执行特定的任务。需包含 Role (仅支持 user /assistant )和 Content 字段,且必须成对出现。推荐使用该参数控制用户提示词,具有存储提示词自动逐出机制,且表现更稳定。关于 UserPrompts 和 UserMessages 差异,参看UserPrompts 与 UserMessages 对比说明。 |
UserMessages | String[] | 用户提示词。可用于增强模型的回复质量,模型回复时会优先参考此处内容,引导模型生成特定的输出或执行特定的任务。该参数为非推荐隐藏参数。 |
HistoryLength | Integer | 模型存储历史问题轮数。 |
两者均为用户提示词,用于增强模型的回复质量。模型回复时会优先参考此处内容,引导生成特定输出或执行特定任务。
维度 | UserPrompts | UserMessages |
---|---|---|
数据类型 | Object[](对象数组)。 | String[](字符串数组)。 |
字段要求 | 需包含 Role (仅支持 user /assistant )和 Content 字段,且必须成对出现(user 与 assistant 交替)。 | 无严格字段要求,直接存储对话文本。 |
存储机制 | 具有内容自动逐出机制: 若 UserPrompts 预先存储了 2 轮对话,HistoryLength 设置为 3,在智能体任务启动后,UserPrompts 中的对话会存储到上下文中,当用户进行第二轮会话时,原 UserPrompts 中的第一轮对话内容会被清空。 | 内容永久存储在上下文中,不会被自动逐出。 |
"UserPrompts": [ { "Role": "user", "Content": "你好" }, { "Role": "assistant", "Content": "有什么可以帮到你?" } ]
"UserMessages": [ "今天北京今天晴,气温18-28 摄氏度,适合户外活动。", "明天北京有小雨,气温16-25 摄氏度,建议带伞。" ]
在使用不同的参数控制大模型上下文时,上下文长度限制机制不同,具体如下:
当使用 SystemMessages
、UserPrompts
和 HistoryLength
组合时:
在调用该接口时,需要确保 UserPrompts
、SystemMessage
与会话内容文本总长度不超过大模型上下文长度。
例如:历史问题轮数为 3,使用 Doubao-lite-8k 大模型,大模型上下文长度限制为 8k,UserPrompts
预先存储了两轮对话,在智能体任务启动后,UserPrompts
中的对话会存储到上下文中,当用户进行第二轮对话时,原 UserPrompts
中的第一轮对话内容会被逐出,需保证 SystemMessage
+ UserPrompts
中存储的第二轮会话内容 + 第一、二轮会话问题总长度不得超过 8k。
当使用 SystemMessages
、UserMessages
和 HistoryLength
组合时:
在调用该接口时,需要确保所有 UserMessage
和 SystemMessage
与会话内容文本总长度不超过大模型上下文长度。
例如:历史问题轮数为 3,使用 Doubao-lite-8k 大模型,预设 SystemMessages
和 UserMessages
各两条,询问第 10 个问题时,需保证预设的两条 SystemMessages
、预设的两条 UserMessages
与第八、九、十轮会话的总长度之和不得超过 8k。
使用 Coze 平台时,你可选择 RTC 管理上下文或 Coze 平台管理上下文,具体由LLMConfig.EnableConversation 控制。不同情况下上下文管理机制不同:
RTC 管理上下文时,模型对话上下文生成逻辑由历史问题轮数(HistoryLength)和 Coze 平台编排页人设与回复逻辑、插件、知识库共同控制。
除 HistoryLength
参数外,其他参数均在 Coze 平台 bot 页面配置。Coze 编排功能、插件等搭建能力详细介绍参看 Coze 开发智能体功能概述。
Coze 平台管理上下文时,模型对话上下文生成逻辑完全由 Coze 平台编排页人设与回复逻辑、插件、知识库共同控制。
Coze 编排功能、插件等搭建能力详细介绍参看 Coze 开发智能体功能概述。
在调用该接口时,需要确保编排页人设与回复逻辑、插件、知识库与会话内容文本总长度不超过大模型上下文长度。历史问题轮数在 RTC 管理上下文时通过HistoryLength
参数控制,在 Coze 平台管理上下文时通过模型设置页面操作。
使用第三方大模型时,模型对话上下文生成逻辑由系统提示词(SystemMessages)、用户提示词(UserPrompts 和 UserMessages)和历史问题轮数(HistoryLength)共同控制。具体说明如下:
参数名 | 类型 | 说明 |
---|---|---|
SystemMessages | String[] | 系统提示词。定义模型的角色、行为准则及输出格式等核心指令。 |
UserPrompts | Object[] | 用户提示词。可用于增强模型的回复质量,模型回复时会优先参考此处内容,引导模型生成特定的输出或执行特定的任务。需包含 Role (仅支持 user /assistant )和 Content 字段,且必须成对出现。推荐使用该参数控制用户提示词,具有存储提示词自动逐出机制,且表现更稳定。关于 UserPrompts 和 UserMessages 差异,参看UserPrompts 与 UserMessages 对比说明。 |
UserMessages | String[] | 用户提示词。可用于增强模型的回复质量,模型回复时会优先参考此处内容,引导模型生成特定的输出或执行特定的任务。该参数为非推荐隐藏参数。 |
HistoryLength | Integer | 模型存储历史问题轮数。 |
两者均为用户提示词,用于增强模型的回复质量。模型回复时会优先参考此处内容,引导生成特定输出或执行特定任务。
维度 | UserPrompts | UserMessages |
---|---|---|
数据类型 | Object[](对象数组)。 | String[](字符串数组)。 |
字段要求 | 需包含 Role (仅支持 user /assistant )和 Content 字段,且必须成对出现(user 与 assistant 交替)。 | 无严格字段要求,直接存储对话文本。 |
存储机制 | 具有内容自动逐出机制: 若 UserPrompts 预先存储了 2 轮对话,HistoryLength 设置为 3,在智能体任务启动后,UserPrompts 中的对话会存储到上下文中,当用户进行第二轮会话时,原 UserPrompts 中的第一轮对话内容会被清空。 | 内容永久存储在上下文中,不会被自动逐出。 |
"UserPrompts": [ { "Role": "user", "Content": "你好" }, { "Role": "assistant", "Content": "有什么可以帮到你?" } ]
"UserMessages": [ "今天北京今天晴,气温18-28 摄氏度,适合户外活动。", "明天北京有小雨,气温16-25 摄氏度,建议带伞。" ]
在使用不同的参数控制大模型上下文时,上下文长度限制机制不同,具体如下:
当使用 SystemMessages
、UserPrompts
和 HistoryLength
组合时:
在调用该接口时,需要确保 UserPrompts
、SystemMessage
与会话内容文本总长度不超过大模型上下文长度。
例如:历史问题轮数为 3,Doubao-lite-8k,大模型上下文长度限制为 8k,UserPrompts
预先存储了两轮对话,在智能体任务启动后,UserPrompts
中的对话会存储到上下文中,当用户进行第二轮对话时,原 UserPrompts
中的第一轮对话内容会被逐出,需保证 SystemMessage
+ UserPrompts
中存储的第二轮会话内容 + 第一、二轮会话问题总长度不得超过8k。
当使用 SystemMessages
、UserMessages
和 HistoryLength
组合时:
在调用该接口时,需要确保所有 UserMessage
和 SystemMessage
与会话内容文本总长度不超过大模型上下文长度。
例如:历史问题轮数为 3,Doubao-lite-8k,预设 SystemMessages
和 UserMessages
各两条,询问第 10 个问题时,需保证预设的两条 SystemMessages
、预设的两条 UserMessages
与第八、九、十轮对话的总长度之和不得超过 8k。
除用户与智能体语音互动的内容作为上下文外,你还可以通过 UpdateVoiceChat 接口动态传入自定义上下文信息,以帮助大模型更准确地理解用户状态,从而提升对话的自然度。自定义上下文信息可以包括用户的实时生理数据、游戏数据、角色设定等。这些信息将根据你设定的优先级决定替代用户输入或增加新一轮对话,自定义上下文信息作为 UserMessage
传入大模型,并在当前对话轮次中生效。具体使用说明参看自定义大模型上下文。