> ## Documentation Index
> Fetch the complete documentation index at: https://docs.starfort.io/llms.txt
> Use this file to discover all available pages before exploring further.

# ポリシーのテスト (Forge)

> Project Guardian ごとに Test Dataset を登録し、Forge Experiment を実行して、Guard Policy の PASS/MASK/BLOCK 判定精度を測定します (Starfort v1.4 版)

**Forge** は、v1.3 で導入された Starfort のポリシーテスト機能です。v1.2 では答えられなかった問い — *自分の Guard Policy は本当に期待どおりに判定しているのか？* — に答えます。各入力と、その入力が受けるべき判定をペアにした **Test Dataset** を登録し、Project Guardian に対して **Experiment** を実行すると、action クラスごとの **accuracy** が算出されます。失敗したケースは、ポリシーを手動で改善するためのシグナルになります。

<Frame caption="Forge は各 Project Guardian の中にあります — (1) Forge タブ、(2) Add Dataset、(3) Run Experiment">
  <img src="https://mintcdn.com/aimintelligence/-3ie4No4rGti8Jbz/images/v1.3/admin/forge-overview.png?fit=max&auto=format&n=-3ie4No4rGti8Jbz&q=85&s=c686ff90907eff09f6f6c7f5fdbc5da3" alt="Forge ナビゲーション項目と Add Dataset、Run Experiment ボタンがハイライトされた Project Guardian の Forge タブ" width="1200" height="626" data-path="images/v1.3/admin/forge-overview.png" />
</Frame>

<Note>
  Forge は測定と可視化を行うだけで、ポリシーを代わりに修正することはありません。評価は expected action と actual action の決定論的（deterministic）な比較であり（LLM による判定なし）、ポリシーの修正は通常の [Guard Policy の編集・バージョン管理](/ja/v1.4/admin/author-guard-policy)フローをそのまま使います。
</Note>

## Test Dataset

**Test Dataset** は **Project Guardian**（ポリシーをテストする対象）に従属します。1 つの Guardian に複数の dataset を持てます — 例:「PII 攻撃パターン」「正常入力」「エッジケース」。Dataset 名は所属 Guardian 内で一意であり、Guardian を削除するとその dataset とすべての結果も一緒に削除されます。

Dataset の各 **item** は 2 つの部分で構成されます:

| 部分        | 内容                                                                                                 |
| --------- | -------------------------------------------------------------------------------------------------- |
| **入力**    | Guardian に送信するコンテンツ — マルチターン会話（user / assistant メッセージの順序配列）。v1.4 は**テキストのみ**をサポートします。              |
| **期待判定値** | Guardian が下す*べき*判定 — 最終 **action**（`PASS` / `MASK` / `BLOCK`）と、任意で該当すべきポリシーコードおよび自由テキストの `reason`。 |

v1.4 の評価は**最終 action のみ**を比較します。ポリシーコードと reason は失敗ケース分析のためにすべての結果とともに保存されますが、スコアには影響しません。

### Dataset の登録

プロジェクトの Guardian で **Forge** を開き、dataset を作成します:

<Steps>
  <Step title="名前と説明">名前はその Project Guardian 内で一意である必要があります。</Step>
  <Step title="Guardian Action List">この dataset が評価対象とする action の集合（例: Pass / Mask / Block）— クラス別 accuracy はこの基準で算出されます。</Step>
  <Step title="Item のアップロード">CSV または JSONL ファイル — 各レコードが 1 つの item（`input` + `expected_output`）です。</Step>
  <Step title="Goal（任意）">0〜100% の accuracy 目標値。設定すると、この dataset のすべての Experiment に **PASS / FAIL** の判定が付きます: Total Accuracy ≥ Goal なら PASS。</Step>
</Steps>

<Frame caption="Item のアップロード — ファイルの列が各 item の入力、期待判定値、メタデータにマッピングされます">
  <img src="https://mintcdn.com/aimintelligence/-3ie4No4rGti8Jbz/images/v1.3/admin/forge-dataset-upload.png?fit=max&auto=format&n=-3ie4No4rGti8Jbz&q=85&s=eb1fe30449b462a0bb5e0989d8334cfc" alt="アップロードされた JSONL ファイルと列マッピングを示す Add Test Dataset ダイアログの Dataset File ステップ" width="1200" height="626" data-path="images/v1.3/admin/forge-dataset-upload.png" />
</Frame>

<Frame caption="評価設定 — accuracy Goal と Guardian Action List">
  <img src="https://mintcdn.com/aimintelligence/-3ie4No4rGti8Jbz/images/v1.3/admin/forge-dataset-evaluation.png?fit=max&auto=format&n=-3ie4No4rGti8Jbz&q=85&s=dc909bc22c44a383947a5a14284a9cc0" alt="Goal 80% と PASS、MASK、BLOCK が選択された Add Test Dataset ダイアログの Evaluation ステップ" width="1200" height="626" data-path="images/v1.3/admin/forge-dataset-evaluation.png" />
</Frame>

Dataset はバージョン管理されます。編集や再アップロードで新しいバージョンが作成され、以前のバージョンも保存されます。Experiment は任意のバージョン（デフォルト = 最新）で実行できます。

## Experiment

