Administrator 練習問題 Q296
プラットフォーム管理者が新しいプロンプトテンプレートを作成してテストしていますが、テストするたびに異なる応答が返ってきます。プロンプトテンプレートが実行ごとに異なる応答を返すのはなぜですか?
左の○で回答を選択。本文を押すと横線で除外でき、もう一度押すと戻せます。
1つ選択してください(0/1)
正答:B. Prompt Builder でプロンプトテンプレートを実行するたびに、大規模言語モデルへの一意な呼び出しが行われる
解説
前提知識
プロンプトとプロンプトテンプレートとは
プロンプトは、生成AI(大規模言語モデル、LLM)に送る指示文です。プロンプトテンプレートは、その指示文を再利用できる型にしたもので、顧客名やケースの内容などを差し込むマージ項目の穴を持ちます。 Salesforce公式は、テンプレートを使うたびにCRMデータがマージされ、一意でパーソナライズされたプロンプトが作られ、その結果としてパーソナライズされた応答が返ると説明しています。
Prompt Builder とは
Prompt Builderは、プロンプトテンプレートを作成・テスト・修正・管理するための設定ツールです。ワークスペースには主に3つの領域があります。
- プロンプト:指示文とリソース(マージ項目、フロー、関連リストなど)を定義する場所
- 解決済みプロンプト(Resolved Prompt):テストレコードの値を差し込んだ後の、実際にLLMへ送られる文面
- 応答(Response):その文面を送った結果としてLLMが返した出力 重要なのは、プレビューが「似たものを見せるシミュレーション」ではないという点です。公式は、テンプレートを修正してプレビューを再生成するたびに、解決済みプロンプトとLLMの応答が更新されると説明しています。
LLMは非決定的(nondeterministic)である
非決定的とは、同じ入力でも必ずしも同じ出力にならないということです。数式項目や検証ルールは、同じ値を入れれば常に同じ結果になりますが、LLMは確率的に文章を生成するため、表現や長さが毎回微妙に変わります。Salesforce公式も、LLMは非決定的であるため同じ入力に対しても応答が変わり得ると明記しています。
キャッシュとは
キャッシュは、一度得た結果を保存しておき、2回目以降はその保存値を使い回す仕組みです。もしPrompt Builderが応答をキャッシュしているなら、何度テストしても同じ文面が返るはずです。本問の現象(毎回違う)は、まさにキャッシュされていないことの証拠です。
設問の状況を分解する
- 管理者が新しいプロンプトテンプレートを作成した
- Prompt Builder上でテスト(プレビュー)を実行している
- 同じテンプレート・同じテストレコードでも、毎回応答が微妙に違う 初学者が誤解しやすいのは、この現象を「設定ミス」や「不具合」と捉えてしまう点です。これは不具合ではなく、生成AIの仕様です。プレビューのたびに本物のLLMを呼んでいるからこそ、毎回新しい応答が生成されます。 もう一つ大事なのは、解決済みプロンプトと応答を分けて見るという切り分けです。解決済みプロンプトまでが毎回変わるなら、マージ項目やフローの出力が変わっているのでデータ側の問題です。解決済みプロンプトは同じなのに応答だけが変わるなら、LLMの非決定性です。
選択肢の検討
A. Prompt Builder は大規模言語モデルの応答をキャッシュするため、作成したテンプレートごとにプロンプトは一度しか送信されない → ✕
キャッシュされているなら、応答は毎回完全に同じになるはずです。設問の現象と真逆なので、この説明では事実を説明できません。公式も、プレビューを再生成するたびにLLMの応答が更新されると説明しています。
B. Prompt Builder でプロンプトテンプレートを実行するたびに、大規模言語モデルへの一意な呼び出しが行われる → ⭕ 正解
プレビューを実行するたびに、選んだテストレコードの値を差し込んだプロンプトがLLMへ送られ、その場で応答が生成されます。さらにLLMは非決定的なので、同じ入力でも表現が揺れます。この2点が重なり、テストするたびに違う応答が返ります。
C. プロンプトはテンプレートを稼働中のエージェントにデプロイした後にのみ大規模言語モデルに送信され、ビルダー上の実行時には送信されない → ✕
公式のプレビューの説明には、解決済みプロンプトとLLMが生成した応答をビルダー上で確認すると明記されています。もしデプロイ後しか送信されないのであれば、そもそもビルダーで応答を見ることができません。
D. Prompt Builder はコスト削減のため大規模言語モデルへの呼び出しをシミュレートするので、プロンプトが実際のモデルに送信されることはない → ✕
プレビューは本物のLLM呼び出しです。公式はPrompt Builderの応答領域を「LLMが生成した出力を確認する場所」と位置づけており、模擬実行という説明はありません。
管理者としての対処手順
「毎回違う」自体は正常動作なので、管理者がやることは揺れ幅を実用上問題ない範囲に収めることです。
- Prompt Templatesワークスペースで対象テンプレートを開く
- [プレビュー設定]でテストレコードを固定し、まず解決済みプロンプトが毎回同じかを確認する
- 違う場合:マージ項目の値やフローの出力が変わっているので、データ・フロー側を見直す
- 同じ場合:LLMの非決定性による揺れである
- 指示文を具体化して揺れを減らす
- 出力形式を指定する(例:「1段落、200文字以内で」「箇条書き3点で」)
- 含める項目と含めない項目を明示する
- 口調や用語を指定する
- [テンプレート設定]で使用するLLMを確認・選択する
- 複数のテストレコードで何度かプレビューし、どの回でも業務上許容できる内容かを見る(一字一句の一致を目指さない)
- 内容が安定したら保存して有効化し、利用者には「生成結果は毎回同じ文面にはならない」と事前に伝える
| 症状 | 見る場所 | 原因 |
|---|---|---|
| 応答の表現だけが毎回変わる | 解決済みプロンプトは同じ | LLMの非決定性(仕様) |
| 応答の中身(金額・名前など)が変わる | 解決済みプロンプトも変わる | マージ項目やフロー出力の差分 |
| 応答が空になる・エラーになる | 解決済みプロンプト | データの欠損、権限不足、マスキング |
| 内容は合っているが長さがバラバラ | 指示文 | 出力形式の指定不足 |
あわせて覚えておきたいポイント
- 自動化と生成AIでは、「同じ入力なら同じ結果」の前提が違います。検証ルールや数式項目は決定的、LLMは非決定的です。金額計算や厳密な業務ルールはLLMの文章生成に任せず、数式・フロー・アクション側で担保します。
- 同じ理由で、エージェントの指示(インストラクション)も非決定的です。公式は、必ず守らせなければならない重要な業務ロジックは指示文ではなくアクションの機能として実装することを推奨しています。
- プロンプトテンプレートの改善は、指示文を磨く→プレビュー→応答を評価→修正の反復作業です。公式も、必要に応じて繰り返し微調整することを前提としています。
- マスクされたデータは解決済みプロンプトにマスキング後の状態で表示されます。「想定した項目値が入っていない」ときは、まずこの領域を見て判断します。
出典(Salesforce公式)
- Review, Revise, and Save Prompt Templates(Trailhead) — 「テンプレートを修正してプレビューを再生成するたびに、解決済みプロンプトとLLMの応答が更新される」「応答のセクションでLLMからの出力を確認する」
- Preview a Resolved Prompt — 「プレビュー設定でテストレコードを選び、マージ項目が解決されたプロンプトを確認する」
- Create a Field Generation Prompt Template — 「プロンプトセクションでテンプレートを作成し、プレビューしてLLMの応答を確認する」
- Answer Questions with Generative Knowledge Answers — 「LLMは非決定的であるため、同じ入力に対しても応答が変わり得る」
- Understand Prompt Templates(Trailhead) — 「プロンプトテンプレートは再利用可能なプロンプトであり、データを差し込むことで一意なプロンプトとパーソナライズされた応答になる」
- Agent Topics(指示の非決定性) — 「指示は非決定的でLLMの解釈に依存するため、確実に強制すべき重要な業務ロジックに使わない」