Rekayasa AI

Claude API 2026-10-21: upgrade SDK berikutnya membuang temperature

Upgrade rutin SDK Anthropic kini ikut mengubah protokol: parameter sampling dibalas 400 dan header autentikasi pindah. Ini audit yang perlu dijalankan dulu.

A steel control panel with one gauge removed, copper wires spilling from the hole, as a gloved hand reroutes a cable.
A steel control panel with one gauge removed, copper wires spilling from the hole, as a gloved hand reroutes a cable.

Bump dependensi yang ikut mengganti protokol

Anthropic merilis versi Claude API baru untuk pertama kalinya sejak 2023-06-01. Catatan rilis tanggal 21 Oktober 2026 menyebutnya singkat: "We've released API version 2026-10-21." Di entri yang sama tercantum SDK dan CLI versi mayor baru yang otomatis mengirim versi tersebut: Python 2.0.0, TypeScript 1.0.0, C# 13.0.0, Go 2.0.0, Java 3.0.0, PHP 1.0.0, Ruby 2.0.0, serta CLI ant 2.0.0.

Sorotan utamanya ada pada satu perubahan. Di versi baru, temperature, top_p dan top_k tidak lagi diterima. Mengirim salah satunya akan dibalas 400, bahkan kalau nilainya sama dengan default, dan tidak ada pengganti. Kebanyakan tim tidak akan memilih perubahan ini dengan sadar. Perubahan ini datang lewat pip install -U anthropic, PR dari Renovate, atau bump Dependabot yang di-approve begitu saja Jumat sore. String versi kini terikat ke versi mayor SDK, jadi meng-upgrade library sama dengan meng-upgrade protokol.

Tulisan ini membahas apa yang rusak, siapa yang terdampak, dan audit yang layak dijalankan sebelum upgrade itu di-merge.

Apa saja yang sekarang dibalas 400

Panduan migrasinya lugas soal perubahan utama: "In 2026-10-21, a request that sends temperature, top_p, or top_k returns a 400 error, even at the parameter's default value." Aturan ini berlaku untuk request Messages maupun Message Batch.

Bagian "even at the parameter's default value" itulah yang paling berpengaruh di lapangan. Banyak codebase mengirim temperature=1.0 secara eksplisit karena template konfigurasi atau factory pembungkus selalu mengisinya. Panggilan seperti itu tidak mengubah sampling sama sekali, tetapi tetap akan gagal. Anda tidak bisa berpikir "kami tidak pernah mengubah temperature, jadi aman". Selama key itu ada di body request, request-nya gagal.

Apakah Anda kehilangan perilaku, bukan sekadar mendapat error, bergantung pada modelnya. Menurut panduan tersebut, Claude 4.7 ke atas memang hanya menerima nilai default, sehingga cara sampling-nya tetap sama seperti sebelumnya. Pada model lama seperti Claude Sonnet 4.6, request yang menurunkan temperature akan kehilangan efek itu, dan panduannya menegaskan, "No other setting replaces it." Pilihannya dua: berhenti mengirim parameter itu, atau biarkan request tersebut tetap di 2023-06-01.

Ada dua perubahan validasi lain yang juga dibalas 400 di versi baru:

  • blok document yang diletakkan langsung di pesan assistant
  • blok text dengan array citations yang tidak kosong di pesan user

Dokumen bersarang, misalnya hasil tool web fetch, masih diterima. Kalau Anda memutar ulang riwayat percakapan yang berisi output model beserta sitasinya, periksa bagaimana kode Anda memasukkannya kembali ke giliran berikutnya.

Perubahan breaking yang tidak ada hubungannya dengan string versi

Catatan rilis juga menyebut bahwa SDK baru "also have breaking changes that don't depend on the API version, and they are licensed under Apache 2.0 instead of the MIT License." Artinya, mengunci header versi API saja belum cukup untuk membuat upgrade ini aman.

Yang paling senyap adalah autentikasi. SDK dan CLI kini mengirim key di header Authorization sebagai Bearer token, bukan lagi di X-Api-Key. API menerima keduanya, jadi kalau Anda memanggil Anthropic secara langsung, tidak ada yang berubah. Lain cerita kalau trafik melewati gateway internal, proxy pelacak biaya, atau rate limiter yang membaca X-Api-Key untuk mengenali pemanggil. Lapisan itu tidak akan melihat key lagi setelah upgrade. Panduan migrasi meminta proxy semacam itu diperbarui. Klien Foundry masih mengirim x-api-key, jadi armada campuran bisa mengirim kedua header untuk sementara waktu.

Perubahan level SDK lain menurut panduan tersebut:

  • Text Completions dihapus dari SDK TypeScript, Go, Java dan Ruby, serta dari CLI.
  • Compaction sisi klien dihapus dari tool runner TypeScript dan Ruby, digantikan compaction sisi server, dan ambang pemicunya minimal 50.000 token.
  • SDK Go pindah ke module path github.com/anthropics/anthropic-sdk-go/v2, sehingga import harus diubah.
  • Di Amazon Bedrock, 2026-10-21 hanya tersedia untuk Claude 4.7 ke atas.

Changelog SDK Python mencantumkan versi baru ini di bawah "BREAKING CHANGES" pada v2.0.0, dan v2.1.0 menyusul di hari yang sama. Kalau lockfile Anda me-resolve ke 2.x terbaru, Anda sudah memakai protokol baru, entah changelog-nya dibaca atau tidak.

