変数とアクションの絞り込みを使用してビジネスルールエンジンを適応する
学習の目的
この単元を完了すると、次のことができるようになります。
- LLM からのアクションを絞り込むことで、ビジネスルールエンジンを適用する。
- 条件チェックが正しく機能するように変数のデフォルト値を設定する。
次は、ロイヤルティの高いお客様に具体的なリワードを提供しましょう。あなたは、エージェントがプラチナのお客様には $500 のリゾートクレジットを、ゴールドのお客様には $250 のリゾートクレジットを発行するようにしたいと考えています。そのために、IssueResortCredit アクションを作成し、各ロイヤルティレベルに固有の指示を追加します。
IssueResortCredit アクションを作成する
指定された取引先 ID とクレジット金額に基づいてお客様にリゾートクレジットを発行するアクションを作成します。
- [Explorer (エクスプローラー)] パネルの [Canvas (キャンバス)] ビューで、[Experience Management (エクスペリエンス管理)] トピックの横のプラスアイコンを選択します。
-
[+New Action (+新規アクション)] を選択します。
- アクションに
IssueResortCreditという名前を付けます。
- 説明を追加します:
Issue resort credit using the ContactId and provided amount.(ContactId と指定された金額を使用してリゾートクレジットを発行します。)
-
[Create and Open (作成して開く)] をクリックします。
- [Reference Action Type (参照アクション種別)] で [Flow (フロー)] を選択します。
- [Reference Action (参照アクション)] で [Issue Resort Credit (リゾートクレジットを発行)] を選択します。
- [Inputs and Outputs (入力および出力)] セクションまでスクロールダウンし、次の項目にチェックマークを追加します。
- amount 入力: Require Input to execute action (アクションを実行するには入力が必要)
- contactId 入力: Require Input to execute action (アクションを実行するには入力が必要)
- creditID 出力: Show in conversation (会話に表示)
-
[保存] をクリックします。
Credit__c に対する権限をエージェントユーザーに付与する
次に、Credit__c オブジェクトに対する参照権限と更新権限をエージェントユーザーに付与します。これにより、エージェントはロイヤルティの高いお客様にリゾートクレジットを発行できるようになります。
- [Setup (設定)] の [Quick Find (クイック検索)] ボックスで [Users (ユーザー)] を検索して選択します。
-
[EinsteinServiceAgent User (EinsteinServiceAgent ユーザー)] ユーザー名をクリックします。
- ページの上部にある [Permission Set Assignments (権限セットの割り当て)] をクリックします。
-
[Service Agent Permissions (サービスエージェント権限)] を選択し、[Apps (アプリケーション)] の下の [Object Settings (オブジェクト設定)] を選択します。
- スクロールダウンして [Credits (クレジット)] (Credit__c オブジェクト) を選択し [Edit (編集)] をクリックします。
-
[Read (参照)] および [Create (作成)] オブジェクト権限を有効にし、次に [Amount (金額)] および [Contact (取引先責任者)] 項目への編集アクセス権を付与します。
-
[保存] をクリックします。
![すべてのオブジェクト権限が有効で、[Amount (金額)] および [Contact (取引先責任者)] 項目に [Read (参照)] および [Edit (編集)] アクセス権が付与されている Credit__c オブジェクト。](https://res.cloudinary.com/hy4kyit2a/f_auto/fl_lossy/q_70/learn/modules/programmatic-instructions-in-agentforce/enforce-business-rules-with-variables-and-action-filters/images/ja-JP/bdd052b8602d031a2c014e6438ce97bb_kix.4mcgxj1zefx7.png)
ロイヤルティ固有のクレジット金額を発行するようにエージェントを更新する
- Agentforce Builder で CC サービスエージェントに戻ります。
- [Explorer (エクスプローラー)] パネルの [Canvas (キャンバス)] ビューで、[Experience Management (エクスペリエンス管理)] トピックをクリックします。
- トピックの推論指示で、If LifetimeValue >= 50000 の横の矢印を展開します。
-
Thank the customer for being a Platinum member!(お客様にプラチナメンバーであることを感謝してください。) という文の末尾をクリックし、スペースを入力し、Ifと入力します。
-
@記号を入力し、[This Agent's Actions (このエージェントのアクション)] を選択し、[IssueResortCredit] を選択します。
- 残りの指示の
is available, issue the customer a $500 resort credit. Tell them about the resort credit!(が使用可能な場合には、お客様に $500 のリゾートクレジットを発行してください。お客様にリゾートクレジットについて説明してください。) を追加します。 - 上記のステップを繰り返して、値が $50,000 と $25,000 の間であればゴールドメンバーに $250 のリゾートクレジットを発行します。

-
[保存] をクリックします。
リゾートクレジットアクションをテストする
では、エージェントが Sofia に彼女が獲得したリゾートクレジットを付与することを確認しましょう。
- [Preview (プレビュー)] で、シミュレーターをリセットするように促されることがあります。それに同意し、次のプロンプトを入力します:
Can you let me know more about the full moon beach party experience?(「満月のビーチパーティ」体験の詳細を教えてもらえますか?)
- メールアドレスとメンバーシップ番号を聞かれたら、
I am sofiarodriguez@example.com and my membership number is 10008155.(私は sofiarodriguez@example.com で、メンバーシップ番号は 10008155 です) と入力します。
エージェントは次のようなメッセージで応答します: 「Thank you for being a Platinum member, Sofia! You have received a $500 resort credit as a special benefit.」(Sofia 様、プラチナメンバーとしてご愛顧いただき、ありがとうございます。特典として $500 のリゾートクレジットをお受け取りください。)
リゾートクレジットが発行されたことを確認するには、Sofia の取引先責任者レコードを参照します。
- アプリケーションランチャーで、[Contacts (取引先責任者)] を検索して選択します。
-
[Sofia Rodriguez] 取引先責任者を検索し、ダブルクリックして開きます。
- Sofia の取引先責任者レコードで、[Related (関連)] タブをクリックします。
- [Credits (クレジット)] までスクロールダウンし、彼女の $500 のクレジットが追加されていることを確認します。

エージェントがお客様のロイヤルティレベルに合わせて正しい金額のクレジットを発行していることを確認しました。次は、アクションの絞り込みを使用して、エージェントがリゾートクレジットを発行するときに確実にビジネスルールに従うようにします。
アクションの絞り込みを追加してビジネスルールを適用する
条件ロジックを使用することで、エージェントがお客様のロイヤルティステータスに基づいて LLM に特定の指示を送るようにできます。ただし、現時点では IssueResortCredit アクションは LLM に対して常に使用可能になっており、Sophia がさらに 5 回分のクレジットを要求することを防ぐ手立ては何もありません。ほかのエージェントの場合、クレジットの発行回数を制限する唯一の方法は、厳格なプロンプト指示を追加することです。プロンプト指示は決定的でないため、この方法を使用するほかのエージェントは LLM の間違い (または非常に説得力のあるお客様) に対して脆弱になります。一方、Agentforce では、アクションの絞り込みを使用することで、ビジネスルールを決定論的に適用できます。
ビジネス条件が満たされていない場合に LLM からアクションを隠すための絞り込みを追加しましょう。お客様の生涯価値が $25,000 未満の場合やユーザーがこのセッション中にすでにリゾートクレジットを受け取った場合、LLM はそのアクションを認識することもできなくなり、対象外のお客様に間違ってクレジットを発行することが不可能になります。
isCreditEligible 変数を作成する
この変数を使用して、お客様がクレジットの対象であるかどうかを追跡します。
- [Explorer (エクスプローラー)] パネルで、[Variables (変数)] をクリックします。
- 右上にある [New (新規)] をクリックし、[Create Custom Variable (カスタム変数を作成)] を選択します。
- 次のプロパティを設定します。
- Name (名前) と API Name (API 参照名):
isCreditIssued - Data Type (データ型): Boolean
- Description (説明):
Whether the customer has already been issued a resort credit this session.(このセッションでお客様にすでにリゾートクレジットが発行されたかどうか。) - Default value (デフォルト値): False
- Name (名前) と API Name (API 参照名):
-
[作成] をクリックします。
デフォルト値を False に設定します。Agentforce では Boolean 変数のデフォルト値が指定されていない場合、自動的に False に設定されますが、 明確にデフォルト値を指定することで、同僚がエージェントを更新する必要が生じた場合に条件ロジックを理解しやすくなります。

isCreditIssued を設定するように IssueResortCredit アクションを更新する
スクリプト内で、最初のクレジットが発行されたときに isCreditIssued 変数を True に設定します。これにより、エージェントが現在のセッション中にそれ以上のクレジットを発行することを防ぎます。
- [Canvas (キャンバス)] ビューで [Experience Management (エクスペリエンス管理)] トピックを選択し、[Actions Available for Reasoning (推論に使用可能なアクション)] までスクロールダウンします。
- [IssueResortCredit] 表示ラベルの横にある [IssueResortCredit] アクションを展開し、[Add filter (検索条件を追加)] をクリックします。
![[Add filter (検索条件を追加)] ポップアップ](https://res.cloudinary.com/hy4kyit2a/f_auto/fl_lossy/q_70/learn/modules/programmatic-instructions-in-agentforce/enforce-business-rules-with-variables-and-action-filters/images/ja-JP/90d3fa51e97791c8bea5743781dd392e_kix.xzf9xouhrrcz.png)
- [
Available when:(次の場合に使用可能:)] の横にある変数 [isCreditIssued] を選択し、検索条件Available When isCreditIssued == False(isCreditIssued == False の場合に使用可能) を作成します。
-
[False] ブロックの右をクリックすると、[
Add to block(ブロックに追加)] ウィジェットが表示されます。[And] をクリックします。
- 検索条件
And LifetimeValue >= 25000(かつ LifetimeValue >= 25000) を作成します。
- テキスト
creditIDの後ろをクリックすると、[Add to block: Follow-up action(ブロックに追加: フォローアップアクション)] ウィジェットが表示されます。
-
[Follow-up action (フォローアップアクション)] をクリックし、[Set a variable (変数を設定)] をクリックします。
-
[isCreditIssued] を選択し、[True] を選択します。
-
[保存] をクリックします。
キャンバスで、IssueResortCredit 推論アクションは次のようになります。

これで、お客様の生涯価値が $25,000 以上、かつお客様にクレジットがまだ発行されていない場合のみ LLM が IssueResortCredit アクションを認識できるようになります。お客様が自分はクレジットをもらうに値するとエージェントを説得しようとしても、エージェントは物理的にそのアクションにアクセスできません。ぜひ試して、エージェントがどのように応答するかを確認してください。
まとめ
ここでは、Agentforce の決定性とエージェントスクリプトを初めて使用してみました。変数、条件付き指示、アクションの絞り込みを使用して、プラチナ、ゴールド、通常のお客様それぞれに異なるワークフローを定義しました。各会話ターンごとに、Agentforce は定義されたロジックに従ってカスタマイズされたプロンプトを作成し、対象アクションを特定してから、適切なコンテンツのみを LLM に送信します。このロイヤルティランクに固有のロジックを定義することで、エージェントは推論機能や会話機能を損なうことなく、厳密に定義されたガードレール内でロイヤルティの高いお客様にリワードを付与できます。
リソース
- Trailhead: 新しい Agentforce Builder: クイックルック
- Salesforce ヘルプ: Build Enterprise-Ready Agents with the New Agentforce Builder (新しい Agentforce Builder を使用したエンタープライズ対応エージェントの構築)
- Agentforce 開発者ガイド: Agent Script Common Patterns (エージェントスクリプトの一般的なパターン)
- Agentforce 開発者ガイド: Agent Script Reference (エージェントスクリプト参照)
テストのシナリオ
最初のテスト問題では、次のシナリオについて考えます。topic_selector トピックの go_to_escalation アクションは次の available when 句を使用して絞り込まれています。
available when @variables.customerVerified == True and @variables.officeOpen == True