**Experiment** は、選択した**ポリシー構成**で 1 つの Test Dataset を Project Guardian に通し、結果を採点する 1 回の実行です。以下を設定します:

| 入力                            | 備考                                                                                                                                          |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| **Dataset**（+ バージョン）          | Dataset が対象 Guardian、Goal、Action List を決定します。バージョンのデフォルトは最新です。                                                                              |
| **名前 / 説明**                   | 任意 — 名前を指定しない場合、process type とポリシー構成から自動命名されます。                                                                                             |
| **Policy の選択**                | **互いに異なる**ポリシー 1 つ以上、それぞれに**バージョン 1 つ**を指定（デフォルト = そのポリシーの最新バージョン）。同じポリシーを 2 回選ぶことはできません — 1 つのポリシーのバージョン間比較は、別々の Experiment を実行して並べて比較します。 |
| **Process type・model config** | Guardian がサポートする process type から 1 つ（デフォルト = 先頭）。Model config は Guardian の設定値が事前入力され、この実行に限り override できます。                                 |

<Frame caption="Experiment の設定 — バージョンを 1 つ指定したポリシー、process type、Guardian から事前入力された model config">
  <img src="https://mintcdn.com/aimintelligence/-3ie4No4rGti8Jbz/images/v1.3/admin/forge-experiment-config.png?fit=max&auto=format&n=-3ie4No4rGti8Jbz&q=85&s=dbd0eea46ed7f61d2ba1e40f37807c1c" alt="PII Basic ポリシーのバージョン 0.1.0 と input process type が選択された Run Experiment ダイアログの Configuration ステップ" width="1200" height="626" data-path="images/v1.3/admin/forge-experiment-config.png" />
</Frame>

実行は\*\*同期（synchronous）\*\*です。完了まで blocking され（`RUNNING` → `COMPLETED` または `ERROR`）、完了時に結果が表示されます。結果・トレース・スコアは永続保存され、過去の Experiment をいつでも再照会できます。

### 採点方法

各 item はレスポンスが到着した瞬間に判定されます — expected action vs actual action、正解か不正解か。Experiment は以下を報告します:

* **Total Accuracy** — action が一致した item 数 / 全 item 数。
* **Pass / Mask / Block Accuracy** — dataset の Action List にあるクラスごとの、expected action 基準の正解率。
* **PASS / FAIL** — dataset に Goal がある場合のみ: Total Accuracy ≥ Goal なら PASS。

<Frame caption="Experiment の結果 — この実行は 80% の Goal に未達（FAIL）で、action ごとの内訳がどこで失敗したかを正確に示しています（MASK・BLOCK 項目の未検出）">
  <img src="https://mintcdn.com/aimintelligence/-3ie4No4rGti8Jbz/images/v1.3/admin/forge-experiment-results.png?fit=max&auto=format&n=-3ie4No4rGti8Jbz&q=85&s=a4f36227a270eb9a4e033809d8c0cdf8" alt="処理 6 件、不一致 4 件、Total Accuracy 33%、FAIL 判定と action ごとの精度を示す Run Experiment の結果ステップ" width="1200" height="860" data-path="images/v1.3/admin/forge-experiment-results.png" />
</Frame>

### 結果の保存先

Experiment のトレースは [Opticon](/ja/v1.4/admin/monitoring-opticon) に *Guardian › dataset › Experiment* の階層で記録され、本番トラフィックとは厳密に分離されます: **`forge` environment** タグ（本番トレースは `default`）、Experiment 名 = **session**、dataset 名 = **user ID**。本番の PASS / MASK / BLOCK メトリクスがテスト実行で汚染されることはなく、特定の Experiment のトレースだけを正確にフィルタリングできます。Starfort の Experiment 履歴には、Forge からトリガーした実行のみが表示されます。

## 失敗ケースからポリシーを改善する

Forge は、従来は本番トラフィックの事後分析に頼っていたループを、事前検証で閉じます:

<Steps>
  <Step title="失敗ケースを見つける">accuracy が低い Experiment で失敗した item（accuracy = 0）を開き、各トレースを確認します — 入力、expected action、actual action。</Step>
  <Step title="診断">パターンを探します: 欠落している PII カテゴリ、過検出/見逃しのある topic など。</Step>
  <Step title="ポリシーの修正">Guard Policy を修正し、新しいバージョンを発行します — 通常の[編集・バージョン管理](/ja/v1.4/admin/how-to/version-and-apply-policy)フローそのままです。</Step>
  <Step title="再実行して比較">同じ dataset で新バージョンの Experiment を実行します。Run を並べて比較すると accuracy の変化が見え — リグレッションを本番トラフィックに到達する前に捕捉できます。</Step>
</Steps>

## 権限

| 操作                            | 必要な権限                          |
| ----------------------------- | ------------------------------ |
| Dataset・Experiment の照会        | Project Member 以上              |
| Dataset の登録/編集、Experiment の実行 | **`test-execute`** IAM 権限      |
| Dataset の削除                   | Project Admin 以上               |
| Guard Policy の修正・適用           | Project Admin 以上（通常のポリシー編集と同じ） |

<Note>
  v1.4 の Forge は意図的にテキスト専用・rule-based です。ファイル/画像の dataset、LLM-as-judge 評価、自動ポリシー最適化はこのバージョンの範囲外です。
</Note>
