mcpField
C
conversation-evaluator

conversation-evaluator

github.com/happy-technologies-llc测试与质量4141 次安装2 天前更新
代码仓库

关于 conversation-evaluator

该技能评估 Virtual Agent 对话的连贯性、准确性、槽位填写和意图匹配,并检查是否存在无依据的信息。适用于审查对话质量、调查用户反馈及跟踪改进趋势。

主要功能

  1. 01评估对话连贯性和上下文保持
  2. 02核对回复准确性与数据依据
  3. 03检查槽位填写和输入验证
  4. 04评分意图匹配与主题选择
  5. 05识别虚构内容并生成质量评分卡

适用场景

  1. 01定期审计 Virtual Agent 对话
  2. 02调查用户对机器人交互的投诉
  3. 03比较不同主题的质量表现
  4. 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探索与对话相关的表结构设置和发现

最佳实践

  1. 有策略地抽样——评估所有主题,而不只是高流量主题
  2. 纳入已升级的对话——升级能揭示最显著的质量差距
  3. 分批评估——每个评估周期评估 20-50 个对话,以确保统计有效性
  4. 区分评估维度——高连贯性分数不能弥补幻觉问题
  5. 持续跟踪——单次评估无法发现趋势;每周进行评估
  6. 让主题设计人员参与——与构建对话流程的团队分享评估结果
  7. 按严重程度加权——幻觉和准确性问题的权重应高于轻微的连贯性问题
  8. 与人工 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 - 验证知识库文章引用

评论

支持 Markdown