Skip to main content

項目生成プロンプトテンプレートを構築する

学習の目的

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

  • プロンプトビルダーを使用して項目生成プロンプトテンプレートを作成する。
  • プロンプトテンプレートにデータを送信するフローを作成する。
  • Flex プロンプトテンプレートを作成する。

項目生成プロンプトテンプレートにはレコード項目との直接リレーションを設定できます。Lightning アプリケーションビルダー (LAB) を使用すれば、Einstein ボタン (「Einstein ボタンアイコン」) をクリックして割り当てられたプロンプトテンプレートをトリガーし、LLM にプロンプトを送信して特定の項目に応答を返すことができます。

Linda は、カスタマーサポートエージェントが Cloud Kicks のどの顧客にも速やかに対応できるようにしたいと考えます。そこで、エージェントがケースの概要項目の Einstein ボタンをクリックすれば、関連するケースコメント履歴の概要が生成される項目生成プロンプトテンプレートを使用することにします。

[Case AI Summary (ケースの AI 概要)] 項目と Einstein ボタンが表示されているケースの詳細

Linda が Einstein ボタンを設定して LLM 応答を生成するためには、次の 2 つが必要です。

  1. プロンプトビルダーで作成する項目生成プロンプトテンプレート
  2. コンポーネントに追加して、LAB で設定する項目

項目生成プロンプトテンプレートを作成する

Linda はプロンプトビルダーを開いて、新しいプロンプトテンプレートを作成します。プロンプトテンプレート種別を選択し、次の情報を選択してテンプレートの設定を完了します。

  1. Prompt Template Type (プロンプトテンプレート種別): Field Generation (項目生成)
  2. Prompt Template Name (プロンプトテンプレート名): Case Comments Summary (ケースコメントの概要)
  3. API Name (API 参照名): Case_Comments_Summary
  4. Template Description (テンプレートの説明): Summary of case details. (ケースの詳細の概要)
  5. Object (オブジェクト): Case (ケース)
  6. Object Field (オブジェクト項目): Case_AI_Summary__c

プロンプトテンプレートの設定が完了したら、テンプレートワークスペースでプロンプトテンプレートを作成します。

あなたはサポート担当で、顧客と会社のサポート担当間で交わされたケースに関するやり取りの簡単な概要を作成するタスクを任されています。

[Save (保存)][Activate (有効化)] の順にクリックして、LAB 内のテンプレートにアクセスします。Linda はすぐに使えるプロンプトテンプレートを使用して、ケースレコードページに [Case AI Summary (ケースの AI 概要)] 項目を作成する必要があります。

LAB でプロンプトテンプレートに接続する項目を設定する

Einstein ボタンを使用してレコードで項目生成プロンプトテンプレートをトリガーするには、Linda が LAB でその項目を設定する必要があります。最初に、既存の Lightning レコードページを選択するか、新規作成します。

Linda は選択したページにレコードの詳細コンポーネントまたは項目セクションコンポーネントをドラッグできます。

[Case Information (ケース情報)] に [Case AI Summary (ケースの AI 概要)] 項目を追加する Lightning アプリケーションビルダーのビュー

  • 項目セクションコンポーネントの場合: Linda は項目セクションコンポーネントにフォーム項目をドラッグできます。
  • レコードの詳細コンポーネントの場合: Linda はコンポーネントを動的フォームに移行する必要があります。この移行を実行する場合は、右側のパネルの [Upgrade (アップグレード)] を選択して、アップグレードウィザードの手順に従います。この変更を行うと、既存のレコードページの項目を個別のコンポーネントとして設定できるようになります。

Linda は、変更可能なテキスト、テキストエリア、ロングテキストエリア、リッチテキストエリアなどのデータ型の項目生成をサポートする任意のフォーム項目を選択できます。項目生成プロンプトは、参照のみの項目とは互換性がありません。

項目プロパティパネルの [Einstein Generative AI (Einstein 生成 AI)] セクションで、フォーム項目に割り当てる項目生成プロンプトテンプレートを選択します。

Lightning アプリケーションビルダーの [Case AI Summary (ケースの AI 概要)] 項目のプロパティパネル

Linda は続いて、レコードページを保存して有効にします。

Linda は、自分のプロンプトテンプレートにリアルタイムデータを組み込んで、関連性を高める必要があることを理解しています。こうした情報はフローから呼び出すことができます。

プロンプトテンプレートにフローを追加する

