Menyelesaikan Masalah API Model Claude Opus 4.6 Thinking: Analisis Lengkap Kompatibilitas Format antara /v1/messages dan /v1/chat/completions

Catatan Penulis: Analisis mendalam tentang penyebab mendasar kesalahan "content should be a valid list" saat memanggil model Claude Opus 4.6 Thinking melalui layanan proksi API, serta perbedaan format dan solusi kompatibilitas antara dua endpoint /v1/messages dan /v1/chat/completions.

Pernahkah kamu mengalami skenario ini: menggunakan model claude-opus-4-6-thinking melalui /v1/chat/completions (format OpenAI) berjalan normal, tapi saat beralih ke /v1/messages (format native Anthropic) malah muncul error content: Input should be a valid list? Fenomena yang tampak kontra-intuitif ini sebenarnya mengungkap masalah kompatibilitas mendalam antara dua format API untuk model Thinking. Artikel ini akan membahas dari dasar format API, menjelaskan secara tuntas penyebab error dan cara pemanggilan yang benar.

Nilai Inti: Setelah membaca artikel ini, kamu akan memahami perbedaan perilaku model Thinking dalam dua format API, menyelesaikan error content should be a valid list, dan menguasai cara menangani thinking blocks dalam percakapan multi-putaran dengan benar.

claude-opus-4-6-thinking-api-messages-vs-chat-completions-compatibility-guide-id 图示


Poin Inti Kompatibilitas API Model Claude Thinking

Mari kita jawab langsung inti dari fenomena "kontra-intuitif" ini.

Poin Penjelasan Dampak
Penyebab Error Layanan proksi mengirim content: "string" ke /v1/messages yang mengharapkan content: [list] Ketidakcocokan format menyebabkan error 400
Format OpenAI Berjalan /v1/chat/completions mengizinkan content sebagai string, secara otomatis memisahkan blok thinking Format sederhana, kompatibilitas baik
Format Anthropic Error /v1/messages secara ketat mengharuskan content sebagai daftar blok konten, dan thinking harus di posisi pertama Konversi format oleh proksi tidak lengkap
Perbedaan Nama Model claude-opus-4-6-thinking adalah alias di platform proksi, nama model resmi adalah claude-opus-4-6 thinking diaktifkan melalui parameter, bukan nama model
Cara yang Benar Gunakan format OpenAI untuk pemanggilan, atau pastikan proksi menangani konversi format content dengan benar Pilih endpoint yang tepat + kirim parameter dengan benar

Inti Teknis Error API Model Claude Thinking

Pesan error content: Input should be a valid list ini mengungkap perbedaan format yang krusial:

API Asli Anthropic (/v1/messages) mengharuskan field content berupa array blok konten (list):

{
  "role": "assistant",
  "content": [
    {"type": "thinking", "thinking": "Mari saya analisis masalah ini...", "signature": "CpcH..."},
    {"type": "text", "text": "Ini adalah jawaban saya..."}
  ]
}

Format Kompatibel OpenAI (/v1/chat/completions) mengizinkan content sebagai string biasa:

{
  "role": "assistant",
  "content": "Ini adalah jawaban saya..."
}

Ketika platform proksi API (seperti backend APIYI) mengonfigurasi channel ke format /v1/messages, jika klien upstream mengirim content string dalam format OpenAI, proksi perlu mengonversi "string" menjadi [{"type": "text", "text": "string"}]. Jika konversi ini tidak lengkap—terutama untuk respons dari Model Thinking yang dikembalikan ke percakapan berikutnya—maka akan memicu error Input should be a valid list.


Perbandingan Detail Dua Format Endpoint API Model Claude Thinking

Ini adalah kunci untuk memahami masalah ini: kedua endpoint memiliki persyaratan yang berbeda secara fundamental untuk field content.

Perbedaan Format API Model Claude Thinking

