This feature is eligible for Zero Data Retention (ZDR). When your organization has a ZDR arrangement, data sent through this feature is not stored after the API response is returned.
Anggaran tugas memungkinkan Anda memberi tahu Claude berapa banyak token yang dimilikinya untuk loop agentic penuh, termasuk pemikiran, panggilan alat, hasil alat, dan output. Model melihat hitungan mundur yang berjalan dan menggunakannya untuk memprioritaskan pekerjaan dan menyelesaikan dengan anggun saat anggaran dikonsumsi.
Anggaran tugas berada dalam beta publik di Claude Opus 4.7. Atur header beta task-budgets-2026-03-13 untuk memilih.
Anggaran tugas bekerja terbaik untuk alur kerja agentic di mana Claude membuat beberapa panggilan alat dan keputusan sebelum menyelesaikan outputnya untuk menunggu respons manusia berikutnya. Gunakan ketika:
Anggaran tugas melengkapi parameter effort: effort mengontrol seberapa menyeluruh Claude bernalar tentang setiap langkah, sementara anggaran tugas membatasi total pekerjaan yang dapat dilakukan Claude di seluruh loop agentic.
Tambahkan task_budget ke output_config dan sertakan header beta:
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-4-7",
max_tokens=128000,
output_config={
"effort": "high",
"task_budget": {"type": "tokens", "total": 64000},
},
messages=[
{"role": "user", "content": "Review the codebase and propose a refactor plan."}
],
betas=["task-budgets-2026-03-13"],
)Objek task_budget memiliki tiga bidang:
type: selalu "tokens".total: jumlah token yang dapat dihabiskan Claude di seluruh loop agentic, termasuk pemikiran, panggilan alat, hasil alat, dan output.remaining (opsional): sisa anggaran yang dibawa dari permintaan sebelumnya. Defaultnya adalah total saat dihilangkan.Claude melihat penanda hitungan mundur anggaran yang disuntikkan sisi server di seluruh percakapan. Penanda menunjukkan berapa banyak token yang tersisa dalam loop agentic saat ini dan diperbarui saat model menghasilkan pemikiran, panggilan alat, dan output, serta saat memproses hasil alat. Claude menggunakan sinyal ini untuk mengatur kecepatan dirinya dan menyelesaikan dengan anggun saat anggaran dikonsumsi.
Hitungan mundur mencerminkan token yang telah diproses Claude dalam loop agentic saat ini, bukan token yang Anda kirim kembali antar giliran. Jika klien Anda mengirim riwayat percakapan lengkap pada setiap permintaan tindak lanjut, jumlah token sisi klien Anda mungkin berbeda dari anggaran yang dilacak Claude. Jika Anda juga mengurangi remaining sambil mengirim kembali riwayat lengkap, model melihat anggaran yang kurang dilaporkan dan hitungan mundur turun lebih cepat dari yang seharusnya, menyebabkan Claude membungkus lebih awal dari yang sebenarnya diizinkan anggaran. Tetapkan anggaran yang murah hati dan biarkan model mengatur diri sendiri terhadap hitungan mundur daripada mencoba mencerminkannya sisi klien.
Anggaran tugas menghitung apa yang Claude lihat (pemikiran, panggilan alat dan hasil, serta teks), bukan apa yang ada dalam muatan permintaan Anda. Dalam loop agentic, klien Anda mengirim kembali percakapan lengkap pada setiap permintaan, sehingga muatan tumbuh giliran demi giliran, tetapi anggaran hanya berkurang dengan token yang Claude lihat giliran ini.
Pertimbangkan loop dengan task_budget: {type: "tokens", total: 100000} dan satu alat bash.
Giliran 1. Anda mengirim permintaan awal:
{
"messages": [
{ "role": "user", "content": "Audit this repo for security issues and report findings." }
]
}Claude berpikir, kemudian memancarkan panggilan alat dan berhenti dengan stop_reason: "tool_use":
{
"role": "assistant",
"content": [
{
"type": "thinking",
"thinking": "I'll start by listing dependencies to look for known-vulnerable packages..."
},
{
"type": "tool_use",
"id": "toolu_01",
"name": "bash",
"input": { "command": "cat package.json && npm audit --json" }
}
]
}Misalkan giliran asisten ini (pemikiran ditambah panggilan alat) berjumlah 5.000 token yang dihasilkan. Hitungan mundur yang Claude lihat selama generasi berakhir dekat remaining ≈ 95.000.
Giliran 2. Klien Anda menjalankan alat, kemudian mengirim kembali riwayat lengkap dengan hasil alat ditambahkan:
{
"messages": [
{ "role": "user", "content": "Audit this repo for security issues and report findings." },
{
"role": "assistant",
"content": [
{ "type": "thinking", "thinking": "I'll start by listing dependencies..." },
{
"type": "tool_use",
"id": "toolu_01",
"name": "bash",
"input": { "command": "cat package.json && npm audit --json" }
}
]
},
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01",
"content": "<2,800 tokens of npm audit output>"
}
]
}
]
}Pesan pengguna dan asisten giliran 1 yang dikirim kembali tidak dihitung lagi, tetapi hasil alat 2.800-token adalah konten baru yang Claude lihat giliran ini dan dihitung terhadap anggaran. Claude menghabiskan 4.000 token lagi untuk pemikiran dan panggilan alat kedua (grep -rn "eval(" src/). Hitungan mundur berakhir dekat remaining ≈ 88.200.
Giliran 3. Riwayat lengkap dikirim kembali dengan hasil alat kedua (1.200 token keluaran grep) ditambahkan. Claude menulis laporan temuan akhir 6.000-token dan berhenti dengan stop_reason: "end_turn". remaining ≈ 81.000.
Meletakkan tiga giliran berdampingan membuat perbedaan antara ukuran muatan dan pengeluaran anggaran eksplisit:
| Giliran | Muatan permintaan (perkiraan token input yang Anda kirim) | Token dihitung terhadap anggaran giliran ini | Anggaran remaining setelah |
|---|---|---|---|
| 1 | ~20 | 5.000 (pemikiran + tool_use) | ~95.000 |
| 2 | ~7.800 (riwayat giliran 1 + hasil alat) | 6.800 (2.800 hasil alat + 4.000 pemikiran dan tool_use) | ~88.200 |
| 3 | ~13.000 (riwayat lengkap + hasil alat kedua) | 7.200 (1.200 hasil alat + 6.000 text) | ~81.000 |
| Total | ~20.820 dikirim di seluruh permintaan | 19.000 dihitung terhadap anggaran | — |
Klien Anda mengirim pesan pengguna giliran 1 tiga kali dan pesan asisten giliran 1 dua kali, tetapi masing-masing dihitung sekali. Anggaran menghabiskan 19.000 dari 100.000 token, meskipun muatan kumulatif yang dikirim klien Anda lebih besar dan input yang disimpan cache pada giliran 2 dan 3 lebih besar lagi.
remainingJika loop agentic Anda memadatkan atau menulis ulang konteks antara permintaan (misalnya, dengan merangkum giliran sebelumnya), server tidak memiliki memori tentang berapa banyak anggaran yang dihabiskan sebelum pemadatan. Lewatkan remaining pada permintaan berikutnya sehingga hitungan mundur berlanjut dari tempat Anda tinggalkan daripada mengatur ulang ke total:
output_config = {
"effort": "high",
"task_budget": {
"type": "tokens",
"total": 128000,
"remaining": 128000 - tokens_spent_so_far,
},
}Untuk loop yang mengirim kembali riwayat lengkap yang tidak dipadatkan pada setiap giliran, hilangkan remaining dan biarkan server melacak hitungan mundur.
Anggaran tugas adalah petunjuk lembut, bukan batas keras. Claude mungkin kadang-kadang melampaui anggaran jika berada di tengah-tengah tindakan yang akan lebih mengganggu untuk dihentikan daripada diselesaikan. Batas yang diterapkan pada total token output masih max_tokens, yang memotong respons dengan stop_reason: "max_tokens" saat tercapai.
Untuk batas keras pada biaya atau latensi, gabungkan anggaran tugas dengan nilai max_tokens yang wajar:
task_budget untuk memberikan Claude target untuk mengatur kecepatan.max_tokens sebagai batas absolut yang mencegah generasi liar.Karena task_budget mencakup loop agentic penuh (berpotensi banyak permintaan) sementara max_tokens membatasi setiap permintaan individual, kedua nilai tersebut independen; satu tidak diperlukan untuk berada di atau di bawah yang lain.
Anggaran yang terlalu kecil untuk tugas dapat menyebabkan perilaku seperti penolakan. Ketika Claude melihat anggaran yang jelas tidak cukup untuk pekerjaan yang diminta (misalnya, anggaran 20.000-token untuk tugas pengkodean agentic multi-jam), mungkin menolak untuk mencoba tugas sama sekali, membatasi ruang lingkup secara agresif, atau berhenti lebih awal dengan hasil parsial daripada memulai pekerjaan yang tidak dapat diselesaikan. Jika Anda mengamati penolakan yang tidak terduga atau pemberhentian prematur setelah menetapkan anggaran, naikkan anggaran sebelum men-debug parameter lain. Ukuran anggaran terhadap distribusi panjang tugas aktual Anda daripada default tetap; lihat Memilih anggaran.
Anggaran yang tepat tergantung pada berapa banyak pekerjaan yang dilakukan loop agentic Anda saat ini. Daripada menebak, ukur penggunaan token yang ada terlebih dahulu dan kemudian sesuaikan dari sana.
Jalankan sampel tugas yang representatif tanpa task_budget yang ditetapkan dan catat total token yang dihabiskan Claude per tugas. Untuk loop agentic, jumlahkan usage.output_tokens ditambah pemikiran dan token hasil alat di seluruh setiap permintaan dalam loop:
def run_task_and_count_tokens(messages: list) -> int:
"""Runs an agentic loop to completion and returns total tokens spent."""
total_spend = 0
while True:
response = client.beta.messages.create(
model="claude-opus-4-7",
max_tokens=128000,
messages=messages,
tools=tools,
betas=["task-budgets-2026-03-13"],
)
# Count what Claude generated this turn (output covers text + thinking + tool calls).
# Tool-result tokens also count against the budget; add the token count of the
# tool_result blocks you append below if you want client-side tracking to match
# the server-side countdown.
total_spend += response.usage.output_tokens
if response.stop_reason == "end_turn":
return total_spend
# Append the assistant turn and your tool results, then continue the loop.
messages += [
{"role": "assistant", "content": response.content},
{"role": "user", "content": run_tools(response.content)},
]Jalankan ini di seluruh set tugas yang representatif dan catat distribusinya. Mulai dengan p99 pengeluaran token per-tugas Anda untuk memahami bagaimana memberikan model dengan anggaran tugas dapat mengubah perilaku model, kemudian uji naik atau turun sesuai kebutuhan.
Minimum yang diterima task_budget.total adalah 20.000 token; nilai di bawah minimum mengembalikan kesalahan 400.
max_tokens: Ortogonal terhadap anggaran tugas. max_tokens adalah batas keras per-permintaan pada token yang dihasilkan, sementara task_budget adalah batas penasihat di seluruh loop agentic penuh (berpotensi mencakup banyak permintaan). Pada effort xhigh atau max, atur max_tokens ke setidaknya 64k untuk memberi Claude ruang untuk berpikir dan bertindak pada setiap permintaan.task_budget.remaining pada setiap permintaan tindak lanjut, nilai yang berubah membatalkan awalan cache apa pun yang memuatnya. Untuk mempertahankan caching, atur anggaran sekali pada permintaan awal dan biarkan model mengatur diri sendiri terhadap hitungan mundur sisi server daripada memutasi anggaran sisi klien.| Model | Dukungan |
|---|---|
| Claude Opus 4.7 | Beta publik (atur header task-budgets-2026-03-13) |
| Claude Opus 4.6 | Tidak didukung |
| Claude Sonnet 4.6 | Tidak didukung |
| Claude Haiku 4.5 | Tidak didukung |
Anggaran tugas tidak didukung di permukaan Claude Code atau Cowork saat peluncuran. Gunakan anggaran tugas langsung melalui Messages API di Claude Opus 4.7.
Was this page helpful?