【Agentforce完全ガイド】LWRサイトに「自律型AI」を実装する全手順:DMO・ハイブリッド検索からプロンプト設計まで

この記事はバージョン Winter ’26 において執筆しています。
現在の動作と異なる場合がありますので、ご認識おきください。

なお、本記事と同等の実装をするには以下の権限セットライセンスが必要です。
– Agentforce Service Agent User
– Data Cloud

「Agentforce を導入したいが、どこから手を付ければいいか分からない」
「要素が多すぎて、全体像が見えない」

Agentforce は強力ですが、その構造は従来のチャットボットとは比較にならないほど複雑です。
CRMデータ、Data Cloud、ベクトル検索、そしてLLMへの指示(プロンプト)。これらが精緻な歯車のように噛み合って初めて、AIは「賢く」振る舞います。

この記事では、読者の皆様が迷子にならないよう、実装プロセスを「4つのレイヤー」に分解し、順を追って解説します。
目指すゴールは、「マニュアルを読んで回答し(知識)、注文状況を調べて答える(行動)」ことができる、実用的なカスタマーサポートエージェントの実装です。

シナリオ:今回作成する「注文サポートエージェント」

設定を始める前に、このエージェントが「何をするのか」を定義します。 単なる雑談ボットではなく、以下の2つの具体的な業務をこなす Tier 1 サポート担当者 を目指します。

  1. 【知識】テクニカルサポート:
    • ユーザーからの「使い方が分からない」「エラーが出る」という質問に対し、Data Cloudからナレッジの内容を検索・要約して回答する。
  2. 【行動】注文ステータスの確認:
    • ユーザーが指定した「注文番号」をキーにして、Salesforce内の Order オブジェクトを検索し、配送状況や追跡番号を回答する。

これまでのボットなら数十個のダイアログ設定が必要だったこの要件も、Agentforceなら「トピック」と「アクション」を定義するだけで実現できます。

この図を頭の片隅に置いて、ステップ1から順に進めていきましょう。

Step 1: データ基盤の整備 (Data Cloud & Knowledge)

現在地
AIに「知識」を与えるフェーズです。マニュアル(ナレッジ)をAIが読める形式に変換します。

単にナレッジ記事を書くだけでは、Agentforce はそれを読むことができません。Data Cloud を介して「ベクトル化(意味を数値化)」する必要があります。

Knowledge オブジェクトのカスタム項目作成(Prepare)

Knowledge オブジェクトに以下のカスタム項目を作成してあるものとして以降の話を進めます。

  1. 本文 Body__c リッチテキストエリア(32768)
  2. サイトURL Site_URL__c 数式 (テキスト)
    以下の数式を持つ項目です。
    $Label.Site_Base_URL & 'article/' & UrlName

※カスタム表示ラベル Site_Base_URL は `https://(あなたの組織のドメイン名).my.site.com/(サイト名)/s/` のような文字列を格納しています。

ナレッジデータの取り込み (Ingestion)

まず、Salesforce標準の「ナレッジ (Knowledge)」オブジェクトを Data Cloud に取り込みます。

  1. Data Cloud アプリを開き、「データストリーム」を新規作成します。
  2. ソースとして Salesforce CRM を選択します。
  3. オブジェクト一覧から 「Knowledge (kav)」 を選択して取り込みます。
  • 新規データストリーム
  • データストリーム準備完了

あらかじめ準備しておいたカスタム項目の取り込みもお忘れなく。私は後からカスタム項目を作成したので画像では「カスタム項目 (0)」となっていますが、もしあればここにカスタム項目が出てきます。

Mapping info between old Article Version and migrated Article Version という項目が長すぎるという理由でエラーが出ることがあります。当該項目のチェックを外してください。

最終実行状況が「成功」になったら準備完了です。

DMO へのマッピング