Dimensi Perbandingan /v1/chat/completions (OpenAI) /v1/messages (Anthropic)
Tipe content string atau array Harus array (daftar blok konten)
Pengembalian thinking Tidak mengembalikan proses berpikir detail Mengembalikan blok konten bertipe thinking
Penyaluran signature Ditempatkan di provider_specific_fields Langsung di field signature blok thinking
Percakapan multi-ronde Dikirim sebagai teks biasa, tidak perlu khawatir urutan thinking Pesan asisten harus diawali dengan blok thinking
Cara mengaktifkan thinking Suffix nama model atau parameter Parameter thinking: {"type": "adaptive"}
prompt caching Tidak didukung Didukung
Proses berpikir terlihat Tidak terlihat Terlihat (summarized thinking)

Perbandingan Format Permintaan API Model Claude Thinking

Pemanggilan Format OpenAI (Direkomendasikan untuk skenario proksi):

import openai

client = openai.OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://vip.apiyi.com/v1"
)

response = client.chat.completions.create(
    model="claude-opus-4-6-thinking",  # Alias platform proksi
    messages=[
        {"role": "user", "content": "Analisis prospek bisnis komputasi kuantum"}
    ],
    max_tokens=16000
)
print(response.choices[0].message.content)

Lihat Kode Pemanggilan Format Asli Anthropic
import anthropic

client = anthropic.Anthropic(api_key="YOUR_API_KEY")

response = client.messages.create(
    model="claude-opus-4-6",  # Nama model resmi, tanpa -thinking
    max_tokens=16000,
    thinking={
        "type": "adaptive"    # Aktifkan thinking melalui parameter
    },
    messages=[
        {"role": "user", "content": "Analisis prospek bisnis komputasi kuantum"}
    ]
)

# Respons content adalah daftar, berisi blok thinking dan text
for block in response.content:
    if block.type == "thinking":
        print(f"[Proses Berpikir] {block.thinking[:100]}...")
    elif block.type == "text":
        print(f"[Jawaban] {block.text}")

Perbedaan Kunci:

  • Nama model adalah claude-opus-4-6 (tanpa suffix -thinking)
  • thinking diaktifkan melalui parameter thinking={"type": "adaptive"}
  • Respons content adalah daftar blok konten, bukan string
  • Dalam percakapan multi-ronde, daftar content lengkap (termasuk blok thinking) harus dikembalikan

🎯 Saran Pemanggilan: Jika Anda memanggil Model Claude Thinking melalui platform proksi, prioritaskan penggunaan /v1/chat/completions (format OpenAI), kompatibilitasnya terbaik.
Endpoint kompatibel OpenAI dari platform APIYI apiyi.com telah diadaptasi untuk Model Thinking, menangani konversi thinking blocks secara otomatis.

claude-opus-4-6-thinking-api-messages-vs-chat-completions-compatibility-guide-id 图示


Mengapa Format OpenAI Justru Berjalan Lebih Lancar untuk API Model Claude Thinking

Ini adalah bagian yang paling kontra-intuitif: menggunakan format "non-asli" OpenAI untuk memanggil model Claude Thinking justru memberikan kompatibilitas yang lebih baik. Ada tiga alasan:

Alasan 1: Tingkat Kelonggaran Format content Berbeda

Format OpenAI mengizinkan content berupa string murni "hello", maupun array blok konten [{"type":"text","text":"hello"}]. Format asli Anthropic hanya menerima array blok konten, format string langsung menyebabkan error.

Ketika kode klien mengirimkan content dalam bentuk string (ini adalah perilaku default OpenAI SDK), jika lalu lintas melewati saluran format OpenAI, format klien dan endpoint upstream konsisten, tidak ada masalah konversi. Namun jika melewati saluran format Anthropic, string tidak akan diterima.

Alasan 2: Pelepasan Otomatis Thinking Blocks

Mode kompatibel OpenAI secara otomatis akan melepaskan thinking blocks dari respons Claude, hanya mengembalikan teks akhir. Ini berarti:

  • Klien tidak akan menerima thinking blocks
  • Tidak perlu mengirimkan kembali thinking blocks pada percakapan berikutnya
  • Tidak ada masalah pengurutan thinking blocks