Flow Builder を使用すれば、システム管理者がテンプレートトリガープロンプトフローを作成して、コードをまったく記述せずにプロンプトテンプレートに複雑なロジックを組み込むことができます。Linda は Flow Builder で、[Case Comments Summary (ケースコメントの概要)] テンプレート用のテンプレートトリガープロンプトフローを作成します。[Template-Triggered Prompt Flow (テンプレートトリガープロンプトフロー)] 種別のフローはプロンプトテンプレートからのみ実行されます。

[Template-Triggered Prompt Flow (テンプレートトリガープロンプトフロー)] が選択されている [Select Type (種別の選択)] ウィンドウ。

Flow Builder が読み込まれた後に、Linda は [Start (開始)] パネルに次の情報を入力します。

  1. Select Input Type (入力種別を選択): Automatic Inputs (自動入力)
  2. Prompt Template Type (プロンプトテンプレート種別): Field Generation Template Capability (項目生成テンプレート機能)
    Linda はプロンプトテンプレートを作成するときにプロンプトテンプレート種別として [Field Generation (項目生成)] を選択しました。そのためここでは、それに合わせてプロンプトテンプレート種別を設定します。
  3. Object (オブジェクト): Case (ケース)

前述の説明に対応する [Start (開始)] 要素の設定パネル。

Linda はプロンプトにケースのすべてのコメントを含めたいと考えているため、それを取得してコレクション内に保存するために [Get Records (レコードを取得)] 要素を追加します。

  1. Label (表示ラベル): Get Case Comments (ケースコメントを取得)
  2. Object (オブジェクト): Case Comment (ケースコメント)
  3. Field (項目): ParentId
  4. Operator (演算子): Equals (次の文字列と一致する)
  5. Value (値): [$Input][RelatedEntity][Id] の順に選択します。
  6. How Many Records to Store (保存するレコード数): All records (すべてのレコード)

前述の説明に対応する [Get Records (レコードを取得)] 要素の設定パネル。

Linda はケースにコメントがない場合にはケースの概要にそのことを記載したいと考えているため、[Get Records (レコードを取得)] 要素の後に [Decision (決定)] 要素を追加します。

  1. Label (表示ラベル): Comments Found? (コメントが見つかったか?)
  2. 最初の結果の詳細:
    1. Label (表示ラベル): Yes (はい)
    2. Resource (リソース): Case Comments from Get Case Comments ([ケースコメントを取得]からのケースコメント)
    3. Operator (演算子): Is Empty (空)
    4. Value (値): False
  3. デフォルトの結果の表示ラベル: No (いいえ)

この要素はフローを 2 つのパスに分岐します。1 つは現在のレコードでコメントが見つかった場合にフローがたどるパスで、もう 1 つはコメントが見つからなかった場合にたどるパスです。

前述の説明に対応する [Decision (決定)] 要素の設定。

収集したコメントデータを要約のためにプロンプトに送信するために、Linda は [Add Prompt Instructions (プロンプト手順を追加)] 要素を使用します。ただし、この要素はコメントデータを現在の形式で受け取ることはできません。[Get Case Comments (ケースコメントを取得)] 要素によって作成されたコレクションには関連するケースコメントレコードのすべてのデータが含まれています。必要なのはコメントのみであるため、まずフローで各レコードのコメントテキストを他の部分から分離する必要があります。さらに、[Add Prompt Instructions (プロンプト手順を追加)] 要素が受け取るデータは一度に 1 レコードにする必要があります。

この状況に最適なのがループです。ループはレコードを参照し、そのレコードに何らかの操作を行い、コレクション内のすべてのレコードを処理するまで、そのプロセスを繰り返します。Linda は [Yes (はい)] パスに [Loop (ループ)] 要素を追加します。

  1. Label (表示ラベル): Loop Comments (コメントをループ)
  2. Collection Variable (コレクション変数): Case Comments from Get Case Comments ([ケースコメントを取得] からのケースコメント)
  3. Direction (方向): First item to last item (最初の項目から最後の項目へ)

次に Linda は [Yes (はい)] パスに [Add Prompt Instruction (プロンプト手順を追加)] 要素を追加します。[Add Prompt Instruction (プロンプト手順を追加)] 要素はフローとプロンプトの間の直接チャネルのようなものだと考えることができます。この要素のプロンプト手順内のすべてが、フローを実行したプロンプトに直接マージされます。たとえば、[Add Prompt Instruction (プロンプト手順を追加)] 要素の [Prompt Instructions (プロンプト手順)] に数式「{!test}」が含まれていた場合、プロンプトはその数式の結果をプロンプトテンプレートに追加します。

  1. Label (表示ラベル): Send Comments to Prompt (プロンプトにコメントを送信)
  2. Prompt Instructions (プロンプト手順): Summarize the case's comments using (次のデータを使用してケースのコメントを要約します) と入力します。
  3. [Insert a resource (リソースを挿入)] 項目をクリックし、[Current Item from Loop Loop_Comments (ループ Loop_Comments の現在の項目)] を選択し、[CommentBody] を選択します。
    このリソースは現在のケースコメントのテキストをプロンプト手順にマージします。

