Pemecahan masalahPanduan
Error 400 Claude API pada temperature, top_p, top_k: cara memperbaikinya
Permintaan Claude Anda mulai mengembalikan 400 pada versi API 2026-10-21? Hapus temperature, top_p dan top_k, atau pin versi lama. Langkah-langkahnya di dalam.

Di halaman ini
Permintaan Claude Anda berhasil kemarin, Anda memindahkannya ke versi API 2026-10-21 (header anthropic-, atau rilis SDK yang dibuat untuknya), dan sekarang hasilnya kembali dengan 400. Periksa body permintaan: jika ada temperature, top_p atau top_k, itulah penyebabnya. Hapus ketiga field tersebut dan permintaan akan berhasil.
Menurut panduan migrasi Anthropic untuk versi 2026-10-21 (https://platform.claude.com/docs/en/api/migration-2026-10-21, diperiksa 24 Oktober 2026), permintaan Messages atau Message Batches yang mengirim salah satu dari ketiganya akan mengembalikan error 400. Ini terjadi bahkan jika nilainya adalah nilai default parameter tersebut. Cari status 400 dan nama field tersebut di permintaan Anda.
Seperti apa permintaan yang gagal#
Misalkan Anda punya skrip kecil yang meminta Claude merangkum tiket dan menjaga jawabannya tetap stabil dengan temperature rendah:
import anthropic
client = anthropic.Anthropic()
reply = client.messages.create(
model="<your Claude model>",
max_tokens=500,
temperature=0.2, # <- this line now causes the 400
messages=[{"role": "user", "content": "Summarise this ticket in two lines: ..."}],
)Hal yang sama berlaku lewat HTTP biasa. Jika Anda mengatur header versi sendiri, ini baris yang memindahkan Anda ke perilaku baru:
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2026-10-21" \
-H "content-type: application/json" \
-d '{"model": "<your Claude model>", "max_tokens": 500, "top_p": 0.9,
"messages": [{"role": "user", "content": "Hello"}]}'Perbaikannya: hapus ketiga parameter#
Hapus temperature, top_p dan top_k dari setiap permintaan Messages dan Message Batches. Tanpanya, model melakukan sampling dengan default-nya (temperature 1.0), persis seperti permintaan 2023-06-01 yang tidak menyertakannya.
reply = client.messages.create(
model="<your Claude model>",
max_tokens=500,
messages=[{"role": "user", "content": "Summarise this ticket in two lines: ..."}],
)
Versi SDK major terbaru dan CLI ant (2.0.0) tidak lagi memiliki parameter ini sama sekali, jadi setelah upgrade Anda harus menghapusnya dari kode Anda. Error 400 berasal dari permintaan yang keluar dengan anthropic- dan masih membawa salah satu dari ketiga field tersebut. Adaptor .NET IChatClient mengambil jalur yang lebih lunak: sekarang mereka mengabaikan ChatOptions., TopK dan TopP. Nomor versi SDK yang tepat per bahasa ada di tab langkah Upgrade pada panduan.
Jika Anda memanggil API tanpa SDK, versinya adalah header anthropic-, dan 2026-10-21 adalah nilai yang mengaktifkan aturan baru.
Apakah jawaban akan berubah setelah Anda menghapusnya?#
Tergantung pada modelnya, dan panduan ini spesifik di sini.
- Claude 4.7 dan yang lebih baru sudah hanya menerima nilai sampling default. Tidak ada yang berubah bagi Anda: mereka melakukan sampling dengan default sebelumnya dan masih begitu.
- Model yang menerima nilai lain, seperti Claude Sonnet 4.6: jika Anda menurunkan
temperatureuntuk mendapatkan output yang lebih konsisten, efek itu hilang, dan tidak ada pengaturan lain yang menggantikannya.
Jika permintaan tertentu benar-benar bergantung pada nilai non-default, Anda punya dua opsi dari panduan: berhenti mengirim parameter tersebut dan terima sampling default, atau pertahankan permintaan itu di anthropic-.
Jika jawaban Anda harus benar-benar konsisten, letakkan konsistensi itu ke dalam prompt: format output yang tetap, contoh singkat jawaban yang Anda inginkan, dan pemeriksaan di kode Anda yang menolak apa pun yang tidak sesuai format. Ini lebih banyak kerja daripada satu angka, tetapi tidak bergantung pada tombol sampling.
Checklist cepat saat Anda melihat 400#
- Cari di proyek untuk
temperature,top_p,top_k, termasuk wrapper dan file konfigurasi bersama. - Periksa batch job: aturan ini berlaku untuk setiap permintaan di dalam Message Batch yang dibuat dengan 2026-10-21, jadi periksa params setiap permintaan dalam batch tersebut.
- Periksa apa yang berubah: versi major SDK, versi CLI, atau header
anthropic-.version - Hapus field tersebut, atau pin permintaan itu ke
2023-06-01jika membutuhkan nilai non-default. - Jalankan satu permintaan sebelum Anda meluncurkan ulang batch besar.
Satu jalur kode untuk Claude dan API bergaya OpenAI#
Pengaturan umum: satu helper yang membangun permintaan dan mengirimkannya baik ke Anthropic Messages atau ke endpoint Chat Completions bergaya OpenAI. Perbaikan paling sederhana adalah memisahkan parameternya. Pertahankan temperature hanya di cabang bergaya OpenAI, dan jangan menambahkannya ke cabang Messages.
Dalam format Chat Completions, pengaturan ini adalah field permintaan yang normal. Di CheapTokens ini bekerja melalui alamat yang kompatibel dengan OpenAI https:/. Berikut adalah permintaan ke DeepSeek-V4-Flash (konteks 380K, hingga 32.768 token output per jawaban), dengan id model lengkap dari dokumentasi CheapTokens:
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ai/DeepSeek-V4-Flash-0731",
"temperature": 0.2,
"max_tokens": 300,
"messages": [{"role": "user", "content": "Summarise this ticket in two lines: ..."}]
}'Permintaan seperti itu, dengan 1.000 token input dan 300 token output, berbiaya $0.000045 pada harga saat ini. DeepSeek-V4-Flash memiliki satu harga kapan pun sepanjang hari, tanpa jam sibuk, dan satu saldo mencakup semua model. Untuk jalur kode yang sama dengan jendela konteks 390K juga tersedia GLM-5.3-Flash (zai-, hingga 8.192 token output). Harga terkini untuk semua model ada di halaman harga.
Untuk melihat bagaimana pengaturan ini berperilaku, baca System prompt dan temperature: apa fungsinya dan cara mengaturnya. Untuk memanggil Messages format Claude dari Python, lihat Anthropic Python SDK dengan CheapTokens. Alamat dasar dan pengaturan key ada di dokumentasi CheapTokens.