Format asli Anthropic mengharuskan thinking blocks disimpan lengkap dalam percakapan multi-putaran, dan pesan asisten harus diawali dengan thinking block. Jika layanan proksi tidak menangani persyaratan pengurutan ini dengan benar, akan terjadi error.

Alasan 3: Masalah Pengiriman thoughtSignature

Seperti yang dijelaskan sebelumnya, thinking blocks dalam format Anthropic berisi tanda tangan terenkripsi (signature), yang harus dikirimkan kembali persis seperti aslinya. Format OpenAI langsung melewati bagian ini — tidak mengembalikan tanda tangan, dan juga tidak perlu mengirimkan kembali tanda tangan.

🎯 Saran Pemilihan: Saat memanggil model Claude Thinking melalui layanan proksi API, prioritaskan format /v1/chat/completions, hindari masalah kompatibilitas format thinking blocks.
Endpoint kompatibel OpenAI dari APIYI apiyi.com telah melakukan adaptasi lengkap untuk model Thinking.


Perbandingan Skema Pemanggilan API Model Claude Thinking

Tiga Skema Pemanggilan API Model Claude Thinking

Skema Endpoint Kompatibilitas Format Thinking Terlihat Prompt Caching
Layanan Proksi Format OpenAI /v1/chat/completions Terbaik (string content) Tidak terlihat Tidak didukung
Koneksi Langsung Format Asli Anthropic /v1/messages Harus mengikuti format dengan ketat Terlihat Didukung
Layanan Proksi Format Anthropic /v1/messages (proksi) Bergantung pada implementasi proksi Bergantung pada proksi Sebagian didukung

Perbedaan Nama Model API Claude Thinking

Platform yang berbeda memiliki cara penamaan model Thinking yang berbeda, ini juga merupakan titik kebingungan yang umum:

Platform Nama Model Cara Mengaktifkan Thinking
Anthropic Resmi claude-opus-4-6 Parameter thinking: {"type": "adaptive"}
Layanan Proksi API (seperti APIYI) claude-opus-4-6-thinking Diaktifkan secara implisit dengan sufiks nama model
OpenRouter anthropic/claude-opus-4.6 Diaktifkan dengan parameter
AWS Bedrock anthropic.claude-opus-4-6-v1 Diaktifkan dengan parameter

Di API resmi Anthropic, tidak ada nama model claude-opus-4-6-thinking. Sufiks -thinking adalah konvensi penamaan platform proksi, yang memungkinkan pengguna mengaktifkan fungsi thinking langsung melalui nama model, tanpa perlu mengatur parameter secara manual.

Petunjuk: Jika Anda menggunakan nama model claude-opus-4-6-thinking di APIYI apiyi.com, platform akan secara otomatis menambahkan parameter thinking: {"type": "adaptive"} ke dalam permintaan. Dengan demikian, Anda bisa langsung mendapatkan kemampuan thinking menggunakan OpenAI SDK, tanpa perlu mengubah kode.


Masalah Umum dan Solusi API Model Claude Thinking

claude-opus-4-6-thinking-api-messages-vs-chat-completions-compatibility-guide-id 图示


Pertanyaan Umum

Q1: Apakah menggunakan format OpenAI untuk memanggil model Thinking akan menghilangkan kemampuan berpikirnya?

Tidak. Proses berpikir (thinking) model terjadi di sisi server Anthropic, tidak terkait dengan format endpoint pemanggilan. Saat menggunakan format OpenAI untuk memanggil, model tetap akan melakukan penalaran berpikir yang lengkap, hanya saja ringkasan proses berpikir tidak akan dikembalikan ke klien. Kualitas dan kedalaman jawaban akhir tetap sama—Anda mendapatkan "jawaban yang telah dipikirkan matang-matang", hanya saja tidak melihat "catatan tertulis proses berpikirnya".

Q2: Dalam skenario apa format asli /v1/messages wajib digunakan?

