効果的な言語理解の設計

自然言語理解 (NLU) は、Copilot Studio のエージェントがユーザーのクエリを理解し、文脈に沿った適切な応答を提供するための中心的な役割を担っています。 意図認識、エンティティ抽出、フォールバック処理に対する明確なアプローチにより、エージェントはビジネスニーズに適合した効率的で自然な会話を確実に実現します。

ユーザーがエージェントに対して何かを入力することを、「発話」と呼びます。 エージェントはその発話を意図とエンティティに分解し、エージェントの応答が自然かつ効率的であるように感じられるようにする必要があります。

Language Understanding とは

言語理解 (LU) は、自然言語処理 (NLP) の一分野であり、機械が人間の言語の背後にある意味、意図、文脈を理解できるようにすることに焦点を当てています。

言語理解の処理プロセスを示した図。

ユーザーのメッセージがインテントとエンティティにどのように分解されるかを示した図。 ユーザーが「来週パリ行きのフライトを予約したい」と入力します。 メッセージは発話としてラベル付けされます。 「フライトを予約したい」というフレーズは意図として識別され、「パリ」と「来週」はエンティティとして識別されます。 その後、システムは出発地や搭乗クラスなどの詳細情報を入力するよう求めます。 この図は、エージェントがインテント、エンティティ、コンテキストを使用して最適な応答を決定する仕組みを示しています。

言語理解には、以下の要素が含まれます:

  • 意図認識: ユーザーが達成したいことを特定する (例: 「来週、パリ行きの航空券を予約する」は、「航空券を予約する」という意図にマッピングされる)。
  • エンティティ抽出: 日付、場所、名前などの重要な情報を抽出する (例: 目的地として「パリ」、旅行日として「来週」など)。
  • コンテキスト認識: 会話における一貫性を保ち、曖昧さを解消すること (たとえば、代名詞や言及の対象を理解することなど)。
  • 曖昧性の処理: 文脈を使用して、複数の意味を持つ単語 (たとえば、金融機関としての「bank」や川岸としての「bank」など) の意味を判別する。

Copilot Studio における言語理解

Copilot Studio は、言語理解において柔軟なモデルを採用しており、複数の構成オプションが用意されています。

生成オーケストレーション

生成オーケストレーションは、言語モデルを用いてトピック、アクション、知識を知的に連鎖させます。 この機能により、複雑なクエリに対する多意図認識、高度なエンティティ抽出、動的な計画生成が可能になります。

この方法は、Copilot Studio の既定の設定です。 このアプローチでは、1 つの発話に含まれる複数の意図やトピックを認識し、アクションとサポート情報ソースを自動的に連鎖させ、統一された応答を生成します。 特に、複数の事業分野にまたがる複雑な会話の対応に使用されます。 生成オーケストレーションには、トピックまたはアクション チェーンごとに 5 件のメッセージ、オーケストレーションごとに 128 の トピックまたはアクションなどの制限がありますが、会話の幅を拡大するための強力な手段となります。

詳細については、生成オーケストレーション機能の適用を参照してください。

クラシック オーケストレーション

従来のオーケストレーションでは、トリガーフレーズと決定論的なトピック ルーティングが使用されます。 ユーザーの発話がトリガーフレーズと一致した場合、対応するトピックが実行されます。 一致する結果がない場合、フォールバック機能によりサポート情報ソースが検索されるか、ユーザーに確認を求めるメッセージが表示されます。

組み込み NLU

このアプローチは以前は既定でしたが、現在はフォールバックとして採用されています。 Copilot Studio には、トリガー フレーズ、事前定義されたエンティティ、およびカスタム エンティティをサポートする、既成の NLU モデルが用意されています。 このモデルにより、エージェントはユーザーの意図を把握し、クエリから直接、日付、目的地、数量などの重要な詳細情報を抽出することができます。

NLU+

高い精度を得るには、NLU+ オプションを使用してください。 NLU+ オプションは、大規模なエンタープライズ向けアプリケーションに最適です。 この種のアプリケーションは通常、多数のトピックやエンティティで構成され、多数のトレーニング サンプルを使用します。 また、音声対応エージェントをお持ちの場合は、NLU+ のトレーニングデータが音声認識能力の最適化にも使用されます。

