情绪
启用情绪检测,以在对话期间接收角色的情绪状态。启用情绪检测,以在每次回复时一并接收角色的情绪状态。
连接时启用
const client = useConvaiClient({
apiKey: '...',
characterId: '...',
enableEmotion: true,
});当 enableEmotion 为 true,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.
最后更新于
这有帮助吗?