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

使用场景

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

初学者

个性化对话

最常见的用法:在任何对话开始前,告诉角色它正在和谁交流。

场景: 玩家创建了一个角色并进入世界。NPC 应该用名字称呼他们,并识别他们的职业。

using System.Collections;
using Convai.Runtime.Components;
using Convai.Runtime.Room;
using UnityEngine;

/// <summary>
/// 在会话开始时将玩家身份注入到活动的 Convai 会话中。
/// 角色在第一次交流之前会收到这些上下文,并且可以
/// 无需在控制台重新配置,就直接用玩家的名字和职业打招呼。
/// </summary>
public class PlayerGreeting : MonoBehaviour
{
    [SerializeField] private string _playerName = "Aria";
    [SerializeField] private string _playerClass = "游侠";

    private IConvaiRoomConnectionService _connectionService;

    private IEnumerator Start()
    {
        while (true)
        {
            ConvaiManager manager = ConvaiManager.ActiveManager;
            if (manager != null && manager.TryGetRoomConnectionService(out _connectionService))
                break;
            yield return null;
        }

        if (_connectionService.IsConnected)
            SendGreeting();
        else
            _connectionService.Connected += OnConnected;
    }

    private void OnConnected()
    {
        _connectionService.Connected -= OnConnected;
        SendGreeting();
    }

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

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

    private void OnDestroy()
    {
        if (_connectionService != null)
            _connectionService.Connected -= OnConnected;
    }
}

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


注入学习者档案

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


模块推进

随着受训者推进到新模块,将上下文替换为该模块的目标。角色会立即知道应该关注什么——无需重新配置。


语言导师熟练度等级

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

注入情绪状态

动态上下文不限于事实。普通语言指令同样可以用于即时塑造角色的语气和行为。

场景: 伙伴 NPC 的情绪应根据场景中的情况而变化——战斗前平静,战斗中紧张,战斗后释然。

runLlm: "false" 会静默更新角色的情绪倾向——新的语气会在下一次交流中自然显现,而不会触发不请自来的评论。


中级

响应式游戏状态

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

场景: 商人 NPC 应始终知道玩家当前的金币、最近发生的事件以及已完成的任务。

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


静默事件累积

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

场景: 一位战斗解说员会在整场战斗中跟踪击杀事件。角色在行动期间保持安静,但当玩家最终开口时,对刚刚发生的一切都了如指掌。

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


由表现驱动的辅导难度

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


分支式合规情景状态

一种合规培训模拟,其中每个受训者决策都会推进一个场景分支。AI 同事 NPC 始终完全了解做出了哪些决定、这些决定的后果,以及累积的合规评分。


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

一种临床培训模拟,患者 NPC 的生命体征会实时变化。角色会静默吸收常规波动,但当数值跨越具有临床意义的阈值时会升级响应——而不会提前泄露诊断结果给受训者。


高级

跨场景能力差距追踪器

一个多场景训练平台会追踪受训者在会话中所有场景里展示或遗漏了哪些能力。每个新场景都会基于已累计的能力画像进行调整,因此 AI 可以自然地探查薄弱环节,而受训者却不会察觉。

跨场景使用:


实时程序化评估

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

此模式所强制体现的内容:

  • 教官能够完整掌握每一个动作,而无需不断打断——角色始终在倾听

  • 苏格拉底式阈值可防止教官沦为提示机器——只有在真正检测到学习障碍时才会发声

  • 冷却时间可防止过于频繁的干预破坏独立思考

  • 最终总结会调用累计的事件日志,形成有依据、内容充实的评估,而不是泛泛的概述


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

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

场景: 一个同伴 NPC 会在整个会话中被动跟踪玩家的健康值,在中度下降时发出警告,并在关键等级时紧急介入——这一切都无需玩家输入。

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

最后更新于

这有帮助吗?