見出し画像

アドベントカレンダー2023 #11 : Dialogflowコンテキストのまとめ

設計時の気付き

今日は、エージェントの設計時に気付いた点を説明します。昨日の記事にかぶりますが、ご容赦ください。

設計を行った際に気付いたのは、AIチャットボットの設計が、従来のアプローチやテンプレートの単なる流用だけではなく、会話の流れやユーザーの意図を資料に具体化する必要があるということです。そのため、従来のアプローチをそのまま適用しようとすると、うまく対応できないことがあります。会話の流れを表現するために、フローチャートや状態遷移図を試みましたが、うまく表現できませんでした。

状態遷移図的な残念な表現(状態遷移図でなく、インテントを線で結ぶのもいまいち)

どのような話題(コンテキスト)で会話をするのか

また、表記法とは異なる観点から気付いたことは、初期段階でコンテキストを正確に特定し、それを基盤としてインテントをマッピングする方が整理しやすいことです。ユーザーペルソナを作成し、フレーズとレスポンスを洗い出す前に、チャットボットが達成すべき具体的な目標から、どのような話題(コンテキスト)で会話を進めるかを先に決定することが重要です。

コンテキストの概念

コンテキストは、チャットボットがユーザーのフレーズをどのように解釈し、どのように反応すべきかを決定する際の基盤です。このコンテキストにより、エージェントがユーザーのフレーズを正確に把握し、適切なインテントを呼び出す鍵となります。

コンテキストとフレーズの関係

ユーザーのフレーズだけでは、エージェントはインテントを正しく呼び出せないことがあります。(昨日の記事を見てください)

コンテキストは、フレーズに会話の流れ(今はなしている話題)を加える機能となり、エージェントがより適切なインテントを呼び出すことを可能にします。例えば、「はい」というフレーズは、直前の話題によって異なる意味を持ちます。

コンテキストは複数同時に発生する

会話の流れを考えると、話題が深くなることがあります。たとえば、会社の話をしている最中に、明日の予定について話す場合、コンテキストは「会社」+「予定」となります。一方で、仕事が終わった後の会話では、「プライベート」+「予定」というコンテキストが発生します。このように、コンテキストの概念は、同時に複数のコンテキストが発生することを前提としています。

コンテキストのAND条件について

Dialogflowでは、インテントにコンテキストを割り当てることができます。複数のコンテキストを設定することも可能です。そして、複数のコンテキストがすべて満たされた場合に、インテントが呼び出し可能になります。これはAND条件としてインテントに設定されます。

コンテキストのOR条件について

一方で、OR条件を直接設定することはDialogflowではできません。その代替策として、インテントを複製し、異なるコンテキストを設定して模倣する方法があります。これにより、疑似的にOR条件を表現します。ただし、プログラム的な観点から見ると、コードが冗長になりがちであるため、最適な解決策ではないことを理解の上で採用してください。

イベントの概念の活用

Dialogflowにおいて、OR条件の最適なアプローチはイベントの活用です。イベントは、インテントが他のインテントを呼び出す際の唯一の方法です。イベントを使用することで、コンテキストに依存せずにインテントを強制的に呼び出すことが可能となり、OR条件をシンプルに表現し実装する手段と言えます。

まとめ

コンテキストの設計は、AIチャットボットがユーザーの意図を正確に理解し、自然な会話を実現するために重要なプロセスです。コンテキストを適切に考慮することで、より人間らしい対話体験を提供し、ユーザーエクスペリエンスを大幅に向上させることができます。仕様書としての表記法についても、さらに調査してみようと思います。



この記事が気に入ったらサポートをしてみませんか?