For the complete documentation index, see llms.txt. This page is also available as Markdown.

连接时的静态上下文

配置角色在对话开始时接收一次的固定场景事实,与对话运行期间发送的更新分开。

每个 Convai 角色都有两个字段—— 初始动态信息文本 和 初始动态信息保留在上下文中 ——它会在对话连接的那一刻将一段固定的上下文块注入到会话请求中。该上下文会在第一条回复之前只发送给 Convai 一次,并且独立于运行时的动态上下文更新。

对于在对话开始前就已成立且在会话期间不会变化的事实,请使用此机制:设施名称、角色的职责、训练场景类型,或演练的初始条件。对运行时动态上下文(ConvaiDynamicContextRelay 或 IConvaiDynamicContext)则用于所有会随着会话推进而变化的内容。

检查器配置

这两个字段都位于 ConvaiCharacter 组件下的 动态信息(连接请求) 标题下。

Unity Inspector showing the Dynamic Info (Connection Request) section on ConvaiCharacter with Initial Dynamic Info Text and Initial Dynamic Info Keep In Context fields
ConvaiCharacter 上的动态信息字段——初始动态信息文本会在会话开始时发送一次;启用“保留在上下文中”后,这些事实将在整个会话期间跨所有 LLM 回合保留。
字段
类型
默认值
描述

初始动态信息文本

string

(空)

作为会话连接请求的一部分发送的自由文本块。没有格式限制——可直接写普通句子或键值行。

初始动态信息保留在上下文中

bool

false

当 true,Convai 会在整个会话期间的所有 LLM 回合中保留此文本。当 false时,该文本只会影响第一条回复。

配置示例

对于消防抑制认证演练,请将 初始动态信息文本 设置为:

启用 初始动态信息保留在上下文中.

角色将在整个对话过程中引用这些事实。你无需通过运行时动态上下文重新发送它们——它们会在整个会话期间保持有效。

与运行时动态上下文的关系

初始上下文与运行时动态上下文是互补的——而不是替代关系。

初始动态信息
运行时动态上下文

发送时间

一次,在 ConnectAsync

会话期间,按需发送

内容

在设计时设置的固定事实

运行时设置的实时状态和事件

适用于

设施名称、场景类型、角色职责

学员位置、设备状态、危险等级

可在运行时修改

否——每次连接只发送一次

是——通过 SetState, AddEvent, Reset

这两种机制会同时输入到角色的感知中。初始上下文提供稳定基础;运行时动态上下文则在其上叠加实时更新。

什么 Reset() 会清除和不会清除的内容

调用 Reset() 在运行时动态上下文层上会清除所有已跟踪的状态和事件。默认情况下,它会保留初始动态信息:

  • 初始动态信息文本 是在连接时发送的,不会被 Reset() 修改,除非调用方选择启用: Reset(removeStatic: true) 还会请求 Convai 移除当前会话的静态初始动态上下文。默认的 Reset() (等同于 Reset(removeStatic: false))不会触及它,而且在会话中途无法重新发送或替换它——只能将其清除。

  • 系统提示词事实 在 Convai 仪表板上的内容不属于动态上下文层。运行时没有任何 SDK 调用会影响它们。

  • 会话内 LLM 记忆 ——角色会在同一会话的多轮对话中保留上下文。 Reset() 会清除动态上下文跟踪器并向 Convai 发送 Reset 消息,但不会清除模型的会话内对话记忆。

要为新会话更改初始上下文,请结束当前对话,更新 初始动态信息文本 字段,然后重新连接。初始上下文每次只会发送一次 ConnectAsync 调用。

脚本访问

这两个字段都可通过 C# 属性读取,位于 ConvaiCharacter:

这些属性在运行时为只读。请在场景运行前在 Inspector 中设置这些值,或者通过 SerializedObject 在自定义 Editor 工具中设置。

下一步

中继组件参考动态上下文脚本 API同步行为与时序

最后更新于

这有帮助吗?