0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Salesforce Agentforceのサブエージェント・推論指示の書き方と意図したルーティングを実現する方法

0
Posted at

はじめに

設定したサブエージェントが、思い通りにルーティングされない。AgentforceのAgentScriptに触り始めて最初にぶつかった壁がここでした。

サブエージェントの名前や指示をなんとなく書いただけでは、Atlas Reasoning Engineは意図した通りには動きません。

この記事では、サブエージェントの命名・分類説明・指示(Instructions)の書き方を、公式ドキュメントのベストプラクティスに沿って整理します。
Agentforce管理者やSIerコンサルタントの方が、ルーティングがズレる原因を理解し、設計精度を上げるための内容です。

Atlas Reasoning Engineはどうやってサブエージェントを選ぶか

Agentforceでは、ユーザーの発言が届くたびに、まず start_agent(エージェントルーター) と呼ばれる起点サブエージェントに到達します。ここでAtlas Reasoning Engineが動き、「この発言にはどのサブエージェントが最適か」を判断してルーティングします。

このときLLMが参照するのが、各サブエージェントの3つの要素です。

  • サブエージェント名(表示名・API名)
  • 分類説明(このサブエージェントが何を担当するかの説明文)
  • 指示(このサブエージェントがどう振る舞うべきかの詳細説明)

正直、「名前を適当につけても動くだろう」と思っていました。でも実際に試してみると、名前と説明の一貫性がルーティング精度に直結すると感じています。

出典:Agent Router | Agent Script | Agentforce Developer Guide

サブエージェントの命名と分類説明の書き方

名前はAPI名形式で一貫させる

サブエージェントには表示名とAPI名があります。エージェントスクリプトの指示内でサブエージェントを参照するときは、API名形式(スペースをアンダースコアに置き換えた形) で記述すると認識されやすいです。

たとえば表示名が「注文確認」なら、注文確認ではなくOrder_Confirmationのように英語スネークケースで書くのが安全です。日本語名でも動作しますが、LLMとの相性を考えると英語名にしておくと後で融通が利きます。

分類説明は「何をするか」だけでなく「何をしないか」も書く

分類説明は、LLMが「このサブエージェントに振るべきか否か」を判断する根拠になります。「〇〇の問い合わせに対応する」という肯定的な説明だけでなく、「〇〇については対応しない」という除外条件も書くのが効果的です。

似たような役割のサブエージェントが複数ある場合は特に重要です。

例:注文確認サブエージェントの分類説明

良い例:
「顧客が過去の注文状況を確認したい場合に使用する。
返品・交換の問い合わせは扱わない。」

改善前:
「注文に関する問い合わせに対応する。」

「改善前」のような曖昧な説明では、「返品したい」という発言まで注文確認サブエージェントに引き寄せられる可能性があります。似たサブエージェントを複数作るときほど、この「しないこと」の明示が分類精度を守ります。

指示(Instructions)の書き方コツ

関連するSalesforceオブジェクトを明示してグラウンディングする

指示の中で「このサブエージェントが参照すべきSalesforceオブジェクト」を明示すると、LLMがデータをどう使うべきか理解しやすくなります。

Salesforce公式が推奨している書き方のポイントを整理するとこうなります。

  • 関連するSalesforceオブジェクトとその目的を説明する
  • 「このサブエージェントは、ツールが提供するデータ以外のSalesforceデータを使わないこと」と明示する
  • 「顧客にIDの値を表示しないこと」と指示する(レコードコレクション変数にはIDが含まれるため)

IDを顧客に見せないための指示は地味に見えますが、これを書いておかないとエージェントがレコードIDをそのまま回答に含めてしまうことがあります。実際に動かして初めて気づくミスの代表格です。

遷移アクションには go_to_ プレフィックスを使う

サブエージェントから別のサブエージェントへ遷移するアクションには、go_to_returns(返品サブエージェントへ)のように go_to_ で始まる名前 をつけることが推奨されています。このプレフィックスにより、LLMがそのアクションが「別のサブエージェントへのナビゲーション」であると理解しやすくなります。

例:遷移アクション名

良い例:go_to_order_confirmation
改善前:check_order_status

重要なルーティングはLLMに任せず条件式で制御する

認証が必要なサブエージェントや、必ず特定の順序で通過させたいフローには、available when フィルターや条件付き遷移 を使って決定論的に制御するのが安全です。LLMの分類に全てを委ねる設計は、エッジケースで予期しない動作を起こすことがあります。

この考え方は、正直に言うと最初はやや複雑に見えました。
「LLMが賢く判断してくれるはず」という期待が先に立つからです。でも使い込んでみると、重要な経路ほど条件式で確定させ、LLMには「曖昧さの許容できる分類」だけを任せる設計が安定するという感触があります。

つまずきポイント・注意事項

① 意図したサブエージェントが呼ばれない

原因の多くは、分類説明が曖昧か、似た説明を持つサブエージェントが複数存在することです。まずAgentforce Builderのプレビューで「インタラクションの詳細」を確認し、どのサブエージェントにルーティングされているか・LLMがどう推論したかを見てください。

また、サブエージェント数は必要最小限にすることが公式に推奨されています。最初から多数のサブエージェントを作ると、LLMの分類精度が下がります。まず少数で設計し、徐々に追加していくアプローチが安定します。

② 「従来のビルダー」と「新しいAgentforce Builder」で用語が異なる場合がある

2026年4月のアップデート以降、画面表示の用語が変わっています。ドキュメントによっては「トピック」が「サブエージェント」になっていない記述も残っています。名称変更のみで機能変更はないため、「トピック」と「サブエージェント」が混在していても同じものだと割り切って読み進めてください。

③ 利用可能エディションの確認

Agentforceは Enterprise Edition以上(またはAgentforce・Data 360対応のDeveloper Edition)で利用可能です。本番環境への導入前にエディション要件を確認しておくと、後で驚くことがありません。

まとめ

  • Atlas Reasoning Engineは、サブエージェントの名前・分類説明・指示の3要素をもとにルーティングを判断する
  • 分類説明は「何をするか」だけでなく**「何をしないか」**も明記することで分類精度が上がる
  • 指示には「ツールが提供するデータ以外は使わない」「顧客にIDを表示しない」を明示するのが推奨
  • 遷移アクション名にgo_to_プレフィックスをつけると遷移の意図が伝わりやすくなる
  • 重要なルーティングはLLMに任せず、条件付き遷移やavailable whenフィルターで制御する

ルーティング設計は「地味だけど後になって効いてくる」領域だという印象を持っています。最初の設計が甘いと、エージェント数が増えるにつれてどんどん修正コストが膨らみます。小さく始めて、少しずつ検証しながら拡張していくのが、実務では合っているように感じます。


AI×資格学習・Salesforce業務活用の情報をnoteでも発信しています。

https://note.com/pacific_creator1

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?