Outcome の推奨される使い方:タスクと合格基準の記述、評価回数の選択、完了判定、成果物の取得。
このページでは Outcome の推奨される使い方を説明し、完全な例を示します。フィールドと仕組みは Outcome の評価を参照してください。
評価に合格する Outcome は以下の順序で実行されます。
各基準は 1 つのことだけを記述します。「完全」「実行可能」「証拠付き」を 1 つにまとめず、3 つに分けます。
まず
Outcome の実行中は Session が
rubric がファイルを求める場合、
この例では、注文 CSV から注文数、合計金額、購入金額が最大の顧客を計算し、
評価スレッドは Agent のツール権限を継承します。評価に必要なツールを
タスクと元データは
レスポンス例:
出力:
初回評価で合格した場合の、この例のイベント順序です(
初回の成果物が不合格の場合、
フロー概要
評価に合格する Outcome は以下の順序で実行されます。
- クライアントは
descriptionにタスク、rubricに合格基準を指定してuser.define_outcomeを送信します。 - Agent は
descriptionに従って作業し、Session はrunningになります。 - 評価スレッドが成果物を評価し、
span.outcome_evaluation_start、span.outcome_evaluation_ongoing、span.outcome_evaluation_endが発行されます。 span.outcome_evaluation_end.resultがsatisfiedとなり、Session オブジェクトのoutcome_evaluations[].completed_atが設定されます。- Agent が最終返信を書き、Session は
idleに戻ります。
タスクと合格基準
description は Agent turn の入力で、rubric は評価スレッド専用です。互いに相手の内容を読むことはできません。
| 内容 | 記述先 | 読み取る側 |
|---|---|---|
| タスク、成果物パス、出力形式、元データ | description | Agent |
| 合格基準、期待値、失敗条件 | rubric | 評価スレッド |
- タスクを
rubricにしか記述しない場合、Agent はタスクを読めません。 - 評価スレッドは
descriptionを読めません。基準が依存する期待値や元データはrubricに入れ、「タスク記述と照合」のような基準を避けてください。
| 種類 | 例 |
|---|---|
| 成果物の場所 | /data/report.html が存在する |
| 具体的な内容 | スループットとレイテンシの数値を含み、それぞれ 1 個以上のグラフがある |
| 証拠 | 各ボトルネックにコード位置または profiling データを添える |
| 失敗条件 | サンドボックスにファイルがなく、Agent が完了不能と表明した場合は failed |
評価回数
max_iterations は評価回数の上限です。各評価が credits を消費します。
| 値 | 用途 |
|---|---|
1 | 合否判定だけが必要。不合格の場合、Outcome は max_iterations_reached になります |
2–3(デフォルト 3) | 判定に基づいて Agent に修正させたい場合。needs_revision の後に自動で修正 turn が始まります |
3 より大きい値 | タスクの収束に複数回の修正が必要な場合 |
max_iterations: 1 で rubric を調整します。1 回で正しい判定が得られることを確認してから上限を増やします。
送信タイミング
user.define_outcome は単独のリクエストで、Session が idle かつ有効な Outcome がない場合にのみ送信します。
status が idle かつ active_outcomes が 0 の場合に送信できます。リクエスト制約を参照してください。
完了の判定
Outcome の実行中は Session が running のままです。目的に応じて条件を選びます。
| 目的 | 条件 |
|---|---|
| 評価判定を読む | outcome_evaluations[].completed_at が null ではない |
| Agent の最終返信を読む、または次のイベントを送る | Session の status が idle に戻る |
result とともに explanation を読みます。explanation は基準ごとの評価説明を含み、ユーザーへの表示やログへの記録に使えます。
ストリーム上で stop_reason.type: requires_action の session.status_idle が発行された場合はツール確認待ちで、Outcome の終了ではありません。ツール確認を参照してください。
成果物の取得
rubric がファイルを求める場合、description に /data/ への書き込みと DeliverArtifacts による交付を指示します。成功すると、ストリームに agent.artifact_delivered が発行されます。
- 修正 turn で再交付すると新しい File が作成されます。最後の
agent.artifact_deliveredのfile_idで最終版を取得します。 - 交付後、ファイル一覧への反映に数秒かかる場合があります。
- Agent が返信に直接結果を返す場合もあります。クライアントは両方を処理してください。
例:注文の集計
この例では、注文 CSV から注文数、合計金額、購入金額が最大の顧客を計算し、/data/summary.json に書き込んで交付します。その後 Outcome が結果の正しさを評価します。
1. Agent の作成
評価スレッドは Agent のツール権限を継承します。評価に必要なツールを always_allow に設定し、手動確認なしで Outcome を実行できるようにします。
2. Session の作成
3. Outcome の定義
タスクと元データは description、期待値は rubric に入れます。max_iterations は 2 で、判定に基づく 1 回の修正を許可します。
4. 評価結論の取得
5. 最終返信の取得
completed_at が設定された時点では最後の turn が実行中の場合があります。Session が idle に戻るまで待ち、最後の agent.message を読みます。
6. 成果物の取得
7. Session のアーカイブ
イベントストリーム
初回評価で合格した場合の、この例のイベント順序です(span.model_request_* と agent.thinking は省略)。
span.outcome_evaluation_end.result は needs_revision となり、その後に修正 turn の agent.tool_use、新しい agent.artifact_delivered、iteration=1 の評価イベントが続きます。Session には 2 件の summary.json があり、最後の agent.artifact_delivered が最終版を指します。
チェックリスト
- タスク、成果物パス、出力形式は
description、合格基準はrubricに記述します。 rubricはdescriptionの内容に依存せず、期待値や元データがrubricに記述されています。- 各基準を独立して検証でき、失敗条件が明記されています。
- 初回は
max_iterations: 1を使用し、1 回で正しい判定が得られることを確認します。 - 評価に必要な読み取りツールを
always_allowに設定するか、クライアントがrequires_actionを処理します。 user.define_outcomeは Session がidleかつ有効な Outcome がない場合にのみ、単独リクエストで送信します。- 同じリクエストの再試行には
Idempotency-Keyを付けます。 - Outcome の終了は
completed_atで判断し、最終返信の取得や次のイベント送信は Session がidleに戻るまで待ちます。 explanationを読み、記録します。- 最後の
agent.artifact_deliveredのfile_idで成果物を取得します。