mcpField
A
agentforce-offline-experimentation-run

agentforce-offline-experimentation-run

github.com/forcedotcomテスト・品質1.1k44 回インストール1 日前に更新
リポジトリ

agentforce-offline-experimentation-run について

既存の Agentforce 会話に対する別の LLM モデルの応答を評価するスキルです。Data Cloud のセッション追跡からプロンプトの再実行、採点、CSV・HTML レポート作成までを扱いますが、後半の一部操作は提案段階です。

主な機能

  1. 01Agentforce のエージェントとセッションの検出
  2. 02SFAP AI Gateway 経由のプロンプト再実行
  3. 03トピックと関数呼び出しの採点
  4. 04引数とテキスト応答の判定
  5. 05CSV・HTML レポートの作成

活用シーン

  1. 01対象モデルを Agentforce の既存セッションと比較
  2. 02トピックと関数呼び出しの精度確認
  3. 03生成されたテキスト応答の評価
  4. 04実験結果の判定レポート作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/forcedotcom/sf-skills --skill agentforce-offline-experimentation-run

インストール後、Claude Code で/agentforce-offline-experimentation-runを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

scripts/
build_report.py
resolve-token.sh
sfap_replay.py

詳細

Agentforce オフライン実験の管理

このスキルを使用する場面

異なる LLM モデルが既存の Agentforce エージェントの会話をどのように処理するかをテストしたいというユーザーの要望に応じて、このワークフローを実行します。Data Cloud STDM からセッショントレースを取得し、構造化ツール呼び出しを使って SFAP AI Gateway REST API 経由でプロンプトを再生し、4 つの指標(トピックの一致度、関数名の正確性、LLM による判定を介した関数引数の正確性、LLM による判定を介したテキスト応答の品質)でスコアを付け、SAFE/REVIEW/UNSAFE の判定バッジ付きの CSV および HTML レポートを生成します。Agentforce Activity データストリーミングが有効になった Data Cloud、認証済みの組織、ターゲットモデル ID(SFAP による再生には llmgateway__ プレフィックスが必要)が必要です。10 セッションの場合の推定実行時間は 10~30 分です。

ワークフロー

discover-data-space → verify-stdm-availability → discover-agents → list-available-models(モデル選びのサポートが必要な場合)→ find-sessions → get-conversation-details → get-llm-step-details → obtain-sfap-token → replay-turn-prompts → [score-exact-matches, judge-function-args, judge-text-responses] → generate-csv-report → generate-html-report. ワークフローのゲート:フェーズ 0 を越えて進む前に、組織のエイリアス(認証済み組織から自動検出)、エージェント API 名(STDM から自動検出)、ターゲットモデル ID(ユーザーに確認)のすべてを確定してください。 SFAP JWT の有効期限は約 2 時間です。20 セッション以上を再生する場合は、バッチの合間にトークンを更新してください。SFAP の再生呼び出しにはそれぞれ約 1~3 秒かかります。妥当な実時間(約 10~30 分)に収めるため、20 セッション未満にしてください。 再生が完了したら、スコアリングと判定のステップ(フェーズ 3)は並行して実行できます。一致判定のスコアリングは即時に完了します。LLM による判定の呼び出しには、ターンごとに約 1~2 秒かかります。

重要な制約

前提条件:

  • Data Cloud が組織にプロビジョニングされ、有効になっていること(確認項目:DataCloudProvisioned)
  • Einstein LLM/GenAI Gateway が組織に設定されていること(確認項目:EinsteinLlmEnabled)
  • ユーザーがターゲット組織への認証済みセッションを持っていること(確認項目:OrgAuthenticated)

操作リファレンス

操作を目的別に分類しています。以下の操作を、上記のワークフローを構成する要素として使用してください。

