Skip to main content
From 16:00 UTC on January 17, 2026, to 20:00 UTC on January 17, 2026, we will perform planned maintenance on the Trailhead, myTrailhead, and Trailblazer Community sites. During the maintenance, these sites will be unavailable, and users won't be able to access them. Please plan your activities around this required maintenance.

エージェント対応フローの作成方法を学習する

学習の目的

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

  • エージェントアクションに割り当てることができるフローを作成する。
  • 担当者アクションフローのリソースに、役立つ名前と説明を付ける。
  • エージェントアクションフローに適切な変数を作成する。
  • エージェントとそのエージェントアクションフローがアクセスできるデータを制限する。
Note

このバッジは、受講者がフローに精通しており、Flow Builder の使用経験があることを前提としています。「Flow Builder を使用してフローを作成する」トレイルに従えば、プロセスの自動化に関する確固たるスキルが身に付き、Flow Builder のエキスパートになります。

Note

新しいエージェント作成エクスペリエンスの登場

Agentforce が進化します。Dreamforce 2025 では、このバッジで学習するプロセスや機能とは異なる新しいエージェント作成エクスペリエンスが発表されました。この新しいエクスペリエンスのオープンベータは、Dreamforce から数週間で提供が開始され、 その後まもなく正式リリースされる予定です。なお、これまでに作成されたエージェントをサポートできるように、現在のビルダーエクスペリエンスも引き続き利用できます。今後の最新情報に注目してください。

エージェントでフローを使用するべき理由

Agentforce はユーザーとお客様にとって非常に強力なツールで、その機能の大半はフローに基づいています。エージェントは Salesforce データにアクセスできますが、データに影響を与えることはできません。エージェントでレコードを作成、更新、削除できるようにするには、データを変更するエージェントアクションを定義する必要があります。エージェントアクションでは、Apex クラスの呼び出し、API コールの実行、フローの実行、プロンプトテンプレートの参照を行えますが、ローコードで Salesforce 組織のデータに影響を与えることができる手段はフローのみです。

フローを使用すると、エージェントで特定のデータを使用できるようにしている場合に正確性を高めることもできます。エージェントは、参照する権限が付与された Salesforce データを参照し、関連すると思うデータを使用することができます。エージェントが使用するデータを制限してエージェントの正確性を大きく高めるには、特定の正確なデータを取得してエージェントに供給するフローを作成します。それから、フローで提供されたデータのみを使用するための手順をエージェントに設定します。

では、フローに基づくエージェントアクションを作成するには、何を行う必要があるでしょうか?

自動起動フロー (トリガーなし) を作成する

エージェントアクションでは、フロー種別が [自動起動フロー (トリガーなし)] であるフローのみがサポートされます。ほかのフロー種別 (レコードトリガーフローなど) も技術的には自動起動とみなせますが、割り当てられたフローは「トリガーなし」種別である必要があります。エージェントアクションで使用する既存のフローがこの種別ではない場合は、[自動起動フロー (トリガーなし)] フロー種別を使用してフローを再作成する必要があります。

詳細に内容を表す

AI テクノロジーは、言葉に非常に大きく依存しています。AI にテキスト生成を求めたときに適切な結果を得るには、細かな手順を指定し、詳細かつ正確なソーステキストを与える必要があります。これは、エージェントアクションとして実行するすべてのフローに当てはまります。

エージェントは、フローの変数名やフローで処理されるデータを使用して、フローの実行内容を理解します。そのため、フローの入力変数と出力変数には、正確で説明的な名前を付けることが重要です。「foo」のような変数名は避け、 「Account_ID」のような説明的な名前を使用しましょう。

フロー内のあらゆるものに説明を追加することはすでに推奨されていますが、これはフローがエージェントアクションによって実行される場合にいっそう重要となります。エージェントでは、フローとその変数の説明が使用されます。このテキストはすべて、エージェントがフローの機能とフローで使用されるデータを理解するのに役立ちます。

特に、フローの入力変数と出力変数に適切な名前と説明を必ず入力するようにしてください。しっかりとした名前と説明がなければ、エージェントは変数とそのデータを使用して何を実行すればよいかを確実に判断することができません。

以下に、適切な説明の例をいくつか紹介します。

テキスト種別

あまり役立たない説明

役立つ説明

フローの説明

電話番号を更新する。

取引先責任者レコードに関連付けられているユーザーの電話番号を更新します。一致する取引先責任者が存在しない場合、新しい取引先責任者レコードを作成します。

