Copilot Studio 分析につながる会話の終了方法|conversationOutcomeの設定

Copilot Studioの会話の終了と分析(会話の結果)について詳しく調べたので、メモ。

スポンサーリンク

分析セッションの結果

Copilot Studioの会話型エージェントは、会話の中で「会話の結果(分析セッションの結果)」を記録することができる。
結果の種類は以下の通り。

  • エスカレーション済み(Escalated):システムトピック『エスカレーション』が呼ばれる、またはノード『エージェントへの転送』が実行されたとき
  • 解決済み(Resolved):『会話の終了』トピックが呼ばれ、ユーザーが解決済みの分岐に入ったとき
  • 破棄済み(Abandoned):セッションがタイムアウトし、「エスカレーション」でも「解決済み」でもないとき

※1 つの会話には1つ以上の分析セッションを含めることができる。
※エンゲージメントが「Engaged」状態になっていない会話(「Unengaged」の状態の会話)は、「関与なし」になる

今回はこの「分析セッションの結果(以降「結果」)」を記録する方法について調査。

事前準備

今回はこちらで用意したトピックが確実に呼ばるように、生成AIの回答はオフにする。

ノード「会話の終了」だけでは「解決済み」にならない

例えば以下のように、アクション「会話の終了」を呼び出すトピックを作成して、
このトピックを使用して会話を終了するだけだと、
結果は破棄済み(解決済みでもエスカレーションでもない)になる。

これはトピック(セッション)の中で、「解決済み」や「エスカレーション」といった結果が明示的に指定されずに会話が終了し、そのままセッションがタイムアウトしたため。

以降、この結果を指定する方法を2つ紹介。

方法1:『会話の終了』トピックにリダイレクトする

1つ目はシステムトピック『会話の終了』を使用する方法。

公式に以下のように書かれているため、たぶんこの方法が王道。

会話を適切に終了して成果を測定する
会話の終了 トピックで会話を終了し、ユーザーが問題が解決されたかどうか (およびエスカレーションする可能性があるかどうか) を確認できるようにすることが重要です。
エージェントが成功を確認すると、CSAT 調査がユーザーに表示され 0〜5 のスコアが取得されます。

トピックのロジックに基づいて会話の成果が確実である場合は、成功確認済みとして直接フラグを付けるか、またはエスカレート トピックにリダイレクトできます。
公式はこちら

構築は簡単で、会話がひと段落した(分析を区切りたい)タイミングで、[トピック管理]→[別のトピックに移動する]から、システムトピックの『会話の終了』を選択。
※システムトピック『会話の終了』≠ノード「会話の終了」

あとはこのシステムトピックが呼び出されれば、
結果が記録される。
※分析タブに表示されるまで、30分~1時間ほどかかる。

方法2:明示的にconversationOutcomeを指定する

2つ目は明示的に「解決」または「エスカレーション」を指定する方法。

また、アクション・コード・エディタを使用して、conversationOutcome パラメータでアクションの結果を設定することもできます。 たとえば、確認された成功の場合は conversationOutcome: ResolvedConfirmed、暗黙の成功の場合は conversationOutcome: ResolvedImplied です。
公式より

結果の指定方法は、まずトピックのソースコードを開いて、
分析の結果を設定したいノード(今回はノード「会話の終了」)に対して、conversationOutcomeを指定するだけ。
このトピックを呼び出すと、
解決済みになる。
同じようにエスカレーションで終了するトピックを作成し、
conversationOutcomeに「Escalated」を指定、
トピックを呼び出せば、
エスカレーション済みが1つ増える。

※指定できる値は以下の通り。

conversationOutcome: Escalated
conversationOutcome: ResolvedImplied
conversationOutcome: ResolvedConfirmed
conversationOutcome: Abandoned  // Abandonedのみ未検証

ということで、Copilot Studioの改良に「分析」を使用したい場合は、会話の終了などにも気を使う必要がある。

おまけ:システムトピック『会話の終了』でもconversationOutcomeを設定している

システムトピック『会話の終了』でもconversationOutcomeを設定していて、[コードエディターを開く]でソースを見てみると、
このように解決済みが設定されている。
ちなみにユーザーが回答に満足していない場合は、こちらもシステムトピック『エスカレートする』が呼ばれ、
このシステムトピックのソースを見ると、
conversationOutcomeにEscalatedを指定していることが分かる。

おまけ2:セッションの結果の確認方法

1. Copilot Studioから

Copilot Studioから確認する場合は、[分析]タブの[詳細を表示する]から、[セッションのダウンロード]でcsvをダウンロードでき、
セッションの結果やどんな会話をしたかを見ることができる。

2. Power Apps(Dataverse)から

Copilot Studioの会話の履歴はテーブル「ConversationTranscript」に格納されていて、
こちらを参照すると、結果の他に終了の理由(outcomeReason)やイベントの回数(turnCount)など、細かなデータを見ることもできる。

おまけ3:conversationOutcomeを設定する操作を、連続で呼び出すと

こんなトピックを作成し、
「終了」のメッセージ送信でconversationOutcomeを設定するようにコードを編集する。
このトピックをユーザー側から間髪入れずに呼び出すと、
呼び出した回数だけセッション数が増加する。
※数が6なのは、このテストの前に一度動作確認を行ったため。

コメント

タイトルとURLをコピーしました