取り込んだ生データを、AIが理解できる標準的な形(DMO: データモデルオブジェクト)に変換します。

  • マッピング先: Knowledge Article Version DMO (または類似の標準DMO)
  • 重要なマッピング項目:
    • Knowledge Article Version ID (CRM) → Knowledge Article Version ID (DMO)
    • Title (CRM) → Name (DMO)
    • Body__c (CRM) → Article Content (DMO) ※ここが回答のソースになります
    • Summary (CRM) → Description (DMO)
    • Site_URL__c (CRM) → URL (DMO)
    • Publication Status (CRM) → Publication Status (DMO、カスタム)
    • Article Total View Count (CRM) → Article Total View Count (DMO、カスタム)
    • 他の項目は自動的なマッピングに任せます。
  • データマッピング開始
  • DMOを選択
  • データマッピング
  • DMOを確認

データストリームの詳細画面でデータマッピングの「開始」ボタンを押します。

  • オブジェクトの選択
  • Knowledge Article Version

右側のオブジェクト(DMO)が選ばれていません。「オブジェクトの選択」を押します。

マッピング先には Knowledge Article Version DMO を選択します。

DMO側の新規項目として以下の項目を作成しています。
Publication Status (テキスト)
Article Total View Count (数値)

取り込んだレコードがDMOに格納されている様子をデータエクスプローラーで確認できます。

検索インデックスの作成 (Vector Search)

ここが RAG (検索拡張生成) の要です。

  1. 「検索インデックス (Search Index)」 タブを開き、新規作成します。
  2. ハイブリッド検索を選択します。
  3. チャンク化: 本文と概要をチャンク化します。
  4. ベクトル化: Multilingual E5 Large Embedding Model を選択します。
  5. 絞り込み: フリーワードで検索する可能性がある項目を選択します。
  6. ランキング: Last Modified Date をランキングに使用します。
  • 検索インデックスを作成
  • 検索インデックスビルダー

「高度な設定」を選びましょう。

  • 検索種別
  • チャンク
  • ベクトル化
  • 絞り込む項目
  • ランキング

検索種別は「ハイブリッド検索」、ソースは Knowledge Article Version

Article ContentDescription がチャンク化の対象です。

Multilingual E5 Large Embedding Model は日本語を含む非ラテン系言語のコンテキスト解釈に使うモデルです。

Language / Article Number / Last Modified Date / Publication Status / URL を選びました。

POPULARITY で Article Total View Count を選択しています。

Pro’s Note

鮮度も捨てがたい場合: もし「新しい記事も大事にしたい」場合は、ランキング設定で Article Total View CountLast Modified Date の両方を追加することも可能です。 ただし、Agentforce の挙動としては「人気記事」を優先させた方が、一般的に”ハルシネーション(的外れな回答)”が減る傾向にあります。

鮮度 ≠ 正解: 3年前に書かれた「製品の基本仕様」の記事は、更新されていなくても「正解」であり続けます。日付でソートすると、昨日更新された「些細な不具合のお知らせ」が上位に来てしまい、AIがそれを回答に使ってしまうリスクがあります。

集合知: 多くの人が見ている記事は、それだけ「役に立つ(解決につながる)」可能性が高いです。

レトリーバーの作成 (Einstein Studio)

最後に、作成したDMOを使用してレトリーバーを作成する操作です。

  1. 「Einstein Studio」 タブを開き、[新規レトリーバー] > [個別レトリーバー] > [次へ] を選択します。
  2. データソースにData Cloudを選択し、データモデルと検索インデックスに Knowledge Article Version を選択し、[次へ]。
  3. [返されるドキュメントを絞り込む] を選び、Publication Status = Online となるように設定します。公開済みの記事だけを返す設定です。[次へ]
  4. 返される件数と項目を設定します。[次へ] > [保存]
  5. 最後に、レトリーバーを有効化します。
  • レトリーバー種別を選択
  • 検索条件を定義
  • 返却件数と項目を設定

ここで選択肢として表示される項目は、インデックス検索の作成時に「絞り込む項目」として選択した項目です。

Pro’s Note

「動的」にチェックを入れると、実行時に値が指定される検索条件になります。プロンプトビルダーでは、プロンプトテンプレートでレトリーバーを設定するときに、動的検索条件がプロンプト入力にマッピングされ、実行時に解決されます。たとえば、動的検索条件が「AccountID=xyz」の場合、レトリーバーはプロンプトが解決される取引先に関連付けられたコンテンツのみを返します。

これで、図の青色部分 [Step 1: データ基盤] が完成しました。

Step 2: アクションの作成 (Flow)