フローの出力変数の名前

OrderColl

Sorted_Cupcake_Orders_Collection

フローの出力変数の説明

カップケーキ注文のコレクション。

お客様からのカップケーキ注文のコレクション。お客様が指定したメールアドレスを照合して最新順で並び替えられます。

Note

フローの説明がほかの説明より指示的である理由は、 フローがエージェントに追加されたときに、フローの説明が自動的にエージェントへの指示になるからです。エージェントへの指示という形でフローの説明を書くことにより、時間を節約できます。

必ず入力変数と出力変数を使用する

フローベースのエージェントアクションでは、必ずフロー内に 1 つ以上の入力変数と 1 つ以上の出力変数が必要です。この変数が必要でないとしても、入力変数と出力変数を使用することがベストプラクティスとなります。提供するコンテキストが多いほどフローの精度は高まり、フローによって適切なデータが送信されるとエージェントのパフォーマンスは向上します。

エージェントに渡すデータを思いつかない場合であっても、出力変数でエラーメッセージを送信することについて必ず考慮する必要があります。エージェントは、フローから何らかの結果が返されることを期待しています。それが単なる「フローが終了しました」というメッセージだとしてもです。一方で、フローが失敗し、想定外のエラーが発生する場合があります。フローからのデータがなければ、エージェントはおそらく謝罪して「問題が発生しました」という汎用メッセージを表示します。あるいは、コンテキストを考慮せずに何かを提示したいという理由だけで、別のデータを顧客に表示するかもしれません。

上記のような事態を防ぐ (および出力変数要件を満たす) には、より詳細な役立つエラーメッセージを提示すよう設計された出力変数を作成します。フロー内に障害パスと割り当て要素を使用して、出力変数でエラーメッセージを設定します。それから、その出力変数を使用する方法とタイミングをエージェントに伝えます。この設定方法は、以降の単元で説明します。

レコード変数を恐れない

レコード変数は、フロー内での処理のためだけに使用されるわけではありません。エージェントもレコード変数を受け取ることができます。1 つのレコードから、あるいは複数のレコードから複数項目をエージェントに送信する必要がある場合、複数の変数を作成しないでください。代わりに、そのデータに 1 つのレコード変数または 1 つのレコードコレクション変数を作成し、出力に使用できるようにします。たとえば、エージェントが顧客のオープンケースから 4 つの項目を要求するとします。個別の 4 つの変数を使用する代わりに、1 つのレコード変数で 4 つのケース項目を返します。複数のケースを返す場合は、1 つのレコードコレクション変数で返すことができます。

その後、エージェントはそのすべてのデータを受け取り、利用できます。エージェントの手順でレコードデータを顧客に提示するよう伝えている場合、エージェントはまずデータを有用で読みやすい形式に整理します。

フローでエージェントに供給しすぎないようにする

エージェントはフローからデータを受け取ると、そのデータを何かに使用する必要があると考える傾向があります。データを使用して意思決定を行ったり、データを顧客に不必要に表示したりする可能性があります。表示されるべきではない顧客データを表示してしまうこともあるかもしれません。そのため、使用されたくないデータをエージェントに提供しないようにする必要があります

残念ながら、このルールはフローのデフォルト設定である [Get Records (レコードを取得)] と相反します。[How to Store Record Data (レコードデータの保存方法)] のデフォルト設定は [Automatically store all fields (すべての項目を自動的に保存)] ですが、おそらくエージェントはすべての項目を必要としません。このオプションの代わりに、[Choose fields and assign variables (項目を選択して変数を割り当てる)] 設定を選択し、個別のレコード変数を使用して、エージェントが必要な項目のみを選択します。

[Choose fields and assign variables (advanced) (項目を選択して変数を割り当てる (高度))] に設定された [How to Store Record Data (レコードデータの保存方法)] 設定。

エージェントに適切な権限を付与する

従業員向けのエージェントは、エージェントとやり取りするユーザーの権限を使用しますが、外部向けのエージェントは、1 人の専用ユーザーの権限を使用します。エージェントは、適切な権限があれば Salesforce のすべてのデータにアクセスできてしまうため、過剰なアクセス権を与えることはリスクとなります。そのため、各エージェントの専用ユーザーに必要な最小限の権限のみを付与することが特に重要です。実際に必要ではないデータへのアクセス権を付与する誘惑に負けないでください。

