SalesforceのAI機能を外部システムから呼び出す!REST APIを使ったプロンプトテンプレート活用術


Salesforceに搭載されている生成AI機能、「Einstein 生成AI」。その中核を担うのが「プロンプトテンプレート」です。Salesforceの画面上から対話形式で利用できるだけでなく、実はREST APIを通じて外部のシステムから直接呼び出すことが可能です。

これにより、例えば以下のようなユースケースが考えられます。

  •  外部システムとの連携
  • 既存の顧客管理システムやEコマースサイトから、SalesforceのAI機能を呼び出して、顧客対応の一次返信を自動生成する。
  •  
  • 定型業務の自動化
  • スプレッドシートやSlackなど、普段使っているツールから特定のキーワードをトリガーに、報告書やメールのドラフトを自動作成する。

本記事では、このプロンプトテンプレートをREST API経由で実行する方法について、具体的なリクエスト・レスポンスの例を交えながら詳しく解説します。

本記事で解説する処理の全体像は以下の通りです。外部システムからREST API経由でSalesforceのプロンプトテンプレートを呼び出し、その結果を受け取る流れを示しています。


プロンプトテンプレートの準備

まずは、APIで呼び出すプロンプトテンプレートをSalesforce上で作成します。今回は例として、顧客からの問い合わせメールを要約し、次のアクションを提案するプロンプトを作成しました。

このプロンプトテンプレートは、以下の3つのタスクを実行します。

  1. 1. 問い合わせ内容の要点を抽出する
  2. 2. 顧客の感情を分析する(ポジティブ/ネガティブ/ニュートラル)
  3. 3. 推奨される次のアクションを提示する

Input:subject  Input:body という2つの入力変数を受け取り、それを元にAIが回答を生成する仕組みです。


REST APIの実行

プロンプトテンプレートの準備ができたら、いよいよREST APIを呼び出します。

※認証について

REST APIを呼び出すには、事前にSalesforceで「外部クライアントアプリケーション」を作成し、呼び出し元アプリケーションの認証ポイントを作成しておく必要があります。

登録した接続アプリケーシンを介してOAuth 2.0などの認証フローを実行し、APIリクエストのヘッダーに含めるアクセストークンを取得してください。本記事ではリクエスト/レスポンスの構造に焦点を当てているため、認証に関する詳細な手順は割愛します。

ンドポイント

プロンプトテンプレートを実行するためのエンドポイントは以下です。このエンドポイントにPOSTリクエストを送信します。

https://{Salesforce組織のドメイン}/services/data/v{xx.x}/einstein/prompt-templates/{promptTemplateApiNameOrId}/generations
  •  
  • {Salesforce組織のドメイン}
    • your-company.my.salesforce.com のような、お使いのSalesforce組織のMy Domainを指定します。
    • v{xx.x}
    • v63.0 のようにAPIバージョンを指定します。
    {promptTemplateApiNameOrId}
    • 実行したいプロンプトテンプレートのAPI参照名またはIDを指定します。これはプロンプトテンプレートの詳細ページで確認できます。

     

  • リクエストボディ

リクエストボディには、プロンプトテンプレートの実行に必要な情報を指定します。

詳細については、Salesforce開発者ドキュメント (Einstein Prompt Template Generations Input) をご参照ください。

リクエストBodyのサンプル

主要なプロパティは以下の通りです。

プロパティ名 型・必須 説明
isPreview  Boolean (必須)  falseを指定するとプロンプトテンプレートを解決し、LLMからの応答を生成します。trueを指定するとLLMへのリクエストは行わず、解決されたプロンプトテキストのみを返します。 
inputParams  Map (必須)  プロンプトテンプレート内の変数を解決するためのパラメータと値を指定します。valueMapの中に、テンプレートで定義した入力変数(例: Input:subject)と、その値をセットで渡します。
additionalConfig Object (必須)

LLMプロバイダー向けの追加構成情報を指定します。詳細についてはドキュメント参照。

applicationName: 呼び出し元アプリケーションを識別するための名前。プロンプトテンプレートの呼び出しでは「PromptTemplateGenerationsInvocable」を指定。

(補足)今回は例示していませんが、additionalConfig内にadditionalParametersプロパティを指定することで、LLMプロバイダ特有のパラメータ(例:応答を必ずJSON形式で出力させる等)も個別に渡せます。

 

    • レスポンス

上記リクエストを送信すると、以下のようなレスポンスが返ってきます。(※以下画像では結果データをVSCode上で見やすく整形)

responseMessages[0].contextに、プロンプトテンプレートの実行結果である要約、感情分析、推奨アクションが格納されています。このように、JSON形式で構造化されたデータが返ってくるため、後続の処理で扱いやすいのが特徴です。

主に使用するのは生成結果が格納されている、responseMessagesプロパティになるかと思いますが、各項目の詳細については、Salesforce開発者ドキュメントもご参照ください。

