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

使用场景

探索 Dynamic Context 的实际用例,并了解它如何提升对话中的角色响应性、相关性和上下文感知能力。

初级

个性化对话

最常见的用法:在任何对话开始之前告诉角色它在与谁交谈。

场景: 玩家创建角色并进入世界。NPC 应该按名字问候他们并识别其职业。

using System.Collections;
using System.Linq;
using Convai.Scripts;
using UnityEngine;

/// <summary>
/// 在会话开始时将玩家身份注入当前 Convai 会话。
/// 角色会在第一次交流前接收此上下文,并且可以
/// 无需在控制台中重新配置即可按名字和职业问候玩家。
/// </summary>
public class PlayerGreeting : MonoBehaviour
{
    [SerializeField] private string _playerName = "Aria";
    [SerializeField] private string _playerClass = "Ranger";

    private ConvaiRoomManager _roomManager;

    private IEnumerator Start()
    {
        while (ConvaiRoomManager.Instance == null)
            yield return null;

        _roomManager = ConvaiRoomManager.Instance;

        while (!_roomManager.IsConnectedToRoom)
            yield return null;

        // runLlm: "true" 会立即触发角色回复。
        // 在发送前必须准备好完整音频管线——等待
        // 仅 IsConnectedToRoom 不足够。机器人参与者加入,
        // 发布其音轨,并且 AudioStream 会在房间连接后
        // 异步初始化。在这三个阶段都完成之前发送
        // 会导致 TTS 回复被静默丢弃。
        while (_roomManager.NpcToParticipantMap == null ||
               !_roomManager.NpcToParticipantMap.Values.Any(d => d.AudioStream != null))
        {
            yield return null;
        }

        SendGreeting();
    }

    private void SendGreeting()
    {
        string context =
            $"你正在与 {_playerName} 交谈,他是一级 {_playerClass}。 " +
            "热情地问候他们,并欢迎他们来到这个世界。";

        // 替换——确保不会沿用上一次会话中的旧上下文。
        // runLlm: true——立即触发问候回复。
        bool sent = _roomManager.UpdateDynamicContext(context, mode: "replace", runLlm: "true");
        if (!sent)
            Debug.LogWarning("[PlayerGreeting] UpdateDynamicContext 返回 false。");
    }
}

替换 确保不会沿用上一次会话中的旧上下文。 runLlm: "true" 会立即触发问候回复。


注入学习者资料

在会话开始时,推送学习者的姓名、角色和当前课程。会话中的每个角色都会立即个性化,无需任何控制台重新配置。


模块进阶

随着受训者进入新模块,将上下文替换为该模块的目标。角色会立即知道重点所在——无需重新配置。


语言导师熟练度等级

语言学习导师会根据学习者当前的熟练度水平调整词汇、句子复杂度和纠错风格。在会话开始时调用一次——或者在等级发生变化时调用。

注入情绪状态

动态上下文不限于事实。纯自然语言指令同样可以很好地用于即时塑造角色的语气和行为。

场景:一个同伴 NPC 的情绪应根据场景中发生的事情而变化——战斗前平静,战斗中紧张,战斗后松一口气。

runLlm: "false" 会静默更新角色的性格——新语气会在下一次交流中自然体现,而不会触发未经请求的回应。


中级

响应式游戏状态

随着玩家推进,世界也会改变。动态上下文让这些变化能实时传达给角色。

场景:一家商店老板 NPC 应始终知道玩家当前的金币、近期事件以及已完成的任务。

被动状态(金钱、世界新闻)使用 runLlm: "false" ——它会影响未来回复,但不会引发不请自来的评论。任务完成时使用 runLlm: "true" 因为预期会有反应。


静默事件积累

在高频事件场景中——快速掉落战利品、连杀、奖励触发——对每个事件都做出反应会产生噪音。正确的模式是静默积累,只在发生有意义的事情时,或用户主动发起对话时再回应。

场景:一名战斗解说员在整场战斗中追踪击杀事件。角色在行动期间保持沉默,但当玩家最终开口时,它对发生的一切都有完整认知。

这让角色的介入更有意义。它对事件流有完整认知,但只在特定时刻发言,而不是对每个触发都做出反应。


基于表现的辅导难度

一个销售培训模拟器会追踪受训者的实时表现分数。当分数变化足以跨过难度档位时,角色的辅导策略会在会话中即时更新——无需重启。


分支式合规场景状态

一个合规培训模拟,每个受训者的决策都会推动场景分支前进。AI 同事 NPC 始终完全了解做出了哪些决策、它们的后果,以及累计的合规分数。


医疗模拟患者生命体征监测器

一个临床培训模拟,其中患者 NPC 的生命体征会实时变化。角色会静默吸收常规波动,但在数值跨过具有临床意义的阈值时升级处理——不会向受训者泄露诊断结果。


高级

跨场景能力缺口追踪器

一个多场景训练平台会跟踪学习者在会话中的所有场景里展现了哪些能力、遗漏了哪些能力。每个新场景都会受到累计能力画像的影响,因此 AI 可以自然地探查薄弱环节,而学习者并不会意识到这一点。

跨场景使用:


实时程序化评估

一个高保真程序训练器(飞行模拟器、外科训练器、工业安全)会根据一份定义好的检查清单监控每一个动作。动作会被悄然累积。当同一步骤反复失败时,AI 教员会以苏格拉底式问题介入——绝不直接给出答案,而是引导受训者思考。

这种模式所强化的内容:

  • 教员能完整掌握每个动作,却不会不断打断——角色始终在听

  • 苏格拉底阈值防止教员变成提示机器——只有在真正检测到学习障碍时才发言

  • 冷却机制可防止过于频繁的介入,从而破坏独立思考

  • 最终总结会利用累计事件日志进行实质性、基于证据的评估,而不是泛泛而谈的概述


具有自主响应阈值的响应式角色

最复杂的模式:角色会监控连续的游戏状态更新,并自主决定何时发声——无需等待用户先发起。这是一种响应式架构。角色始终在监听,但只有当某些内容跨过有意义的阈值时才会显现。

场景:一个同伴 NPC 在整个会话中被动跟踪玩家生命值,在中度下降时提醒,并在达到危急水平时紧急介入——整个过程都不需要玩家输入任何内容。

通过静默更新 runLlm: "false" 始终让角色的知识保持最新。 runLlm: "true" 仅保留给真正需要主动响应的时刻。阈值逻辑确保角色只介入一次——而不是反复介入——直到情况得到解决。

最后更新于

这有帮助吗?