Yang tidak berubah: menurut laporan AlphaSignal, 2023-06-01 tidak di-deprecate, jadi integrasi yang versinya dikunci tetap berjalan. AlphaSignal juga melaporkan bahwa Anthropic berencana merilis versi API lebih sering, dengan waktu rilis mendahului peluncuran model. Kedua klaim ini tidak ada di catatan rilis maupun panduan migrasi, jadi anggap sebagai laporan media, bukan kebijakan resmi. Dua ulasan independen, dari Developers Digest dan DEV Community, sepakat bahwa SDK mayor lama tetap mengirim 2023-06-01 tanpa tanggal akhir yang diumumkan.

temperature=0 tidak pernah menjamin hasil yang bisa diulang

Tim yang paling kesal dengan perubahan ini biasanya memakai temperature rendah untuk mendapat output yang "deterministik". Contohnya suite eval, regression test yang membandingkan output model dengan golden file, dan pipeline ekstraksi yang parser-nya rusak gara-gara satu kalimat diucapkan dengan cara lain.

Pendekatan itu sudah rapuh sejak sebelum rilis ini. Temperature rendah membuat output kurang bervariasi. Ia tidak pernah menjanjikan output identik antarpanggilan, antardeployment, atau antarsnapshot model. Eval yang hanya lulus kalau model memberi jawaban persis sama setiap kali sebenarnya mengukur keberuntungan, bukan cuma kualitas. Dihapusnya tuas ini hanya membuat kelemahan itu kelihatan.

Kalau eval Anda bergantung padanya, inilah saat yang tepat untuk merancang ulang:

  • Jalankan lebih dari sekali. Ulangi setiap kasus beberapa kali dan nilai tingkat kelulusannya, bukan satu kali lulus atau gagal. Perubahan prompt yang menurunkan satu kasus dari 10/10 menjadi 7/10 adalah sinyal nyata. Diff dari satu kali run tidak akan memperlihatkannya.
  • Nilai dengan rubrik, bukan string. Periksa apakah output memuat fakta yang wajib ada, mengikuti skema, dan bebas dari konten terlarang. Jangan periksa apakah teksnya sama persis huruf demi huruf dengan minggu lalu.
  • Pindahkan jaminan format ke struktur. Kalau parser rusak karena variasi, solusinya adalah skema output yang lebih ketat beserta validasinya, bukan menurunkan keacakan.

Tetap di 2023-06-01 untuk beban kerja tertentu dari era Sonnet 4.6 adalah pilihan yang sah. Jadikan itu pengecualian yang disengaja dan terdokumentasi per beban kerja, bukan alasan seluruh codebase tertahan di SDK mayor lama.

Audit sebelum upgrade

Sebelum me-merge bump SDK, jalankan empat pemeriksaan ini. Panduan dari Developers Digest dan DEV Community menyarankan langkah yang kurang lebih sama: buang parameter sampling dari wrapper klien bersama, periksa penanganan header di gateway, upgrade paket platform bersamaan dengan SDK inti, lalu jalankan ulang eval setelah peralihan.

1. Temukan semua parameter sampling, termasuk yang tersembunyi.

grep -rnE '\b(temperature|top_p|top_k|topP|topK)\b' \
  --include='*.py' --include='*.ts' --include='*.js' \
  --include='*.go' --include='*.java' --include='*.rb' \
  --include='*.php' --include='*.cs' \
  --include='*.yaml' --include='*.yml' --include='*.json' .

Titik panggilan langsung mudah ditemukan. Yang berbahaya adalah factory klien, default konfigurasi bersama, registri prompt dan template YAML yang menyuntikkan temperature ke setiap request. Hapus dari sumbernya, bukan satu per satu di setiap panggilan.

2. Periksa apa yang dibaca proxy Anda. Kalau ada komponen di antara kode Anda dan API yang melakukan autentikasi, metering atau routing berdasarkan X-Api-Key, ajari komponen itu membaca Authorization: Bearer juga sebelum ada layanan yang di-upgrade. Gulirkan gateway lebih dulu, baru kliennya.

3. Kunci versi mayor SDK sampai eval lulus. Beri batas atas pada dependensi, misalnya anthropic<2 di Python, dan minta Renovate atau Dependabot menahan versi mayor untuk paket ini. Lakukan upgrade di branch terpisah, upgrade paket khusus platform sekaligus, dan jalankan seluruh suite eval dengan versi baru sebelum kuncinya dilepas.

4. Putuskan per beban kerja. Daftar panggilan yang mengirim temperature rendah ke model sebelum 4.7. Untuk masing-masing, tentukan apakah ia bisa menerima sampling default atau sebaiknya tetap di 2023-06-01 untuk sementara. Catat keputusannya di dekat kode, dan untuk Bedrock, ingat bahwa versi baru hanya tersedia untuk 4.7 ke atas.

Versi barunya sendiri bukan bagian yang berisiko. Risikonya ada pada cara ia datang: lewat jalur otomatis yang sama dengan rilis patch. Kalau Anda menahan versi mayor, merapikan wrapper dan membereskan gateway, peralihan yang sebenarnya hanya perubahan kecil yang Anda pilih sendiri kapan dikirim.

Bacaan terkait

Komentar (0)

Belum ada komentar. Mulai percakapannya.

Tidak pernah ditampilkan atau dikirimi email — hanya disimpan sebagai hash.