現在地
AIに「手足」を与えるフェーズです。CRMの注文データを検索する能力を実装します。

次に、AIがSalesforce内のデータを操作するための「道具」を作ります。これには Flow を使用します。

自動起動フローの作成

Agentforce から呼び出すフローは、画面を持たない 「自動起動フロー (Autolaunched Flow)」 である必要があります。

  • フローの目的: 注文番号を受け取り、ステータスを返す。
  • 入力変数: input_Text_OrderNumber (テキスト / 入力で使用可能)
  • 出力変数: output_Text_StatusMessage (テキスト / 出力で使用可能)

フローのロジック構築

  1. レコードを取得 (Get Records):
    • オブジェクト: Order
    • 条件: OrderNumber = {!input_Text_OrderNumber}
  2. 決定 (Decision): 注文レコードが見つかったかどうか?
  3. 割り当て (Assignment):
    • 見つかった場合: 出力変数 output_Text_StatusMessage に「ステータスは {!Get_Order.Status} です。」を代入。
    • 見つからない場合: 「注文が見つかりませんでした。」を代入。
  • レコードを取得
  • 決定
  • 割り当て

注文番号で注文レコードを取得 get_OrderByOrderNumber

注文レコードが見つかった? decision_HasOrderRecordFound

  • 見つかった
  • 見つからなかった

見つかったメッセージを設定 assignment_FoundMessage

見つからなかったメッセージを設定 assignment_NotFoundMessage

これで、図の赤色部分 [Step 2: アクション] が完成しました。

Step 3: エージェントの構築 (Agent Builder)

現在地
AIの「脳」を作るフェーズです。Step 1とStep 2で作った道具を、いつ使うかAIに教えます。

プロンプトテンプレートを作成

[設定] > [プロンプトビルダー] から「プロンプトビルダー」を開き、プロンプトテンプレートを作成します。

  1. [新規プロンプトテンプレート] ボタンを押す。
  2. プロンプトテンプレート種別に「Flex」を選び、情報を入力して [次へ]
    ※入力値として Customer Question (Customer_Question) を自由テキストで用意します。
  • 新規プロンプトテンプレート
  • 情報を入力

次に、プロンプトを書きましょう。

あなたは {!$Organization.Name} のカスタマーサポートエージェントです。
以下の「検索結果」の情報**のみ**を使用して、ユーザーの質問に回答してください。
検索結果に情報がない場合は、正直に「情報が見つかりませんでした」と答えてください。
推測で回答したり、自身の知識で補完したりしないでください。

# 回答のガイドライン
1. 検索結果の情報**のみ**を使用してください。
2. 専門的かつ分かりやすい言葉遣いで回答してください。
3.**回答の最後には、必ず情報の根拠となった記事のURLを以下の形式で記載してください**
形式: 参考記事: [URL]

# 検索結果 (Data Cloud):
●●●

# ユーザーの質問:
△△△

# 回答:
  1. ●●●の部分を入れ替えます。[リソースを挿入] > [検索] > [Step 1で作成したレトリーバー] を選択して挿入します。
  2. 挿入されたリソースをクリックするとレトリーバーの設定が開きます。検索テキストに [自由テキスト] > [Customer Question] を選択して挿入します。出力項目と結果数を選択します。
  3. △△△の部分を入れ替えます。[リソースを挿入] > [自由テキスト] > [Customer Question] を選択して挿入します。
  4. Customer Question を入力してプレビューしてみましょう。
  5. 問題なければ有効化します。
  • ●●●を入れ替え
  • レトリーバー設定
  • △△△を入れ替え
  • プレビュー
DXforce Point

AIは曖昧な指示だとサボる

上にテキストで例示したプロンプトと、画面キャプチャ内のプロンプトの違いは何でしょう?実はテキストの方はプロンプトに以下の文言を追加しています。

# 回答のガイドライン
1. 検索結果の情報**のみ**を使用してください。
2. 専門的かつ分かりやすい言葉遣いで回答してください。
3.**回答の最後には、必ず情報の根拠となった記事のURLを以下の形式で記載してください**
形式: 参考記事: [URL]

