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

情绪

启用情绪检测,以在对话中接收角色的情绪状态。启用情绪检测,以在每次回复时一并接收角色的情绪状态。

连接时启用

const client = useConvaiClient({
  apiKey: '...',
  characterId: '...',
  enableEmotion: true,
});

enableEmotiontrue,SDK 会发送 emotion_config 到服务器。如果没有它,就不会发送任何 bot-emotion 帧,并且 emotionChange 从不触发。


订阅 emotionChange

client.on('emotionChange', (emotion) => {
  if (emotion === null) {
    // 对话重置 — 清除任何情绪 UI
    return;
  }
  console.log(emotion.emotion); // 例如:“Trust”、“Grief”、“Joy”
  console.log(emotion.scale);   // 整数强度:1(低)→ 3(高)
});

事件触发时:

  • 每次角色轮次后触发,带有检测到的情绪和强度

  • null 当对话被重置时(例如 resetSession())


React

client.on(...) 返回一个取消订阅函数 — 将其从 useEffect 中返回会自动清理。

通过 state.emotion

情绪也可在响应式状态对象上同步获取——如果你已经从 state 渲染,则无需额外订阅:


原生 JS


微调检测

通过以下方式控制情绪检测的激进程度: emotionConfig:

支持两种提供方: "llm" 使用语言模型从回复文本中推断情绪; "nrclex" 使用 NRC 情绪词典,这是一种按词级别查找的词典,速度更快但上下文感知较弱。

"llm" 配置

字段
类型
说明

提供方

"llm"

使用 LLM 从回复上下文推断情绪

"nrclex" 配置

字段
类型
默认值
说明

提供方

"nrclex"

词级别的 NRC 情绪词典查找

min_word_threshold

数字

3

跳过少于此词数的轮次的检测

low_intensity_threshold

数字

0.33

级别 1 和级别 2 之间的分数边界

high_intensity_threshold

数字

0.66

级别 2 和级别 3 之间的分数边界


API 参考

enableEmotion (连接选项)

字段
类型
默认值
说明

enableEmotion

布尔值

false

启用情绪检测。必须 true 用于 emotionChange 才会触发。

emotionChange 事件

字段
类型
说明

emotion

string

情绪标签(例如 "Trust", "Grief", "Joy")

scale

数字

强度: 1 = 低, 2 = 中, 3 = 高

触发 null 在对话重置时。

state.emotion

与最后一个 emotionChange 有效载荷相同。可在 React 钩子中通过以下方式实现响应式: stateChange.

最后更新于

这有帮助吗?