Skip to main content
Slack の Trailblazer Community がオープンベータを開始しました。ぜひ参加して、リアルタイムで交流しましょう。Slack に参加する

ルーティング、アクション、プロンプト作文の問題を解決する

学習の目的

この単元を完了すると、次のことができるようになります。

  • サブエージェントまたはアクションが想定どおりに呼び出されない原因を診断する。
  • 決定論的なメカニズムを使用してコンテキスト変数を設定する。
  • 予測不能な動作を減らすために、プロンプト作文のベストプラクティスを適用する。

ルーティングの問題を解決する

すべてのエージェントには、エージェントルーターと呼ばれる特別なサブエージェントが付属しています。これはすべてのエージェント会話の開始サブエージェントとして定義されており、ルーティングの問題を調べるときの出発点として最適です。

デフォルトでは、エージェントはエージェントルーターを使用してほかのすべてのサブエージェントを分類します。分類とは、ユーザーが行いたいことと、エージェントが実行できるジョブに基づいて、最も関連性の高いサブエージェントを選択するプロセスです。遷移は、エージェント会話で利用できるようにするために、エージェントルーターの推論アクションで設定されます。エージェントは、ユーザーの最新メッセージを含む直近の会話履歴を、エージェントルーターの推論アクションにあるすべてのサブエージェントの名前と説明と照合し、最も適切なものを選択します。

エージェントルーターはほかのサブエージェントと同様に編集できます。推論の指示やアクションをカスタマイズして、初期変数を設定したり、サブエージェントの分類とルーティングを制御するロジックを追加したりできます。

  • 条件、アクション、変数を追加して、特定のサブエージェントに分類されるようにします。
  • [Make this action available when (次の場合にこのアクションを使用可能にする)] の検索条件を使用して、サブエージェントを分類の対象から除外します。
  • ほかのサブエージェントからの遷移でのみアクセスできるようにする場合は、サブエージェントへの参照を削除します。

検索条件と変数を使用して、サブエージェントへのアクセスとルーティングを制御できます。たとえば、変数に基づく検索条件を追加して、特定のサブエージェントを検証済み顧客のみが利用できるようにします。次の例をご覧ください。

Order Management、General FAQ、Escalation の各サブエージェントに対して、verified 変数が True に設定されているサブエージェントのリスト。

この例では、推論アクションの verified 変数に基づいて会話がルーティングされます。Order Management (注文管理)、General FAQ (一般的な FAQ)、Escalation (エスカレーション) の各サブエージェントは、顧客が検証済みの場合 (verified = True) にのみ利用できます。顧客が検証済みでない場合 (verified = False)、会話は Identity Verification (ID 検証) サブエージェントにルーティングされます。

コンテキストを明示する

エージェントは、チームに新しく加わったメンバーのようなものです。物事がそうなっている理由や、なぜそのように機能するのかという背景をすべて把握しているわけではありません。エージェントとそのアクションに与える指示、説明、方向性は、はっきりと具体的に記述する必要があります。

設定とデータのコンテキスト

項目の未加工の値は、説明がなければ意味を持ちません。エージェントに渡すデータを対応付けるときは、値だけで意味が伝わるとは考えないでください。

たとえば、{!Account.Id} のような未加工の差し込み項目では、推論エンジンには、その値の意味や、どのような場合に空白になるのかは何も伝わりません。この場合は、表示ラベルを付けて、「取引先レコード ID ({!Account.Id})」に書き直します。プロンプトテンプレートや指示を作成するときも、同じ考え方を適用します。自分自身に次のことを尋ねてみてください。

  • エージェントに担う役割を与えたか
  • 項目自体だけでなく、その項目を取り巻くコンテキストも説明したか
  • 関連する項目、オブジェクト、またはリストが空の場合を考慮したか

コンテキスト変数

コンテキスト変数には特別な注意が必要です。エージェントがプロンプトの指示からコンテキスト変数を推測すると思わないでください。コンテキスト変数は Agentforce Builder で自動的に利用できるわけではありません。コンテキスト変数は、アクション出力の対応付け、設定での変数の対応付け、またはフローや構造化された割り当てロジックを通じて直接設定してください。

コンテキスト変数に依存するロジックは、評価の前にその変数が初期化されている必要があります。このステップをスキップすると、エージェントが予測不能な動作をしたり、サブエージェントやアクションを完全にスキップしたりする可能性があります。

ルーティング、検索条件、またはアクションが依存するコンテキスト変数が実際に存在し、エージェントがそれらを評価する前に値が設定されていることを確認してください。設定を見直し、エージェントの実行の適切なタイミングで変数が設定されていることを確認します。

サブエージェントまたはアクションが実行されない問題を診断する

エージェントが想定するサブエージェントまたはアクションをスキップする場合は、次のよくある原因を確認してください。

  • サブエージェントまたはアクションの説明でのプロンプト作文の問題
  • サブエージェントまたはアクションを除外する検索条件
  • コンテキスト変数の欠落
  • 権限の制限

まずサブエージェントとアクションの検索条件を確認します。正しく設定されていることを確認します。また、検索条件が依存するコンテキスト変数が、評価の前に存在していることを確認します。

エージェントが実行できるプロンプトを作成する

Agentforce の予期しない動作の原因として最も多いのは、プロンプト作文の問題です。決定論的なボットとは異なり、LLM ベースのエージェントは、プロンプトが不明確な場合に予測不能な動作をすることがあります。

次のプロンプト作成のベストプラクティスに従います。

  • 境界を設ける。サブエージェントと指示の境界を明確に区別します。各サブエージェントは、特定の役割またはタスクに対応している必要があります。各サブエージェントの目的と範囲を明示し、重複しないようにします。2 つのサブエージェントの指示が似ている場合、エージェントは推測するため、エラーにつながります。
  • 明示的かつ明確に記述する。サブエージェントとアクションの説明には明確な言葉を使用し、指示が矛盾しないようにします。代名詞や用語のあいまいさを解消します。「自分の」や「私の」などは、混乱を招きやすい言葉です。「私の取引先」は、ユーザーが所有するレコードを指すのか、それともユーザーが関連する取引先責任者として登録されているレコードを指すのか。その判断をエージェントの推測に任せないでください。
  • 推測に頼らない。ビジネスルールの推測を LLM に任せず、直接明示します。
  • 範囲を定義する。アクションを実行すべき状況と実行すべきでない状況を明確に定義します。
  • 出力を明確にする。アクションの出力を明確に構造化し、説明します。応答の語調、簡潔さ、形式を指定します。

説明と指示を厳密にするだけで、「エージェントが指示どおりに動かない」という問題が驚くほど多く解決します。

プロンプト作文の限界

指示をいくら調整しても期待どおりの結果が得られない場合は、指示にプログラム的なロジックを追加して、より一貫した結果が得られるようにすることを検討してください。エージェントスクリプトの優れた点は、ハイブリッドな推論ができることです。プログラム的なロジックの予測可能性と LLM の推論能力を組み合わせて、両方の長所を生かせます。

リソース

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む