LLMは「指示されたこと」には忠実に従いますが、「指示されていないこと(リンクを付けるか付けないか)」はその時の確率で判断します。 「必ず記載してください(Always include)」 と明記し、さらに 「形式(Format)」 を指定することで、AIの迷いを断ち切り、意図通りの出力を安定させることができます。

Agentforce Service Agent を作成

[設定] > [Agentforce エージェント] から「Agent Builder」を開き、エージェントを教育します。

  1. [+新しいエージェント] ボタンを押す。
  2. [テンプレートから作成] > [Agentforce Service Agent] > [次へ]
  3. 表示されるすべてのトピックの [追加済み] を [追加] にして [次へ]
  4. 各欄に入力して [次へ]
  5. データソースを選択せず [作成]
  • 新しいエージェント
  • テンプレートから作成
  • トピック
  • カスタマイズ

ご参考までに、以下にエージェントジョブの入力例を示します。

説明
自律型AIエージェントとして、顧客からの注文状況の照会に対応し、ナレッジベースを活用して製品やサービスに関する質問に回答します。複雑な問題は人間のエージェントにエスカレーションします。

ロール
あなたは DXforce.site 社の親切で知識豊富なカスタマーサポートエージェントです。 あなたの目的は、顧客の「注文状況」を確認して配送予定などを伝えること、および「製品や技術」に関する質問にナレッジベースを使って回答することです。
【行動指針】
常に丁寧な「です・ます」調で、共感を持って接してください。
ナレッジベースやCRMデータにない情報は、推測で答えず、正直に「情報が見つかりませんでした」と伝えてください。
顧客の課題解決を最優先し、簡潔かつ的確な回答を心がけてください。

会社
私たち DXforce.site 社は、Salesforce Experience Cloud の技術コンサルティングに加え、公式トレーニング教材、専門書籍、およびオリジナルグッズのオンライン販売を行う企業です。 私たちはオンラインストアを通じて顧客からの注文を受け付け、受注から配送までのフルフィルメント業務を行っています。顧客はポータルサイトを通じて、商品の購入や配送状況の確認を行うことができます。

製品サポート用トピック (Knowledge検索用)

先ほど作成したプロンプトテンプレートを呼び出すアクションとトピックを作りましょう。

  • トピック名: Product Support (Product_Support)
  • 分類の説明: 製品の仕様、機能、使用方法、トラブルシューティング、または返品ポリシーに関する質問に対し、ナレッジベースを活用して正確な情報を提供します。このトピックは、ユーザーが製品に関する具体的な問題や疑問を解決するためのサポートを目的としています。
  • 範囲: このトピックのジョブは、ユーザーの質問に関連する情報をナレッジベースから検索し、その内容に基づいて正確な回答を生成することのみを目的としています。
  • 指示:
    • 回答の生成: Generate Knowledge Answer を実行し、その結果に基づいて回答を作成してください。検索結果にない情報は回答に含めないでください。
    • トーン: 専門的かつ分かりやすい言葉遣いで回答してください。
    • 不明な場合: 関連する情報が見つからない場合は、正直に「情報が見つかりませんでした」と答えてください。
  • [次へ] > アクションを選択せずに [完了]

次に、作成したトピックに対してアクションを作成します。

  1. 作成したトピックを選択します。
  2. 「このトピックのアクション」タブを選択し、[新規] > [新規アクションを作成] をクリック。
  3. アクション種別として「プロンプトテンプレート」を選択し、「Generate Knowledge Answer」を選択します。
  4. [次へ] を押して、入力と出力を指定します。最後に [完了] します。
  • トピックを作成
  • アクションを選択しない
  • アクションを作成
  • プロンプトテンプレートを指定
  • 入力と出力を指定

Customer Question は、エージェントがアクションを呼び出す際に顧客からの質問をセットするように指示します。※ [ユーザーからデータを収集] のチェックは不要です(画像は誤り)。

プロンプトから返却された Prompt Response の値を顧客に出力したいので、[会話に表示] にチェックを入れます。

注文管理用トピック (Flow実行用)