Azure CLU 統合

既定の生成オーケストレーションを使用できない、より高度なシナリオでは、Azure Conversational Language Understanding (CLU) を統合することができます。 CLUは、より高度なカスタマイズ機能、多言語対応、複雑なエンティティ抽出 (たとえば、複数の「from」エンティティなど) を提供します。 CLU インテントと Copilot Studio のトピックをマッピングして、両者を同期させる必要があります。このオプションは、業界固有の語彙、英語以外の言語、あるいはより高い精度が求められるシナリオにおいて特に有用です。

主な機能と制限事項

この表は、Copilot Studio における 3 つの言語理解アプローチを比較したものです。 本資料では、各モデルの主な特徴と制限事項を解説し、エージェントの複雑さ、規模、精度に関する要件に合わせて最適なモデルを選択できるよう支援します。

機能および制限事項 生成オーケストレーション 組み込みの NLU モデル カスタム Azure CLU モデル
主な機能
  • 大規模言語モデルを使用する
  • 複数のインテント、トピック/アクション、ナレッジを含む複雑な発話を処理します
  • 入力が不足している項目に対して、自動的に質問を生成します
  • 実行中に修正が可能
  • トピック、アクション、ナレッジの出力に基づいて、統一された回答を生成します
  • 既定のエンティティ タイプを備えた事前学習済みモデル
  • トリガーフレーズとカスタム エンティティ (クローズド リストまたは正規表現) を使用して構成されます
  • ネイティブ モデルで、より多くの言語をサポートします
  • 精度や業界固有のニーズに合わせてカスタマイズ可能なインテント トリガー モデル
  • 高度なエンティティ抽出 (例: 同種エンティティ、サイレント抽出)
  • エンティティ抽出には、Copilot Studio の標準 NLU を使用できます
制限
  • トピック/アクション チェーンごとに 5 件のメッセージ
  • トリガーとなるトピックおよびアクションは 128 件まで
  • クエリごとにひとつの意図認識
  • 拡張できない
  • 同じタイプの複数のエンティティをスロット埋めるには曖昧さ回避が必要です
  • クエリごとにひとつの意図認識
  • Azureベースの構成と追加コスト
  • Azure サービスには制限がある
  • Azure CLU のインテントと Copilot Studio のトピックは、常に注意深く同期を保つ必要があります。

詳細については、自然言語理解 (NLU) の概要を参照してください。

トピックの構成とフォールバック

トピックの焦点は、厳格で「意図」を重視したアプローチから、より柔軟で「オーケストレーション」を優先するアプローチへと移行しています。 トピックは、あらかじめ定義されたトリガーやパスだけに依存するのではなく、エージェントが会話を進行させる際に呼び出すことができるモジュール式の指示として機能するようになりました。 生成オーケストレーションは、ユーザー入力を動的に解釈することでルーティングの大部分を処理し、精度が求められる場合にはトピックが構造化されたフォールバック機能を提供します。

より従来型の構造化されたトピック構成により、会話が自然で効率的になります。 トピックには、ユーザーの発話によってトリガーされるエントリ ポイントや、リダイレクトやシステム イベントによって呼び出される再利用可能なサブトピックがあります。 曖昧性解消トピックは、複数のトピックがトリガーされる可能性がある場合に混乱を防ぐ役割を果たし、フォールバック トピックや会話ブースティング トピックは、エージェントがインテントを確実に特定できない際のセーフティネットとなります。 また、外部のサポート情報ソースから情報を引き出すための生成応答をレイヤーにして活用することで、ユーザーが応答を得られない事態をかなり防止できます。

詳細については、トピック作成のベストプラクティスを参照してください。

ローカライズと言語

Copilot Studio のエージェントが使用する言語は、システム変数 (System.User.Language) の値によって決定されます。

この変数は、エージェントにおけるすべての言語関連の挙動の中枢となる制御点として機能します。 この値は、手動で設定したり、プログラムで設定したり、自動的に検出したりすることができます。

