セッション予算
公開リスト料金で適用される厳格なドル建て予算により、セッションの支出に上限を設けます。
セッション予算は、セッションを作成する際に設定できる、任意の厳格な支出上限です。プラットフォームは、セッションが消費するすべてのものを公開定価で継続的に価格計算し(これがセッションの定価コストです)、そのコストが予算に達すると新しいモデルリクエストの発行を停止します。上限を超えた時点で処理中のリクエストは完了まで実行されるため、最終的な定価コストは予算をわずかに超える場合があります。予算に達したセッションは終了するのではなく、一時停止してアイドル状態になります。予算を変更または削除すると、予算によって一時停止された作業が再開されます。デプロイメントも同じ予算を受け付け、開始する各セッションにそれを適用します。デプロイメントの予算を参照してください。
セッション作成時に予算を設定する
セッションを作成する際に、オプションの budget フィールドを渡します。
session = client.beta.sessions.create(
agent=agent.id,
environment_id=environment.id,
budget={
"type": "limit",
"max_list_cost": {"amount": "125", "currency": "USD"},
},
)
print(session.id, session.budget.max_list_cost.amount) # sesn_01... 125budget オブジェクトには2つのフィールドがあります。
typeは常に"limit"です。max_list_costは上限そのものです。amountは米国セント単位の整数を、先頭にゼロを付けない文字列として記述したもので("125"は1.25米ドル、"50"は50セント)、ゼロより大きくなければなりません。"25.00"のような小数形式は拒否されます。金額が数値ではなく文字列であるため、浮動小数点の丸めが適用されることはありません。currencyは大文字のISO-4217通貨コードで、サポートされている通貨はUSDのみです。
予算はセッションの作成時にのみ付与できます。予算のない既存のセッションに予算を追加しようとすると、400エラーで拒否されます。予算付きセッションの上限は、いつでも変更または削除できます。
リストコストの測定方法
プラットフォームは、セッションが消費するものを公開リスト料金で継続的に価格計算します。
- モデルトークン:提供された各モデルのリスト価格
- ウェブ検索:1,000回の検索あたり10米ドル
- セッション実行時間:1時間あたり0.08米ドル
この累計ドル合計がセッションのリストコストであり、予算はこれと比較されます。リストコストは契約価格ではありません。組織が割引を交渉している場合、セッションはリスト価格の合計が上限に達した時点で上限に達するため、実際の請求額は上限より低くなる可能性があります。
適用には、丸められていない正確なリストコストが使用されます。セッションとそのイベントで報告される list_cost の数値は、最も近いセントに丸められた整数セントであるため、報告される数値は適用に使用される正確な金額から最大で半セント前後ずれる場合があります。
セッションが予算に達したとき
上限はリクエストの途中ではなく、モデルリクエストの間で適用されます。各モデルリクエストの前に、プラットフォームはセッションの消費済み定価コストを確認し、その合計が上限に達すると、すべてのスレッドが次のリクエストの前に一時停止します。合計を上限超えに押し上げたリクエストは、セッションがまだ上限未満の間に受け付けられたものであり、完了まで実行されます。その結果、一時停止したセッションに記録される list_cost は、max_list_cost と等しいか、わずかに超える値になります。たとえば、"50"(50セント)に上限設定されたセッションが、list_cost が "53" の状態で一時停止することがあります。これは想定どおりの動作であり、請求エラーではありません。上限を超えるモデル支出は、最大でも各スレッドにつきモデルリクエスト1回分のコストです。そのリクエストの応答に含まれるツール呼び出しは引き続き実行され、それらのWeb検索や実行時間も定価コストに加算されます。予算は正確な停止点ではなく新しい作業に対する上限として扱い、その余裕を考慮して上限を設定してください。
予算に達したセッションは、stop_reason が budget_reached の状態でアイドルになります。セッションは終了されず、その履歴とサンドボックスは他のアイドルセッションと同様に保持されます。イベントストリームでは、次の順序でイベントが表示されます。
- 各スレッドが一時停止するたびに、
stop_reasonがbudget_reachedのsession.thread_status_idleイベント。 - セッションの累積使用量とリストコストを含む
session.usageイベント。 stop_reasonがbudget_reachedのsession.status_idleイベント。usageイベントは常にこのアイドルイベントの直前に発生します。
ワークフロー実行が開いている場合、まだアイドルになっていない各実行にも workflow_run.status_idle イベントが送られます。
最後のリクエストで上限を超え、かつターンを完了したスレッドは、自身の session.thread_status_idle イベントで end_turn を報告しますが、セッションは引き続き budget_reached を報告します。セッションが予算で一時停止したことを示すシグナルとしては、セッションレベルの stop_reason を使用してください。
上限到達時に受け付けられるイベント
セッションが予算に達しているか超過している間は、すでに進行中の作業を完結させるイベントのみを受け付けます。
user.tool_confirmationuser.tool_resultuser.custom_tool_resultuser.interrupt
user.message など、新しい作業を開始するイベントは、このリストを示す400エラーで拒否されます。完結された結果は新しいモデルリクエストをトリガーすることなく記録され、セッションは予算で一時停止したままになります。
セッションが予算で一時停止している間(すべてのスレッドが上限で一時停止している状態)に送信された user.interrupt は、受け付けられますが、イベントリストには表示されません。すべてのスレッドがすでに一時停止しているため、どのスレッドも停止しません。続行するには、予算を変更または削除してください。
セッションに開いているワークフロー実行がある場合、他のタイミングでの割り込みと同様に、割り込みによってそれらが一時停止されることがあります。割り込みによって一時停止された実行は、予算を変更または削除しても再開されません。続行するには、予算を変更または削除した後、エージェントに実行の継続を求める user.message を送信してください。実行が開いているセッションへの割り込みを参照してください。
予算に達したセッションを再開する
セッションの更新によって予算を変更または削除します。更新が受け付けられると、予算によって一時停止された作業は自動的に再開され、クライアント側で追加の操作は必要ありません。
予算によって一時停止された各ワークフロー実行にも、workflow_run.status_running イベントが送られます。中断によって一時停止された実行は、セッションが予算に達している間に送信された中断によるものであっても、一時停止したままになり、更新による workflow_run.status_running イベントは送られません。その実行を続行するには、実行を続行するようエージェントに依頼する user.message を送信してください。実行が開いているセッションを中断するを参照してください。
予算を変更する
新しい max_list_cost でセッションを更新します。新しい値は現在の上限より高くても低くても構いませんが、セッションの消費済みリストコストより厳密に大きくなければなりません。そうでない場合、更新は400エラー budget.max_list_cost must be greater than the session's consumed list cost で拒否されます。セッションが一時停止した時点では、消費済みコストは通常古い上限をわずかに超えているため、新しい値は古い max_list_cost ではなく、セッションで報告される usage.list_cost に基づいて決めてください。その数値より1セント以上高く設定してください。報告される値は丸められており、チェックに使用される正確な消費済みコストをわずかに下回る場合があります。
updated_session = client.beta.sessions.update(
session.id,
budget={
"type": "limit",
"max_list_cost": {"amount": "500", "currency": "USD"},
},
)
print(updated_session.budget.max_list_cost.amount) # 500予算を削除する
上限を完全に削除するには、budget=None を渡します。予算によって一時停止された作業が再開され、結果として発生する session.updated イベントでは budget が null に設定されています。
unbudgeted_session = client.beta.sessions.update(session.id, budget=None)
print(unbudgeted_session.budget) # None支出を監視する
セッションオブジェクトには、その budget と、追跡された支出を含む usage オブジェクトが含まれます。usage.list_cost はセッションの消費済み定価コストであり、usage.active_seconds はランタイムコストの価格計算の基になる実行時間です。budget_reached で一時停止したセッションでは、usage.list_cost は max_list_cost と等しいか、わずかに超える値になると想定してください。上限を超えたリクエストが一時停止前に完了しているためです。セッションレベルの active_seconds は、並行するスレッドの重複したアクティビティを1回としてカウントします。スレッド取得のレスポンスには、スレッド自身の usage に同じ2つのフィールドが含まれ、スレッドごとに価格計算されます。スレッドごとの値は個別に丸められ、セッションの実行時間コストを含まないため、合計してもセッションの list_cost と正確には一致しません。予算の適用対象となるのはセッションの値です。
session.usage イベントは、セッションの累積使用量と追跡されたリストコストのスナップショットです。このイベントには、セッションのトークン合計、list_cost、active_seconds、server_tool_use のリクエスト数(リクエストごとにリストコストに計上される web_search_requests と、ウェブフェッチリクエストにはリクエストごとの料金がなく計測されないため 0 となる web_fetch_requests)、およびセッションに予算がある場合はその budget が含まれます。このイベントはイベントリストとセッションストリームに表示されます。セッションは停止理由にかかわらず、アイドルになる直前にこのイベントを1つ発行するため、予算に達したセッションは、予算到達のアイドルイベントの直前に必ずこのイベントを発行します。
ストリームとセッションオブジェクトから使用量を読み取る方法については、使用量を追跡するを参照してください。
マルチエージェントセッションにおける予算
マルチエージェントセッションには、すべてのスレッドで共有される単一の予算があり、スレッドごとの上限はありません。各スレッドの消費は、それぞれが提供されたモデルの価格で計算され、共有上限に達するとスレッドはそれぞれ独立して一時停止します。アドバイザーへの相談も同じ予算に加算され、アドバイザーモデルの料金で価格計算されます。あるスレッドが budget_reached で一時停止している間に、別のスレッドが処理中のリクエストを完了することがあります。
保留中の問い合わせは上限より優先されます。あるスレッドが requires_action で待機中で、別のスレッドが budget_reached で一時停止しているセッションは、セッションレベルでは requires_action を報告します。保留中のリクエストには依然として回答が必要であり、それに回答することは予算によってブロックされない完結イベントです。
デプロイメントの予算
デプロイメントは、作成または更新時に同じ budget オブジェクトを受け付けます。
{
"budget": {
"type": "limit",
"max_list_cost": { "amount": "2000", "currency": "USD" }
}
}上限はデプロイメントが開始する各セッションにコピーされるため、デプロイメントの累積支出ではなく、各実行を個別に制限します。デプロイメントの予算を変更すると、その後にデプロイメントが開始するセッションに適用され、すでに実行中のセッションには適用されません。セッションとは異なり、デプロイメントの予算は budget=None でクリアし、後で再度設定できます。各実行に予算を設定するを参照してください。
リスト価格のないモデル
予算は、プラットフォームが価格計算できる消費のみを追跡できます。次のいずれかが公開定価のないモデルを使用している場合、予算付きセッションの作成は400エラーで拒否されます。
- セッションのエージェント
subagentsまたはworkflowsのpredefined_agentsリストに含まれるエージェント- エージェントのマルチエージェント設定で設定されたアドバイザー
エラーには、そのモデルの定価が利用できないことが示されます。
予算付きセッションの使用量にリスト価格のないモデルが含まれるようになった場合、予算はセッションの支出を測定できなくなります。セッションは stop_reason が budget_reached の状態で一時停止する可能性があり、予算の変更は拒否されます。セッションを再開するには、予算を削除してください。
エラーリファレンス
予算関連のリクエストは、次の場合に拒否されます。
| 条件 | ステータス |
|---|---|
セッションが予算に達しているか超過している間に、作業を開始するイベント(例:user.message)が送信された場合。エラーには受け付けられる完結イベントが示されます | 400 |
| 予算がセッションの消費済みリストコスト以下の値に設定された場合 | 400 |
| 予算なしで作成されたセッションに予算が追加された場合、または削除後に再追加された場合 | 400 |
amount がセント単位の整数でない場合(例:"25.00")、ゼロまたは負の値である場合、または currency が USD でない場合 | 400 |
| 予算付きの作成リクエストが公開リスト価格のないモデルを参照している場合 | 400 |
利用可能状況
Claude API
- ステータス
- ベータ
- API
- Managed Agents
- Messages API サポート対象外
- Beta header
- Requires
- モデル
- すべてのモデル
Claude Platform on AWS
- ステータス
- ベータ
- API
- Managed Agents
- Messages API サポート対象外
- Beta header
- Requires
- モデル
- すべてのモデル
Claude Models on Google Cloud (Anthropic managed)
- ステータス
- ベータ
- API
- Managed Agents
- Messages API サポート対象外
- Beta header
- Requires
- モデル
- すべてのモデル
データの取り扱い
データの取り扱いの概要対象エンドポイント
/v1/agents/v1/sessions/v1/environments
セッションはステートフルなリソースであり、トランスクリプトは削除するまで保持されます。セルフホスト型サンドボックスを含む、すべてのManaged Agentsのサブ機能に適用されます。
セルフホスト型サンドボックスを含む、すべてのManaged Agentsのサブ機能に適用されます。
このページは役に立ちましたか?