次は、Step 2 で作ったフローを呼び出すトピックです。

  • トピック名: Order Management (Order_Management)
  • 分類の説明: 注文の配送状況、ステータス、到着予定日、または注文内容に関する問い合わせに対応し、注文番号を基にシステムから最新の情報を取得して提供します。このトピックは、ユーザーの注文に関する状況確認や詳細情報の提供を専門としています。
  • 範囲: このトピックのジョブは、ユーザーから注文番号を聞き出し、システムに照会して最新のステータスを回答することのみを目的としています。
  • 指示:
    • 必須情報の確認: このトピックのアクション「注文データを検索」を実行するには「注文番号」が必須です。ユーザーの発言に注文番号が含まれていない場合は、アクションを実行する前に必ず「注文番号を教えていただけますか?」と尋ねてください。
    • アクションの実行: 注文番号が得られたら、速やかに「注文データを検索」アクションを実行し、その結果(ステータスや配送日)をユーザーに丁寧に伝えてください。
    • 結果の報告: アクションの結果(ステータスや配送日)を、ユーザーに丁寧に伝えてください。
  • [次へ] > アクションを選択せずに [完了]

次に、作成したトピックに対してアクションを作成します。

  1. 作成したトピックを選択します。
  2. 「このトピックのアクション」タブを選択し、[新規] > [新規アクションを作成] をクリック。
  3. アクション種別として「フロー」を選択し、「注文データを検索」フローを選択します。
  4. [次へ] を押して、入力と出力を指定します。最後に [完了] します。
  • トピックを作成
  • アクションを選択しない
  • アクションを作成
  • プロンプトテンプレートを指定
  • 入力と出力を指定

エージェントアクション指示
注文番号(input_Text_OrderNumber)を入力キーとして受け取り、Salesforce の注文(Order)オブジェクトを検索して、現在のステータス、配送予定日、および配送追跡情報を返します。 ユーザーが「私の注文はどうなっていますか?」「荷物はいつ届きますか?」「発送は終わりましたか?」といった、特定の注文の進捗状況や詳細を知りたがっている場合に、このアクションを使用してください。

input_Text_OrderNumber は、エージェントがアクションを呼び出す際に顧客から得た注文番号をセットするように指示します。※ [ユーザーからデータを収集] のチェックは不要です(画像は誤り)。

プロンプトから返却された output_Text_StatusMessage の値を顧客に出力したいので、[会話に表示] にチェックを入れます。

エージェントの動作確認をする

それでは作成したエージェントをプレビューで動作させてみましょう。

DXforce Point

エージェントがアクションを実行する際に、注文 Order オブジェクトとナレッジ Knowledge__kav への参照権が必要です。
権限セットでエージェントユーザーにオブジェクトと必要な項目へ参照権を付与しておきましょう。
EinsteinServiceAgent User といった氏名になっているユーザーです。

製品サポートの問いかけをしてみる

ナレッジに登録しておいたデータに基づいて、うまく回答を返してくれました。

注文状況の確認をしてみる

ちゃんと注文番号を聞き出してからステータスを調べて返答していますね。

問題なさそうなので、最後にエージェントを有効化します。

Step 4: LWRサイトへの実装 (Experience Cloud)

現在地
最後に、完成したエージェントをWebサイト(LWR)に配置します。

サービスチャネルの定義

[設定] > [オムニチャネル] > [サービスチャネル] へ移動します。

デフォルトで Messaging のチャネルが存在するはずですが、もし存在しなければオブジェクトに「メッセージングセッション」を指定して作成してください。

プレゼンス状況の設定

[設定] > [オムニチャネル] > [プレゼンス状況] にて、例えば「Online」や「Available」といったステータスを作成します。
先ほど確認したチャネルを「選択済み」チャネルに含めるのを忘れないでください。

最後に、エージェントユーザーに割り当てている権限セットの「サービスプレゼンス状況のアクセス権」で該当のステータスを有効にしましょう。

  • プレゼンス状況を作成
  • 権限セットに付与

拡張オムニチャネルルーティング

[設定] > [オムニチャネル設定] から「オムニチャネル設定」を開きます。
[オムニチャネルの有効化] と[拡張オムニチャネルルーティング]をそれぞれオンにしましょう。

ルーティング設定

ルーティングが機能するためには、Salesforce 内部で作業負荷を管理するための設定も必要です。

  1. [設定] > [ルーティング設定] で新規作成。
  2. 設定名: Agentforce Service Agent
  3. ルーティング優先度: 1
  4. ルーティングモデル: 対応余力が最大
  5. 業務量種別: 継承
  6. 業務量単位: 2.00
  7. 保存