エージェントの権限を制御するには、まず、エージェントに割り当てられている [Agent User (エージェントユーザー)] を探します。このユーザーは、エージェントの詳細ページで参照、変更できます。

[EinsteinServiceAgent User (EinsteinServiceAgent ユーザー)] が指定されている Coral Cloud Experience Agent (Coral Cloud エクスペリエンスエージェント) の [Agent User (エージェントユーザー)]。

エージェントユーザーを特定したら、このユーザーに、フローを実行して顧客の要求を満たすために必要な権限セット、プロファイル、ロールを指定します。

1 つの大きなフローではなく、多数の小さなフローを作成する

エージェントはモジュール型、つまり、多数の小さなアクションがそれぞれ 1 つのタスクを完了する設計によってメリットを得ることができます。このようなアクションは多くの方法で組み合わせることができ、多数のエージェントで再利用可能です。

では、それぞれのフローの線引きはどのようにすればよいのでしょうか? フローとエージェントを関連付ける方法を考えてみましょう。フローごとにエージェントアクションを作成します。「アクション」がここでのキーワードです。エージェントがアクションを実行するよう要求された場合、通常、そのアクション自体でフローの境界線が定義されます。たとえば、エージェントが商談のフェーズを変更するよう要求される場合、それが 1 つのアクションとなり、1 つのフローによって実行されます。また、エージェントがフェーズを変更することなく完了予定日を変更することも要求される場合は別のアクションとなり、別のフローによって実行されます。一方、[Stage (フェーズ)] 項目の各値に個別のアクションとフローは必要ありません。なぜなら、フローで [Update Records (レコードを更新)] 要素を使用して、要求されている値に項目を設定できるからです。

ただし、要求されたアクションが同時に [Stage (フェーズ)] と [Close Date (完了予定日)] の両方を更新することを目的とする場合、それは 1 つの要求となるため 1 つのエージェントアクションフローで実行できます。

インタラクションポイントもフローの境界を設定するのに最適です。エージェントはフローの途中で顧客に情報を求めることはできないため、情報を提示したり、次に実行する内容を尋ねたりする必要がある場合、通常はそれが適切な境界線となります。エージェントが複数のタスクを実行しなければならない可能性のある商談管理のエージェントトピックを想像してみてください。

  1. 使用する商談を顧客に尋ねる。
  2. その商談についてのデータを取得する。
  3. 適切なデータを入手したら、エージェントがどうサポートできるかを顧客に尋ねる。
  4. 顧客が要求したアクションを実行する。

このシナリオの場合、1 つのフローでステップ 1 と 2 を処理できます。エージェントがステップ 3 を処理します。ステップ 4 は、エージェントが顧客の商談レコードでほかに実行できる内容に応じて、1 つ、または複数の個別のフローとする必要があります。

その他の考慮事項

エージェントでフローを使用する場合、ほかにも以下のような考慮事項があります。

長いテキスト文字列を変数に送信しない

テキスト変数には 255 文字しか含めることができないため、この制限を超える文字は切り捨てられます。長さがわからないテキストをテキストデータ型の入力変数に割り当てる場合は注意してください。255 文字を超えるテキストをフローに送信するには、開発者と連携して Apex 定義変数を作成します。

テキストをできる限り明確にする

エージェントがコンテキストと手順を理解できるように最善を尽くしてください。文法、スペル、句読点が正しい完全な文を使用します。スペースを使用できない場所にテキストを入力する場合 (変数の API 参照名など)、より明確にするために単語の間にアンダースコアを追加します。たとえば、「AccountINGNumber」の代わりに、「Account_ING_Number」を使用します。

互換性のない出力データ型を避ける

以下の複雑なデータ型は、出力変数を介してエージェントに返すことはできません。

  • 通貨
  • 選択リスト
  • 複数選択リスト
  • Apex 定義

フローでこのようなデータ型の 1 つをエージェントに渡すように設定されている場合、エージェントは出力変数を処理できなくなります。

フローの変数を変更する場合はエージェントアクションを再作成する

フローからエージェントアクションを作成する場合、アクションではフローの入力変数と出力変数のスナップショットが 1 回取得されます。このスナップショットは静的です。フローの変数を変更しても、更新されません。エージェントが古い変数でフローを実行した場合に問題が発生するのを回避するには、エージェントアクションを削除し、新しいエージェントアクションを作成して、フローをエージェントアクションに割り当てる必要があります。

リソース

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

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

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