概要
操作目的ステータス呼び出し依存先
discover-data-space読み取り実装済みgetDataSpaces—
verify-stdm-availability検証実装済みqueryCdpAnsiSqlV2discover-data-space
discover-agents読み取り実装済みqueryCdpAnsiSqlV2verify-stdm-availability
list-available-models読み取り実装済みqueryAiModel—
find-sessions読み取り実装済みqueryCdpAnsiSqlV2verify-stdm-availability、discover-agents
get-conversation-details読み取り提案済みqueryCdpAnsiSqlV2find-sessions
get-llm-step-details読み取り提案済みqueryCdpAnsiSqlV2get-conversation-details
obtain-sfap-token検証提案済み——
replay-turn-prompts読み取り提案済み—get-llm-step-details、obtain-sfap-token
score-exact-matches読み取り提案済み—replay-turn-prompts
judge-function-args読み取り提案済み—score-exact-matches、obtain-sfap-token
judge-text-responses読み取り提案済み—replay-turn-prompts、obtain-sfap-token
generate-csv-report書き込み提案済み—score-exact-matches、judge-function-args、judge-text-responses
generate-html-report書き込み提案済み—generate-csv-report
依存関係グラフ
graph TD
  discover_data_space["discover-data-space (read)"]
  verify_stdm_availability["verify-stdm-availability (validate)"]
  discover_agents["discover-agents (read)"]
  list_available_models["list-available-models (read)"]
  find_sessions["find-sessions (read)"]
  get_conversation_details["get-conversation-details (read)"]
  get_llm_step_details["get-llm-step-details (read)"]
  obtain_sfap_token["obtain-sfap-token (validate)"]
  replay_turn_prompts["replay-turn-prompts (read)"]
  score_exact_matches["score-exact-matches (read)"]
  judge_function_args["judge-function-args (read)"]
  judge_text_responses["judge-text-responses (read)"]
  generate_csv_report["generate-csv-report (write)"]
  generate_html_report["generate-html-report (write)"]
  discover_data_space --> verify_stdm_availability
  verify_stdm_availability --> discover_agents
  verify_stdm_availability --> find_sessions
  discover_agents --> find_sessions
  find_sessions --> get_conversation_details
  get_conversation_details --> get_llm_step_details
  get_llm_step_details --> replay_turn_prompts
  obtain_sfap_token --> replay_turn_prompts
  replay_turn_prompts --> score_exact_matches
  score_exact_matches --> judge_function_args
  obtain_sfap_token --> judge_function_args
  replay_turn_prompts --> judge_text_responses
  obtain_sfap_token --> judge_text_responses
  score_exact_matches --> generate_csv_report
  judge_function_args --> generate_csv_report
  judge_text_responses --> generate_csv_report
  generate_csv_report --> generate_html_report
読み取り操作
discover-data-space

組織内のアクティブな Data Cloud データスペースを検出します

呼び出し: getDataSpaces — ステータス:implemented

discover-agents

STDM にクエリを実行し、セッショントレースがあるエージェントとバージョンの組み合わせを重複なく取得します

呼び出し: queryCdpAnsiSqlV2 — ステータス:implemented

依存先: verify-stdm-availability

list-available-models

ユーザーがターゲットモデルを選べるように、組織に設定されている Einstein LLM モデルを一覧表示します

呼び出し: queryAiModel — ステータス:implemented

find-sessions

エージェント API 名、バージョン、日付範囲で絞り込んで、STDM 内の最近の Agentforce セッションを検索します

呼び出し: queryCdpAnsiSqlV2 — ステータス:implemented

入力:

  • agent_api_name (String) — discover-agents で選択したエージェント API 名
  • agent_version_api_name (String) — discover-agents で選択したエージェントバージョン API 名
  • start_date (String)
  • end_date (String)
  • max_sessions (Integer)

依存関係: verify-stdm-availability、discover-agents

get-conversation-details

各セッションのインタラクション(ターン)を STDM Interaction DMO から取得します

呼び出し: queryCdpAnsiSqlV2 — ステータス:proposed

依存関係: find-sessions

get-llm-step-details

各インタラクションについて、LLM の入力と出力を含むインタラクションステップを取得します

呼び出し: queryCdpAnsiSqlV2 — ステータス:proposed

依存関係: get-conversation-details

replay-turn-prompts

STDM の LLM ステップ入力から構造化メッセージ(system/assistant/user)を抽出し、ロールの位置を保持したまま OpenAI 形式のメッセージ配列に変換します。gen_ai.request.tools からツール定義を動的に抽出し、ツールのシグネチャに基づいて各ステップをルーター(トピック)またはアクションに分類して、tool_choice=required を指定し、SFAP REST API POST /ai/gpt/v1/chat/generations 経由で再生します

ステータス: proposed

入力:

  • target_model (String) — 対象モデル ID(llmgateway__ プレフィックス、例:llmgateway__OpenAIGPT41)

依存関係: get-llm-step-details、obtain-sfap-token

score-exact-matches

トピックの一致度と関数名の正確性について、完全一致スコアを計算します

ステータス: proposed

依存関係: replay-turn-prompts

judge-function-args

関数名が一致する場合(完全一致または緩やかな一致)の関数引数を、LLM-as-judge でスコアリングします

ステータス: proposed

依存関係: score-exact-matches、obtain-sfap-token

judge-text-responses

テキスト出力で終了するターンのテキスト応答を、LLM-as-judge でスコアリングします

ステータス: proposed

依存関係: replay-turn-prompts、obtain-sfap-token

書き込み操作
generate-csv-report

ターンごとの再生結果と集計スコアの概要を含む CSV レポートを生成します

ステータス: proposed

入力:

  • output_csv (String)

依存関係: score-exact-matches、judge-function-args、judge-text-responses

generate-html-report

判定バッジ、スコアカード、失敗の内訳を含む、自己完結型の HTML 分析レポートを作成します

ステータス: proposed

入力:

  • html_output (String)

依存関係: generate-csv-report

その他の操作
verify-stdm-availability

Data Cloud で STDM(Session Trace Data Model)をクエリできることを確認します

呼び出し: queryCdpAnsiSqlV2 — ステータス:implemented

依存関係: discover-data-space

obtain-sfap-token

組織のセッション認証と /ide/auth エンドポイントを使用して、SFAP JWT トークンを取得します

ステータス: proposed

入力:

  • org_alias (String) — トークン解決に使用する認証済み組織のエイリアス

コメント