Dua skenario memerlukan format asli: 1) Anda perlu melihat proses berpikir model (summarized thinking) untuk debugging, pendidikan, atau menampilkan rantai penalaran; 2) Anda perlu menggunakan prompt caching untuk mengurangi biaya—fitur caching hanya tersedia di endpoint /v1/messages. Jika kedua kebutuhan ini tidak ada, menggunakan format OpenAI lebih praktis. Melalui endpoint kompatibel OpenAI di APIYI apiyi.com adalah cara termudah untuk memanggil.

Q3: Bagaimana mengatasi masalah kompatibilitas saat konfigurasi saluran di dashboard APIYI diatur ke /v1/messages?

Dua solusi: 1) Ganti saluran ke tipe OpenAI (/v1/chat/completions), untuk menghindari masalah konversi format dari awal; 2) Jika harus menggunakan saluran /v1/messages, pastikan lapisan proksi API mengonversi string content dari klien ke format list dengan benar, dan menangani pengurutan thinking blocks serta penerusan signature dengan tepat dalam percakapan multi-turn. Solusi 1 lebih sederhana dan andal.

Q4: Apa perbedaan antara adaptive thinking dan extended thinking versi lama?

Opus 4.6 merekomendasikan penggunaan thinking: {"type": "adaptive"} (pemikiran adaptif), di mana model memutuskan apakah akan berpikir dan seberapa dalam berdasarkan kompleksitas masalah. Versi lama thinking: {"type": "enabled", "budget_tokens": N} sudah tidak digunakan lagi (deprecated) pada Opus 4.6 dan Sonnet 4.6. Versi baru juga menambahkan parameter effort (low/medium/high/max) untuk mengontrol kedalaman berpikir, default-nya adalah high.


Ringkasan

Inti masalah kompatibilitas API model Claude Thinking:

  1. Penyebab error adalah format content yang tidak cocok: API asli Anthropic mengharuskan content berupa daftar (list), sedangkan format OpenAI mengizinkan string—jika saluran proksi menggunakan /v1/messages tetapi klien mengirim string, akan muncul error Input should be a valid list
  2. Format OpenAI lebih kompatibel: Secara otomatis menghapus thinking blocks, tidak perlu mengirimkan signature, content bisa berupa string—pilihan utama untuk skenario proksi
  3. Akhiran -thinking adalah konvensi proksi, bukan nama model resmi: Nama model resmi adalah claude-opus-4-6, thinking diaktifkan melalui parameter

Untuk memanggil model Claude Thinking melalui proksi API, solusi termudah adalah menggunakan format kompatibel OpenAI secara konsisten.

Direkomendasikan untuk memanggil melalui APIYI apiyi.com, platform telah mengoptimalkan kompatibilitas format untuk model Thinking, menyediakan kuota gratis dan antarmuka terpadu untuk berbagai model.


📚 Referensi

  1. Dokumentasi Claude API Extended Thinking: Referensi API lengkap untuk mode berpikir

    • Tautan: platform.claude.com/docs/en/build-with-claude/extended-thinking
    • Penjelasan: Berisi penjelasan detail tentang adaptive thinking, parameter effort, format blok konten
  2. Dokumentasi Kompatibilitas Claude API OpenAI SDK: Panduan resmi memanggil Claude dengan format OpenAI

    • Tautan: platform.claude.com/docs/en/api/openai-sdk
    • Penjelasan: Berisi batasan kompatibilitas dan daftar fitur yang tidak didukung
  3. Referensi Kode Error Claude API: Penjelasan semua jenis error API

    • Tautan: platform.claude.com/docs/en/api/errors
    • Penjelasan: Berisi metode pemecahan masalah spesifik untuk invalid_request_error
  4. Pusat Dokumentasi APIYI: Memanggil model Claude Thinking melalui antarmuka kompatibel OpenAI

    • Tautan: docs.apiyi.com
    • Penjelasan: Telah menyesuaikan format untuk model Thinking, secara otomatis menangani konversi thinking blocks

Penulis: Tim Teknis APIYI
Diskusi Teknis: Selamat berdiskusi di kolom komentar, materi lebih lanjut dapat diakses di pusat dokumentasi APIYI docs.apiyi.com

Tinggalkan komentar