前述の説明に対応する [Send Comments to Prompt (プロンプトにコメントを送信)] 要素の設定パネル。

[No (いいえ)] パスに、Linda は別の [Add Prompt Instructions (プロンプト手順を追加)] 要素を追加します。この要素はコメントが見つからなかったことをプロンプトテンプレートに通知します。

  1. Label (表示ラベル): No Comments for Prompt (プロンプトのコメントなし)
  2. Prompt Instructions (プロンプト手順): The case has no comments to summarize. (ケースには要約するコメントがありません。)

Linda のフローは次のようになります。

項目生成プロンプトテンプレートで使用する [Get Case Summary (ケースの概要の取得)] フローの完成した状態。

このフローを保存して有効にすると、すぐにプロンプトビルダーで、オブジェクトがケースである任意の項目生成プロンプトテンプレートに使用できるようになります。

Flow Builder でこのフローを有効にした後、Linda がプロンプトテンプレートワークスペースの [Resources (リソース)] リストに移動すると、このフローがリソースカテゴリとして表示されています。[Flows (フロー)] を選択すると、新しい [Get Case Summary (ケースの概要の取得)] テンプレートトリガープロンプトフローが表示されます。

[Flows (フロー)] オプションが表示されている [Resources (リソース)] 選択リスト

[Get Case Summary (ケースの概要の取得)] を選択すると、新しいフローがプロンプトテンプレートに {!$Flow:Get_Case_Summary.Prompt} として挿入されます。

あなたはサポート担当で、顧客と会社のサポート担当間で交わされたケースに関するやり取りの簡単な概要を作成するタスクを任されています。

"""

ケースデータ:

{!$Flow:Get_Case_Summary.Prompt}

"""

これで Linda はプロンプトテンプレートをテストして、結果を確認することができます。

Flex プロンプトテンプレートを構築する

これまでに、セールスメールプロンプトテンプレートと項目作成プロンプトテンプレートについて説明しました。他方、特定のユースケースにこの 2 つのテンプレートが適さない場合でも、プロンプトビルダーはあらゆるシナリオに柔軟に対応できるようになっています。他のプロンプトテンプレートとは異なり、Flex テンプレートには入力が事前定義されておらず、テンプレートの作成時に各自が選択します。プロンプトビルダーには、最大 5 つの入力を Flex テンプレートに追加するオプションがあります。一度定義すると、定義した入力がリソースピッカーに表示され、プロンプトテンプレートが差し込み項目を使用してこの入力を参照できます。

Linda はプロンプトビルダーを使用して、取引先名、納入商品の詳細、取引先責任者情報に基づく商品説明を作成したいと考えています。項目作成プロンプトテンプレートには、数 (3) や種別 (取引先、納入商品、取引先責任者) など、必要とする入力の選択肢がないため、Linda は Flex プロンプトテンプレートを作成することにします。設定を終えたら、プロンプトテンプレートを作成します。

  1. Prompt Template Type (プロンプトテンプレート種別): Flex
  2. Prompt Template Name (プロンプトテンプレート名): Product Details (商品の詳細)
  3. API Name (API 参照名): Product_Details
  4. Template Description (テンプレートの説明): Information about product (商品に関する情報)
  5. 取引先情報のリソースを定義します。
    • Name (名前): Account Info (取引先情報)
    • API Name (API 参照名): Account_Info
    • オブジェクト: 取引先
  6. 納入商品情報のリソースを定義します。
    • Name (名前): Asset Info (納入商品情報)
    • API Name (API 参照名): Asset_Info
    • Object (オブジェクト): Asset (納入商品)
  7. 取引先責任者情報のリソースを定義します。
    • Name (名前): Contact Info (取引先責任者情報)
    • API Name (API 参照名): Contact_Info
    • Object (オブジェクト): Contact (取引先責任者)

以下の情報を使用して、商品の詳細な説明を記述してください。

取引先名は {!$Input:Account_Info.Name} です。

商品情報は {!$Input:Asset_Info.Description} です。

取引先責任者情報は {!$Input:Contact_Info.Name} です。

上出来です。プロンプトビルダーが日常のビジネスニーズに柔軟に対応できることを学習しました。フローを使用する場合でも、Apexクラスを作成する場合でも、プロンプトビルダーによって日々の作業に費やす時間を最小限に抑えることができます。

リソース

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

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

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