レスポンスの中身のサンプルは以下のようなものになります。

レスポンス全文を表示する
{
    "generations": [
        {
            "text": "## 問い合わせ要点\n- 顧客は「スーパーガジェットX」の注文状況について問い合わせている。\n- 注文から1週間経過しているが、まだ発送の連絡がない。\n- ウェブサイトの情報に基づき、発送が遅れていることに対して心配している。\n\n## 顧客の感情\nネガティブ\n\n## 推奨される次のアクション\n発送状況を確認し、顧客に現在の状況と予想される配送日を伝える。",
            "parameters": "{finish_reason=stop, refusal=null, annotations=[], index=0, logprobs=null}",
            "responseId": "c8c3a753-327c-4253-af8c-3446af66226d",
            "safetyScoreRepresentation": {
                "hateScore": 0.0,
                "physicalScore": 0.0,
                "profanityScore": 0.0,
                "safetyScore": 0.9999987,
                "sexualScore": 0.0,
                "toxicityScore": 0.0,
                "violenceScore": 0.0
            },
            "contentQualityRepresentation": {
                "isToxicityDetected": false
            }
        }
    ],
    "isSummarized": null,
    "parameters": null,
    "prompt": "あなたは優秀なカスタマーサポートのエキスパートです。\n以下の顧客からの問い合わせメールを分析し、下記のフォーマットで要約してください。\n\n# 指示\n* 問い合わせの要点を3つの箇条書きでまとめてください。\n* 顧客の感情(ポジティブ、ネガティブ、ニュートラル)を判定してください。\n* この問い合わせに対して、どのような最初のアクションを取るべきか提案してください。\n\n# 出力フォーマット\n## 問い合わせ要点\n-\n-\n-\n\n## 顧客の感情\n[ここに感情を記載]\n\n## 推奨される次のアクション\n[ここに具体的なアクションを記載]\n\n# 顧客からの問い合わせメール\n件名: 製品の配送状況について\n本文: お世話になります。\n先週注文した「スーパーガジェットX」(注文番号: 12345)ですが、まだ発送の連絡がありません。\nウェブサイトでは2〜3営業日で発送と記載があったので、少し心配になっています。\n現在の状況と、いつ頃届く見込みか教えていただけますでしょうか。楽しみにしているので、よろしくお願いします。\n",
    "promptTemplateDevName": "0hfgL000002rn4fQAA",
    "requestId": "chatcmpl-BnxbnpdrGApOKL82CC7F48QOmoxEd",
    "requestMessages": [
        {
            "content": "あなたは優秀なカスタマーサポートのエキスパートです。\n以下の顧客からの問い合わせメールを分析し、下記のフォーマットで要約してください。\n\n# 指示\n* 問い合わせの要点を3つの箇条書きでまとめてください。\n* 顧客の感情(ポジティブ、ネガティブ、ニュートラル)を判定してください。\n* この問い合わせに対して、どのような最初のアクションを取るべきか提案してください。\n\n# 出力フォーマット\n## 問い合わせ要点\n-\n-\n-\n\n## 顧客の感情\n[ここに感情を記載]\n\n## 推奨される次のアクション\n[ここに具体的なアクションを記載]\n\n# 顧客からの問い合わせメール\n件名: 製品の配送状況について\n本文: お世話になります。\n先週注文した「スーパーガジェットX」(注文番号: 12345)ですが、まだ発送の連絡がありません。\nウェブサイトでは2〜3営業日で発送と記載があったので、少し心配になっています。\n現在の状況と、いつ頃届く見込みか教えていただけますでしょうか。楽しみにしているので、よろしくお願いします。\n",
            "moderationSettings": {
                "enableModeration": true
            },
            "role": "USER"
        }
    ],
    "responseMessages": [
        {
            "content": "## 問い合わせ要点\n- 顧客は「スーパーガジェットX」の注文状況について問い合わせている。\n- 注文から1週間経過しているが、まだ発送の連絡がない。\n- ウェブサイトの情報に基づき、発送が遅れていることに対して心配している。\n\n## 顧客の感情\nネガティブ\n\n## 推奨される次のアクション\n発送状況を確認し、顧客に現在の状況と予想される配送日を伝える。"
        }
    ]
}

 


とめ

本記事では、SalesforceのプロンプトテンプレートをREST API経由で呼び出す方法をご紹介しました。

この連携により、Salesforceの強力なAI機能を、既存の業務フローや外部システムに柔軟に組み込むことができます。アイデア次第で様々な業務の自動化、効率化が実現できるかと思います。

皆さんもぜひ、このAPIを活用して、自社のビジネスにAIの力を取り入れてみてはいかがでしょうか。

お問い合わせ

CONTACT

お問い合わせ

ご質問・ご相談・お見積もり依頼など、
お気軽にお問い合わせください。
お問い合わせフォーム回答後に、
Agentforce AI エージェントをご体験いただけます。