[AWS]Bedrock KnowledgeBaseの「正しい」ルール設定

AI

「ハンバーガー店」のルールファイル(bedrock_rules_hamburger_pro)を優れた見本として、ルール設定のポイントを改めて解説します。

「正しい」形式とは「誰が読んでも理解しやすく、メンテナンスが容易で、拡張性の高い構造」になっておりMarkdown記載でも問題はない。

正しいルールファイルを書くための重要なポイントは以下の通りです。

1. 処理の流れ(フロー)を明確に定義する

まず最初に、ユーザーからの質問がどのような順序で処理されるのかを定義します。これにより、ルール全体の骨格が明確になります。

良い例(ハンバーガー店のルールファイルより):

1. Phase 1: ガードレール(入力フィルタリング)
2. Phase 2: インテント分類
3. Phase 3: エンティティ抽出とAPIマッピング
4. Phase 4: 実行とレスポンスハンドリング
5. Phase 5: フォールバック

このように段階(Phase)を分けることで、「まず不適切な質問を弾き、次にお客様かスタッフかを分類し…」という論理的な流れが非常に分かりやすくなります。

2. 「インテント(意図)」中心で考える

単純なキーワードのマッチングだけでなく、「ユーザーが最終的に何をしたいのか」というインテント(Intent)を定義することが最も重要です。

良い例(ハンバーガー店のルールファイルより):

  • インテント Inquiry(店舗・メニューに関する問い合わせ): ユーザー(お客様)は「お店やメニューの情報」を知りたい。
  • インテント Internal_Report(内部データ確認): ユーザー(スタッフ)は「売上や在庫などの内部情報」を知りたい。

このように大まかな目的を定義することで、新しい言い回しや質問が増えても、どちらのインテントに属するかを判断するだけで済むため、ルールが破綻しにくくなります。

3. 「エンティティ(対象)」を明確にする

ユーザーの意図(インテント)が分かったら、次はその意図が「何に対して」向けられているのか(エンティティ)を定義します。

良い例(ハンバーガー店のルールファイルより):

  • Store_Info: 営業や場所など、店舗の基本情報について知りたい。
  • Menu_Item: 特定のハンバーガーについて知りたい。
  • Sales_Data: 売上について知りたい。

4. インテントとエンティティの組み合わせでAPIを決める

最終的に呼び出すAPIは、「どのインテント」で「どのエンティティ」が指定されたかの組み合わせで決定します。これにより、ルールが非常に整理されます。

良い例(ハンバーガー店のAPIルーティング定義より):

  • Inquiry(問い合わせ) + Store_Info(店舗情報) → /storeInfo APIを呼び出す
  • Internal_Report(内部データ) + Sales_Data(売上) → /reports/sales APIを呼び出す

5. 正常系以外のルール(フォールバック)を必ず書く

ルールに合致しなかった場合や、情報が足りない場合にどう振る舞うかを定義しておくことで、システムが停止したり、ユーザーを混乱させたりするのを防ぎます。

良い例(ハンバーガー店のルールファイルより):

  • パラメータ不足時のエラーメッセージ: 予約時間不足なら「ご予約ですね。ご希望の日時と人数を教えていただけますか?」と具体的に聞き返す。
  • 不明瞭なインテントの解決: どのルールにも合致しない場合に、ユーザーに「例:「営業時間を教えて」「予約したい」など」と例を挙げて対話を促す。

まとめ

Bedrock KnowledgeBaseのインテントルーティングは、このハンバーガー店のルールファイルのように、

  1. 処理フローの明確化
  2. インテント(意図)ベースの設計
  3. エンティティ(対象)の抽出
  4. インテントとエンティティの組み合わせによるAPI決定
  5. フォールバック(エラー処理)の定義

という構造で書くのが、最も堅牢な形式と言えます。この形式は、どんな業種であってもルールの可読性、保守性、拡張性を大きく向上させます。

コメント

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