キューを作成

AIエージェントがエラーで停止した場合や、システム障害時にメッセージを受け取るための「人間のエージェント用キュー」を指定します。

  1. [設定] > [キュー] で新規作成。
  2. ルーティング設定: 上で作成したルーティング
  3. 選択されたオブジェクト: メッセージングセッション
  4. キューメンバーとしてエージェント以外のユーザーをセット
  5. 保存

オムニチャネルフロー(Omni-Flow)の設計と実装

「会話を Agentforce サービスエージェントにルーティング」というテンプレートがあります。
こちらを使用して簡易にフローを作成できます。

「作業を転送」の要素をクリックして、エージェントとキューを指定しましょう。
欄が出てこない時は一度サービスチャネル(Messaging)の値を削除して、もう一度 Messaging を選択すると表示されます。

  • テンプレートを選択
  • エージェントとキューを指定

組み込みメッセージング (MIAW) の設定

従来のチャットボットとは接続方式が異なります。

作業の前に、あらかじめデジタルエクスペリエンスを有効にしておいてください(サイトの有無は問いません)。

  1. [設定] > [メッセージング設定] でメッセージングのトグルをオンにして「新規チャネル」を作成。
  2. ネイティブチャネル種別: 拡張チャット
  3. チャネルに名前を付ける
    • チャネル名: Agentforce Service Agent Channel
    • リリース種別: web
    • ドメイン: (mydomain).my.site.com
  4. チャネルルーティング: あらかじめ作成した Agentforce Service Agent とキューを割り当てます。
  5. 保存
  • メッセージング設定
  • チャネルに名前を付ける
  • チャネルルーティング

組み込みサービスリリースを公開

[設定] > [組み込みサービスリリース] で、先ほど作成したチャネルと同じ名称のリンクをクリックします。画面右上の [公開] を押して公開しましょう。

エージェントとの接続が完了

エージェントビルダーで接続設定を見ると、インバウンドルーティングとしてオムニフローが接続されていることを確認できます。

DXforce Point

今回は人間の担当者に転送(エスカレーション)しないエージェントを作成しています。
実際の現場ではエージェントが解決できない会話をエスカレーションできるように、ビルダーでトピックを作成することが求められます。

ビルダーへの配置

  1. LWRサイトのビルダーを開きます。
  2. コンポーネントパネルから 「Embedded Messaging (組み込みメッセージング)」 を検索し、画面上のフッターのセクション内にドラッグ&ドロップします。
  3. プロパティで、作成した「組み込み Web リリース」を選択します。
DXforce Point

フッターに配置することで、ユーザーがサイト内のどのページ(トップページ、記事詳細、マイページなど)に移動しても、チャットウィンドウの状態が維持され、会話が途切れることなく継続されます。

続いて、サイトのセキュリティポリシー (CSP) の調整をします。

  1. LWRサイトのビルダーの左側にある歯車 > セキュリティーとプライバシーを開きます。
  2. コンテンツセキュリティポリシー (CSP) のセキュリティレベルを「厳格な CSP」から「緩和された CSP」に変更します。

上記の設定が完了したら、右上の [公開] をクリックします。

セキュリティ (CORS)

[設定] > [CORS] にて、サイトのドメインが許可リストに存在することを確認します。

まとめ:要素がつながった瞬間

おつかれさまでした。これで全てのピースが埋まりました。
[設定] > [すべてのサイト] で、公開済みのサイトのURLをクリックしてサイトを開きます。チャットで話しかけてみてください。

  • 「△△について教えて」と言えば、Data Cloud (Step 1) から知識を引き出し、
  • 「注文状況を知りたい」と言えば、Agent (Step 3) が判断して番号を聞き返し、Flow (Step 2) が検索して答えてくれるはずです。
  • ナレッジを尋ねる
  • 注文状況を尋ねる

これが、LWR × Agentforce が実現する、次世代の顧客体験です。 一つ一つの設定は複雑ですが、このガイドを地図にして、ぜひ実装に挑戦してみてください。

読者の声

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