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. 01Virtual 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を入力して読み込まれたか確認します。

詳細

会話評価器

概要

このスキルは、仮想エージェントとの会話を複数の品質面から評価し、正確で一貫性があり、役立つやり取りを実現します。会話型 AI のパフォーマンスに関する問題を特定し、実行可能な改善案を提示します。

  • 会話の一貫性を評価します:論理的な流れ、コンテキストの保持、話題の継続性
  • 正確性を検証します:回答が事実に基づき、ナレッジベースの内容と一致しているか
  • スロットの入力を評価します:取得したユーザー入力の完全性と正確性
  • インテントの一致度を採点します:仮想エージェントが適切なトピックとアクションを選択したか
  • ハルシネーションを検出します:ServiceNow のデータに基づかない捏造情報を特定します
  • 項目別の評価と総合スコアを含む品質スコアカードを作成します

使用するタイミング: 仮想エージェントのパフォーマンスを監査する場合、ボットとのやり取りに関するユーザーからの苦情を調査する場合、または会話型 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 のトピック設計と想定される会話フローに関する理解
  • データ: 会話履歴を含むアクティブな仮想エージェントのデプロイ

手順

ステップ 1:評価する会話を取得する

最近の仮想エージェントとの会話をクエリします。必要に応じて、トピックまたは結果で絞り込みます。

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 のレコードおよび KB 記事と一致している
データの鮮度0~2情報が最新であり、古くなっていない
情報源の明示0~2ボットが正しいレコード/記事を参照している
矛盾がないこと0~2会話の中でボットが自身の発言と矛盾していない
適切な不確実性の表明0~1データが曖昧な場合に、ボットが不確実性を表明している
ステップ 6:スロット充填を評価する(スコア 0~10)

必要なユーザー入力が正しく取得されたかを確認します。

基準点数説明
必須スロットの取得0-3必須フィールドをすべてユーザーから収集している
スロットの検証0-2入力を検証している(例:メール形式、日付範囲)
スロットの確認0-2重要な入力をユーザーに復唱して確認している
適切な再入力の促し0-2無効な入力に対して、明確な案内を示して対応している
スロット情報の引き継ぎ0-1以前に提供された情報を再利用し、再度質問していない

mandatory=true の sys_cb_action 定義を参照し、取得したスロットと照合します。

ステップ 7:インテントの照合を評価する(スコア 0~10)

仮想エージェントがユーザーの依頼に適したトピックを選択したかを判定します。

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

主な品質指標:

  • トピックごとの平均スコア:最もパフォーマンスの低い会話フローを特定します
  • エスカレーション率:人間のエージェントにエスカレーションされた会話の割合です
  • ハルシネーションの発生頻度:捏造された内容がどの程度の頻度で発生するかを示します
  • スロット完了率:必須スロットの取得に成功した割合です

ツールの使用

ツール目的使用するタイミング
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. 人間のエージェントをベンチマークにする -- VA のスコアを人間のエージェントの CSAT と比較し、状況を把握します

トラブルシューティング

"会話のメッセージが見つかりません"

原因: メッセージが別のテーブルに保存されているか、会話が非常に短かった可能性があります 解決策: 関連するエントリがないか、sys_cs_message と sys_journal_field の両方を確認してください。非常に短い会話(1~2ターン)には、システムメッセージしか含まれていない場合があります。

"トピックの sys_id が sys_cb_topic と一致しません"

原因: 会話では、レガシーまたはカスタムのトピックフレームワークが使用されていました 解決策: sys_cb_topic に加えて、sys_cs_topic も確認してください。一部のデプロイでは、新しい Conversation Designer テーブルが使用されています。

"応答がハルシネーションかどうかを判断できません"

原因: 応答が曖昧で、特定のレコードと照合して検証できません 解決策: ハルシネーションではなく「検証不能」としてフラグを付けてください。具体的な主張(チケット番号、KB 参照、日付、名前など)を含む応答に注目してください。

"同じトピックのスコアに大きなばらつきがあります"

原因: トピックフローに条件分岐があり、ユーザー入力によって挙動が異なります 解決策: より有意義な比較ができるよう、会話パス(例:解決成功パスとエスカレーションパス)ごとに評価を分けてください。

例

例 1:高品質なパスワードリセットの会話

会話: CS0045678 - ユーザーがパスワードのリセットを依頼

評価:

  • 一貫性:9/10 -- スムーズな進行で、全体を通じて文脈を維持
  • 正確性:10/10 -- セルフサービスでのリセット方法として KB0012345 を正しく参照
  • スロット入力:9/10 -- ユーザー名を取得し、メールアドレスを確認して、本人確認を完了
  • インテント一致:10/10 -- すぐに「パスワードリセット」トピックに一致
  • ハルシネーション:10/10 -- 捏造された内容なし

スコア: 48/50(96%)- 優秀

例 2:質の低い VPN トラブルシューティングの会話

会話: CS0045679 - ユーザーが VPN の問題を報告

評価:

  • 一貫性:5/10 -- OS を2回尋ね、エラーメッセージの文脈を見失った
  • 正確性: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 - バーチャルエージェントからエスカレーションされたインシデントに対応
  • knowledge/content-recommendation - KB 記事の参照を検証

コメント