動作のしくみ

  • ユーザーの言語でサポート情報ソースを検索する: Copilot Studio では、System.User.Language の値を使用して、指定された言語のサポート情報ソースを検索します。 このアプローチでは、ユーザーが特定の言語で質問をした場合でも、エージェントが検索クエリを System.User.Language で設定された言語に翻訳します (検索クエリの自動翻訳)。

  • ユーザーの言語で応答する: エージェントは、質問や元のドキュメントで使用されている言語に関係なく、System.User.Language で指定された言語で回答を生成します (生成応答のための自動翻訳)。

  • 手動上書き: System.User.Language の値を手動で設定することで、エージェントを特定の言語で動作させることができます。 この機能は、テストや言語を明示的に制御する必要がある場面で使用されます。 詳細については、多言語エージェントの構成と作成 を参照してください。

話されている言語の自動検出

Copilot Studio を構成することで、ユーザーの話し言葉や書き言葉の言語を自動的に検出し、それに応じて System.User.Language 変数を設定することができます。 この機能により、ユーザーが言語基本設定を指定する必要なく、シームレスな多言語エクスペリエンスを実現できます。

自動検出の仕組み

  • トリガーベースの検出: ボットがメッセージを受信すると、トリガーが言語検出フローを開始します。
  • システム変数の設定: ボットは検出された言語を System.User.Language に割り当てます。
  • 動的応答: エージェントは、検知された言語で会話を続けながら、ナレッジを検索し、それに応じて応答を生成します。

福利厚生

  • パーソナライズされたエクスペリエンス: ユーザーは、手動での構成を行うことなく、基本設定で好みの言語で操作を行うことができます。
  • 一貫したエクスペリエンス: すべての応答およびナレッジの検索結果は、検出された言語または設定された言語に適合しています。
  • スケーラブルなソリューション: 最小限の構成で、グローバルな展開に対応しています。

ヒント

Copilot Studio のエージェントがユーザーの話し言葉を自動的に検出し、そのエージェントに対して作成者が承認した言語のいずれかに切り替える方法を示すサンプル ソリューションについては、生成応答のための言語の自動検出をレビューしてください。

ローカライゼーションのベスト プラクティス

  • 対応言語の構成: エージェントの第一言語と第二言語を定義します。 ローカライズファイル (JSON または ResX) を使用して、プロンプト、メッセージ、トピックの翻訳を設定します。
  • 多言語シナリオをテストする: さまざまな言語でのユーザー操作をシミュレートし、スムーズな遷移と正確な応答を確保します。
  • 自動翻訳を活用する: サポート情報検索や生成応答には、Copilot Studio に組み込まれた翻訳機能を活用しつつ、重要度の高いコンテンツやニュアンスが求められるコンテンツについては、独自の翻訳を用意してください。
  • 監視と改善: 分析ツールを使用して言語の使用状況を追跡し、長期的にローカライゼーションの対応範囲を向上させます。

Copilot Studio のエージェント言語に関するアプローチ:

  • 言語ごとに別々のエージェントを用意する。
  • 事前作成済みの翻訳文を備えた、単一の多言語対応エージェント。
  • ユーザーとエージェント間の翻訳サービスを使用する、リアルタイムの多言語対応エージェント。

適切なアプローチは、使用、分離に関する懸念事項、規模、更新頻度、利用可能なリソースによって異なります。

特定された技術的課題

代表的な課題としては、Azure CLU と Copilot Studio のトピック間の同期を維持すること、曖昧な発話の処理、多言語展開のスケーリングなどが挙げられます。 こうした課題を早期に特定することで、代替構成の策定、トリガー フレーズの大量テスト、中継型翻訳サービスの活用など、対策を講じることが可能になります。

言語理解の目的は、すべてのエージェントがユーザーのクエリを正確に解釈し、多様な言語やシナリオに対応し、予期せぬ事態にも円滑に対処できるようにすることです。 この目標は、信頼性が高く、魅力的で、効率的な Copilot Studio の会話を実現する強固な基盤となります。