关于 conversation-evaluator
该技能评估 Virtual Agent 对话的连贯性、准确性、槽位填写和意图匹配,并检查是否存在无依据的信息。适用于审查对话质量、调查用户反馈及跟踪改进趋势。
主要功能
- 01评估对话连贯性和上下文保持
- 02核对回复准确性与数据依据
- 03检查槽位填写和输入验证
- 04评分意图匹配与主题选择
- 05识别虚构内容并生成质量评分卡
适用场景
- 01定期审计 Virtual Agent 对话
- 02调查用户对机器人交互的投诉
- 03比较不同主题的质量表现
- 04追踪对话质量变化趋势
MCP 相关
使用 ServiceNow MCP 工具检索对话、消息、主题和动作定义,核对回复依据,并可标记问题或记录评估结果。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill conversation-evaluator安装后在 Claude Code 中输入/conversation-evaluator确认已加载。
详细介绍
对话评估器
概述
此技能会从多个质量维度评估虚拟 Agent 对话,确保交互准确、连贯且有帮助。它会识别对话式 AI 的表现问题,并提供可执行的改进建议。
- 评估对话连贯性:逻辑流畅度、上下文保留和主题连贯性
- 验证准确性:回复是否符合事实,并与知识库内容一致
- 评估槽位填充:捕获的用户输入是否完整、准确
- 评估意图匹配:虚拟 Agent 是否选择了正确的主题和操作
- 检测幻觉:识别未以 ServiceNow 数据为依据的虚构信息
- 生成质量评分卡,提供各维度评分和总分
适用场景: 审核虚拟 Agent 的表现、调查用户对机器人交互的投诉,或定期评估对话式 AI 部署的质量。
前提条件
- 角色:
admin、va_admin或conversation_designer - 插件:
com.glide.cs.chatbot(Virtual Agent)、com.glide.cs.designer(Conversation Designer) - 访问权限: 对
sys_cs_topic、sys_cs_conversation、sys_cb_topic、sys_cb_action、sys_cs_message具有读取权限 - 知识: 了解 Virtual Agent 主题设计和预期对话流程
- 数据: 已启用的虚拟 Agent 部署及对话历史记录
操作步骤
步骤 1:检索待评估的对话
查询近期虚拟 Agent 对话,可按主题或结果筛选。
使用 MCP(Claude Code/Desktop):
Tool: SN-Query-Table
Parameters:
table_name: sys_cs_conversation
query: state=closed^sys_created_onONLast 7 days@javascript:gs.daysAgoStart(7)@javascript:gs.daysAgoEnd(0)
fields: sys_id,number,topic,state,channel,opened_at,closed_at,close_reason,user,queue_time,handle_time
limit: 50
使用 REST API:
GET /api/now/table/sys_cs_conversation?sysparm_query=state=closed^sys_created_onONLast 7 days@javascript:gs.daysAgoStart(7)@javascript:gs.daysAgoEnd(0)&sysparm_fields=sys_id,number,topic,state,channel,opened_at,closed_at,close_reason,user,queue_time,handle_time&sysparm_limit=50
步骤 2:提取对话消息
检索每段待评估对话的完整消息历史记录。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_cs_message
query: conversation=[conversation_sys_id]^ORDERBYsys_created_on
fields: sys_id,conversation,body,type,sender_type,sys_created_on,is_hidden
limit: 100
使用 REST API:
GET /api/now/table/sys_cs_message?sysparm_query=conversation=[conversation_sys_id]^ORDERBYsys_created_on&sysparm_fields=sys_id,conversation,body,type,sender_type,sys_created_on,is_hidden&sysparm_limit=100
步骤 3:检索主题和操作定义
获取设计好的主题流程,以便与实际对话行为进行比较。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_cb_topic
query: sys_id=[topic_sys_id]
fields: sys_id,name,description,goal,utterances,active
limit: 1
使用 REST API:
GET /api/now/table/sys_cb_topic?sysparm_query=sys_id=[topic_sys_id]&sysparm_fields=sys_id,name,description,goal,utterances,active&sysparm_limit=1
检索此主题的预期操作:
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_cb_action
query: topic=[topic_sys_id]^ORDERBYorder
fields: sys_id,name,type,topic,order,script,table,field,mandatory
limit: 50
使用 REST API:
GET /api/now/table/sys_cb_action?sysparm_query=topic=[topic_sys_id]^ORDERBYorder&sysparm_fields=sys_id,name,type,topic,order,script,table,field,mandatory&sysparm_limit=50
步骤 4:评估连贯性(评分 0-10)
评估对话的逻辑流畅度和上下文管理:
| 标准 | 分值 | 说明 |
|---|---|---|
| 逻辑流畅度 | 0-3 | 回复按逻辑顺序展开,不出现不连贯的内容 |
| 上下文保留 | 0-2 | 机器人在整个对话过程中记得用户先前提供的信息 |
| 主题连贯性 | 0-2 | 对话始终围绕主题展开,不出现无法解释的跳转 |
| 问候/结束语 | 0-1 | 开场和结束消息恰当 |
| 从困惑中恢复 | 0-2 | 机器人能妥善处理误解 |
危险信号:
- 用户已经回答后,机器人仍重复询问同一问题
- 机器人提及用户从未提供过的信息
- 对话未经转折便跳转到无关主题
- 机器人未回应用户的纠正
步骤 5:评估准确性(评分 0-10)
根据 ServiceNow 数据源核实回复:
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_cs_context_entry
query: conversation=[conversation_sys_id]
fields: sys_id,name,value,source,conversation
limit: 50
| 标准 | 分值 | 说明 |
|---|---|---|
| 事实准确性 | 0-3 | 回复与 ServiceNow 记录和知识库文章一致 |
| 数据时效性 | 0-2 | 信息是最新的,而非过时信息 |
| 来源归属 | 0-2 | 机器人引用了正确的记录/文章 |
| 无矛盾 | 0-2 | 机器人在对话中不自相矛盾 |
| 恰当表达不确定性 | 0-1 | 数据有歧义时,机器人会表达不确定性 |
步骤 6:评估槽位填充(得分 0-10)
检查是否正确捕获了用户所需的输入:
| 标准 | 分值 | 说明 |
|---|---|---|
| 已捕获必填槽位 | 0-3 | 已从用户处收集所有必填字段 |
| 槽位验证 | 0-2 | 已验证输入(例如,电子邮件格式、日期范围) |
| 槽位确认 | 0-2 | 机器人向用户复述并确认关键输入 |
| 友好地重新提示 | 0-2 | 机器人能清楚地引导用户修正无效输入 |
| 槽位沿用 | 0-1 | 重用先前提供的信息,而不是再次询问 |
将已捕获的槽位与 sys_cb_action 中 mandatory=true 的定义交叉核对。
步骤 7:评估意图匹配(得分 0-10)
判断虚拟 Agent 是否为用户的请求选择了正确的主题:
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_cs_topic
query: active=true
fields: sys_id,name,description,utterances
limit: 100
| 标准 | 分值 | 说明 |
|---|---|---|
| 选择了正确主题 | 0-4 | 初始意图分类与用户请求相符 |
| 消歧质量 | 0-2 | 存在歧义时,机器人会提供相关主题选项 |
| 主题切换 | 0-2 | 能恰当地处理对话中途的主题变更 |
| 回退行为 | 0-2 | 没有匹配主题时能平稳降级 |
步骤 8:检测幻觉
识别未以 ServiceNow 数据为依据的编造内容:
幻觉类别:
| 类型 | 说明 | 严重程度 |
|---|---|---|
| 编造记录 | 机器人引用了不存在的事件编号或 KB 编号 | 严重 |
| 虚构流程 | 机器人描述了任何 KB 文章或操作手册中都没有的步骤 | 高 |
| 错误状态 | 机器人给出了错误的工单状态或分配信息 | 高 |
| 捏造的政策 | 机器人引用了不存在的政策 | 中 |
| 错误归因 | 机器人将信息归因于错误的来源 | 中 |
对于每条包含具体主张的机器人回复,都要对照源表进行验证:
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: kb_knowledge
query: number=[cited_kb_number]
fields: sys_id,number,short_description,workflow_state
limit: 1
步骤 9:生成质量评分卡
将评估结果汇总为结构化的评分卡:
=== VIRTUAL AGENT CONVERSATION QUALITY SCORECARD ===
Conversation: CS0045678
Topic: Password Reset
Date: 2026-03-19
Evaluator: AI Quality Evaluator v1.0
Dimension Scores:
Coherence: 8/10 - Minor context loss at turn 5
Accuracy: 9/10 - All references verified correct
Slot Filling: 7/10 - Did not confirm email address
Intent Match: 10/10 - Correct topic on first utterance
Hallucination: 10/10 - No fabricated content detected
Aggregate Score: 44/50 (88%) - GOOD
Issues Found:
1. [MEDIUM] Turn 5: Bot asked for department after user already provided it
2. [LOW] Turn 8: Bot did not confirm email address before sending reset link
Recommendations:
1. Add context check for department slot before re-prompting
2. Add confirmation step for email address in password reset topic
步骤 10:跟踪质量趋势
汇总多个对话的分数,以识别系统性问题:
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_cs_conversation
query: state=closed^close_reason=escalated^sys_created_onONLast 30 days@javascript:gs.daysAgoStart(30)@javascript:gs.daysAgoEnd(0)
fields: sys_id,topic,close_reason,handle_time
limit: 200
关键质量指标:
- 各主题平均分:识别表现最差的对话流程
- 升级率:升级给人工 Agent 的对话占比
- 幻觉频率:编造内容出现的频率
- 槽位完成率:成功捕获的必填槽位占比
工具使用
| 工具 | 用途 | 使用时机 |
|---|---|---|
SN-Query-Table | 检索对话、消息、主题和操作 | 收集核心评估数据 |
SN-Natural-Language-Search | 按自然语言条件查找对话 | 定向调查 |
SN-Update-Record | 标记存在质量问题的对话 | 标记以供审核 |
SN-Add-Work-Notes | 记录评估结果 | 留存审计记录 |
SN-Get-Table-Schema | 探索与对话相关的表结构 | 设置和发现 |
最佳实践
- 有策略地抽样——评估所有主题,而不只是高流量主题
- 纳入已升级的对话——升级能揭示最显著的质量差距
- 分批评估——每个评估周期评估 20-50 个对话,以确保统计有效性
- 区分评估维度——高连贯性分数不能弥补幻觉问题
- 持续跟踪——单次评估无法发现趋势;每周进行评估
- 让主题设计人员参与——与构建对话流程的团队分享评估结果
- 按严重程度加权——幻觉和准确性问题的权重应高于轻微的连贯性问题
- 与人工 Agent 对标——将虚拟 Agent 的分数与人工 Agent 的 CSAT 进行比较,以供参考
故障排除
“未找到会话消息”
原因: 消息可能存储在其他表中,或者会话非常简短
解决方案: 检查 sys_cs_message,同时检查 sys_journal_field 中是否有相关条目。非常简短的会话(1-2 轮)可能只有系统消息。
“主题 sys_id 与任何 sys_cb_topic 都不匹配”
原因: 会话使用了旧版或自定义主题框架
解决方案: 除了 sys_cb_topic,还要检查 sys_cs_topic。有些部署使用较新的 Conversation Designer 表。
“无法确定响应是否为幻觉”
原因: 响应过于模糊,无法根据具体记录进行验证
解决方案: 将其标记为“无法验证”,而不是幻觉。重点关注包含具体说法的响应(工单编号、知识库引用、日期、姓名)。
“同一主题的评分差异很大”
原因: 主题流程包含条件分支,表现会因用户输入而异
解决方案: 按会话路径(例如,成功解决或升级处理路径)划分评估,以便进行更有意义的比较。
示例
示例 1:高质量的密码重置会话
会话: CS0045678 - 用户请求重置密码
评估:
- 连贯性:9/10 -- 流程顺畅,始终保持上下文
- 准确性:10/10 -- 正确引用 KB0012345 进行自助重置
- 槽位填充:9/10 -- 已收集用户名、验证电子邮件并确认身份
- 意图匹配:10/10 -- 立即匹配“密码重置”主题
- 幻觉:10/10 -- 没有编造内容
得分: 48/50(96%)- 优秀
示例 2:糟糕的 VPN 故障排除会话
会话: CS0045679 - 用户报告 VPN 问题
评估:
- 连贯性:5/10 -- 两次询问操作系统,忘记了错误消息的上下文
- 准确性:4/10 -- 引用了不存在的 KB0099999(幻觉)
- 槽位填充:6/10 -- 遗漏了必填字段:VPN 客户端版本
- 意图匹配:7/10 -- 最初匹配“网络问题”,之后才更正为 VPN
- 幻觉:2/10 -- 编造了 KB 文章编号,并虚构了解决步骤
得分: 24/50(48%)- 差。需要立即重新设计主题。
示例 3:模糊意图的处理
会话: CS0045680 - 用户说“坏了”
评估:
- 连贯性:8/10 -- 机器人有条理地提出澄清问题
- 准确性:9/10 -- 确认主题后,响应均正确
- 槽位填充:7/10 -- 花了 4 轮才收集到足够的信息
- 意图匹配:6/10 -- 消歧菜单范围过广(8 个选项)
- 幻觉:10/10 -- 没有编造内容
得分: 40/50(80%)- 良好。建议:将消歧选项缩减至前 4 个。
相关技能
genai/chat-summarization-va- 在评估后总结会话genai/now-assist-qa- 对 Now Assist 功能进行质量保证genai/playbook-generation- 构建改进后的会话流程itsm/incident-triage- 处理从虚拟 Agent 升级的事件knowledge/content-recommendation- 验证知识库文章引用