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

注意力与指代锚定

后端如何解析模糊的玩家指代——以及对象描述和当前注意力对象如何影响目标解析。

什么是指代落地?

当玩家说“去那里”或“把那个拿起来”时,Convai 后端需要弄清楚他们指的是哪个对象或角色。这个过程——将自然语言中的模糊指代与场景中的具体事物关联起来——被称为 指代落地.

SDK 通过在会话开始时发送两类上下文,帮助后端进行指代落地:

  1. 对象和角色描述 ——场景中每个事物

  2. 当前注意对象 ——AI 当前 聚焦于

上下文越丰富,AI 就越能更好地解析含糊的玩家请求。


对象和角色描述

你在……中注册的每个对象和角色 ConvaiActionConfigSource 都有一个会发送到后端的文本字段:

类型
字段
用途

对象(ConvaiActionObjectDefinition)

描述

描述该对象是什么,以及它在场景中的位置

角色(ConvaiActionCharacterDefinition)

简介

描述该角色是谁以及其职责

这些字段会在会话开始时包含在发送到 Convai 后端的会话配置中。后端会读取它们,以了解场景中的每个名称指代什么,并用它们来解析玩家讲话中的指代。

为什么描述很重要

比较同一个物理对象的这两个对象定义:

名称
描述
落地质量

灭火器

(空)

后端只知道名称

灭火器

一个红色灭火器,安装在紧急出口左侧的墙上。

后端知道它是什么、它在哪里,并且可以根据上下文解析“红色那个”“靠近出口的那个”或“它”

将描述写成一句自然的句子,从场景上下文中描述对象。包含类型、颜色、位置或用途——任何有助于将该对象与其他对象区分开的细节。

编写有效描述

位置要具体:

一个黄色安全帽,挂在入口附近的设备架上。 安装在北侧墙上、紧挨着出口标志的火警控制面板。

在相关时包含对象用途:

一个用于扑灭 A 类和 B 类火灾的便携式灭火器。 切断整层电力的总电源关闭开关。

对角色,描述职责和位置:

站在培训室前方的资深安全讲师。 负责监督仓库运营的现场主管。

避免含糊的描述:

避免
改用

场景中的一个对象。

一个木箱,堆放在装卸区门附近。

一个人。

站在主办公室入口旁的仓库经理。

设备。

一个急救箱,安装在消防出口旁边的墙上。


当前注意对象

注意对象 告诉后端 AI 当前聚焦的是哪个对象。当玩家使用代词或模糊指代(“去那里”“把它捡起来”)时,后端会使用当前注意对象来解析“它”的含义。

设置初始注意对象

ConvaiActionConfigSource,该 初始注意对象 字段会在会话开始时初始化注意力。将其设置为 名称 你已注册对象中的一个的

在会话开始时,后端接收 current_attention_object: "灭火器" 在配置中。如果玩家在未提及任何具体内容前说“告诉我它的情况”,后端就知道“它”指的是灭火器。

初始注意对象 必须与 名称 你已注册的某个 可操作对象 的字段完全匹配(不区分大小写)。如果不匹配,该字段将被忽略,并且会在控制台记录一条警告。

对话中的注意力

随着对话推进,后端会根据上下文动态更新其内部注意力——包括玩家和角色提到的对象、执行的动作等。后端会在大多数情况下自动处理。

运行时更新注意对象

对于需要显式控制的场景——例如玩家在 UI 中点击某个对象,或 NPC 移动到新的工作站—— ConvaiCharacter 提供在活动会话期间更新注意对象的方法:

方法
描述

SetCurrentAttentionObject(string name)

按对象名称设置注意对象(必须存在于会话的 Objects 列表中)

SetCurrentAttentionObject(ConvaiActionObjectDefinition obj)

使用类型化定义设置注意对象

ClearCurrentAttentionObject()

移除当前注意落地


实际示例:消防安全培训模拟

消防安全培训室注册了以下对象:

名称
描述

灭火器

一个红色便携式二氧化碳灭火器,安装在主工作台左侧的墙上。

报警面板

安装在墙上的火警控制面板,带有一个大的红色把手,位于主门附近。

紧急出口

房间尽头带有绿色发光标志的紧急出口门。

急救箱

一个白色急救箱盒,安装在工作台和储物柜之间的墙上。

初始注意对象: 灭火器

在此设置下:

玩家: “我应该先去哪里?” AI: “先去灭火器那里。” → 后端将其落地到 灭火器

玩家: “现在呢?” AI: “拔掉保险销,并将其对准火焰底部。” → 注意对象仍然是 灭火器

玩家: “那个面板呢?” AI: “那是报警面板——你应该在使用灭火器之前触发它。” → 后端将“那个面板”落地到 报警面板 根据描述上下文


提示

独特的名称有助于提高落地效果。 如果两个对象的名称相似(例如, 红色灭火器蓝色灭火器),请让描述明显不同,以帮助后端区分它们。

名称在运行时按不区分大小写匹配,但它们会按原样作为文本发送到后端。请使用一致、自然的名称(推荐使用首字母大写格式: 灭火器,而不是 fire_extinguisher).


结论

指代落地使玩家能够自然地说话——使用代词、部分名称和依赖上下文的指代——而不是精确的对象名称。对象描述的质量和初始注意对象的准确性会直接影响 AI 解释玩家意图的可靠程度。把描述看作给 AI 的元数据:具体、具上下文,并用通俗语言编写。

最后更新于

这有帮助吗?