| |

6 Alasan Claude Code Menggunakan Mode Kompatibel OpenAI, Bukan /v1/messages (Panduan Pemecahan Masalah Lengkap Versi NPM)

Catatan Penulis: NPM menginstal Claude Code seharusnya menggunakan endpoint asli /v1/messages, namun mengapa permintaan yang muncul justru /v1/chat/completions? Artikel ini menganalisis 6 kemungkinan penyebab berdasarkan mekanisme resmi, memberikan 5 langkah diagnosis cepat, dan contoh konfigurasi yang tepat untuk integrasi APIYI.

Sesuai dokumentasi resmi, @anthropic-ai/claude-code yang diinstal melalui NPM di lingkungan baris perintah seharusnya selalu mengirimkan permintaan ke endpoint /v1/messages—ini adalah protokol Messages API asli dari Anthropic yang menyertakan header anthropic-version dan format messages asli.

Namun, jika Anda melihat /v1/chat/completions (format Chat Completions OpenAI) saat melakukan penangkapan paket (packet sniffing)—ini menunjukkan adanya konversi protokol atau kebingungan nama paket di suatu tempat. Ini bukan bug dari Claude Code itu sendiri, melainkan salah satu dari 6 masalah konfigurasi/lingkungan yang umum terjadi.

Nilai Inti: Artikel ini akan menganalisis 6 penyebab tersebut secara lengkap (termasuk kesalahan instalasi paket pihak ketiga, ANTHROPIC_BASE_URL yang mengarah ke gateway kompatibilitas, intersepsi dan konversi oleh claude-code-router, dll.), menyediakan 5 langkah diagnosis cepat, dan memberikan contoh konfigurasi yang tepat untuk memastikan penggunaan /v1/messages asli saat terhubung melalui APIYI apiyi.com.

claude-code-openai-compatible-mode-instead-of-v1-messages-id 图示

I. Claude Code seharusnya menggunakan /v1/messages secara default: Penjelasan Mekanisme Inti

Sebelum melakukan diagnosis, mari kita perjelas perilaku yang diharapkan dari Claude Code resmi agar kita bisa menentukan di mana letak kesalahannya.

1.1 Desain Protokol @anthropic-ai/claude-code Resmi

Paket NPM @anthropic-ai/claude-code yang dikelola secara resmi oleh Anthropic, di semua versinya hanya menggunakan protokol Messages API asli Anthropic, dengan rincian sebagai berikut:

Dimensi Perilaku Claude Code Resmi
Endpoint Permintaan POST {ANTHROPIC_BASE_URL}/v1/messages
Header Permintaan x-api-key, anthropic-version: 2023-06-01, anthropic-beta
Format Body Permintaan { "model": "...", "messages": [...], "system": "...", "max_tokens": ... }
Format Respons { "content": [...], "stop_reason": "...", "usage": {...} }
Respons Streaming Aliran peristiwa SSE, dengan tipe peristiwa seperti message_start, content_block_delta

Jika Anda melihat /v1/chat/completions, Authorization: Bearer ..., atau body permintaan yang berisi array choices saat menangkap paket—itu semua adalah karakteristik protokol OpenAI, yang menandakan bahwa permintaan tersebut tidak melalui jalur yang seharusnya digunakan oleh Claude Code resmi.

1.2 Semantik Variabel Lingkungan yang Benar

Claude Code resmi hanya mengenali variabel lingkungan berikut untuk menyesuaikan perilaku API:

# Wajib: Kunci API Anthropic atau Kunci layanan yang kompatibel
ANTHROPIC_AUTH_TOKEN=sk-your-key
# Atau variabel sinonim:
ANTHROPIC_API_KEY=sk-your-key

# Opsional: Alamat gateway API kustom (jangan sertakan akhiran /v1)
ANTHROPIC_BASE_URL=https://api.anthropic.com

# Opsional: ID model kustom
ANTHROPIC_MODEL=claude-sonnet-4-5
ANTHROPIC_SMALL_FAST_MODEL=claude-haiku-4-5

Catatan: Claude Code resmi tidak menggunakan variabel seperti OPENAI_BASE_URL atau CLAUDE_CODE_USE_OPENAI. Jika variabel-variabel tersebut muncul di lingkungan Anda, berarti Anda menggunakan wrapper pihak ketiga.

💡 Saran Verifikasi Cepat: Jalankan which claude di terminal untuk melihat jalur instalasi Claude Code, lalu jalankan cat $(which claude) | head -20. Jika Anda melihat tulisan @anthropic-ai/claude-code, berarti Anda menggunakan versi resmi. Jika Anda melihat kata kunci seperti openclaude, claudex, atau cli-agent-openai-adapter, maka Anda telah menemukan akar masalahnya.

二、6 Penyebab Utama Claude Code Menggunakan Mode Kompatibilitas OpenAI

Berikut adalah daftar penyebab yang diurutkan dari yang paling sering terjadi hingga yang jarang. Disarankan untuk melakukan pengecekan sesuai urutan ini.

2.1 Penyebab 1: Salah Menginstal Paket Wrapper OpenAI Pihak Ketiga (Sekitar 35% Kasus)

Di NPM terdapat banyak paket "Claude Code" dengan nama serupa namun memiliki fungsi yang sangat berbeda, yaitu khusus untuk konversi kompatibilitas OpenAI. Pengguna mungkin tidak sengaja menginstal salah satunya:

Nama Paket Fungsi Sebenarnya Protokol Default
@anthropic-ai/claude-code ✅ Paket Resmi /v1/messages
@gitlawb/openclaude Shim OpenAI /v1/chat/completions
@aryanjsx/openclaude Shim OpenAI /v1/chat/completions
cli-agent-openai-adapter Konverter Protokol /v1/chat/completions
claude-code-openai-wrapper Wrapper Dua Protokol Mendukung keduanya
claudex Proksi OpenAI berbasis Go /v1/chat/completions

Cara pengecekan:

# 1. Lihat lokasi instalasi sebenarnya
which claude
# Contoh output: /usr/local/bin/claude

# 2. Periksa nama di dalam package.json paket tersebut
cat $(npm root -g)/@anthropic-ai/claude-code/package.json 2>/dev/null | grep '"name"'

# 3. Lihat semua paket terkait claude yang terinstal secara global
npm list -g --depth=0 | grep -i claude

Jika npm list tidak menampilkan @anthropic-ai/claude-code tetapi menampilkan paket lain dengan nama serupa, berarti Anda salah menginstal paket.

2.2 Penyebab 2: Mengonfigurasi Alat Perutean seperti claude-code-router (Sekitar 25% Kasus)

claude-code-router (CCR) adalah alat sumber terbuka populer di komunitas yang dirancang untuk mencegat permintaan Claude Code dan meneruskannya ke model lain (seperti OpenAI, DeepSeek, atau Zhipu). Cara kerjanya:

  1. Menjalankan server proksi lokal (default http://localhost:3456)
  2. Pengguna mengarahkan ANTHROPIC_BASE_URL ke proksi lokal ini
  3. Setelah CCR menerima permintaan /v1/messages, permintaan tersebut diterjemahkan ke /v1/chat/completions dan diteruskan ke model target
  4. Hasil tangkapan paket yang terlihat adalah protokol OpenAI

Cara pengecekan:

# Periksa variabel lingkungan
env | grep -i ANTHROPIC

# Jika melihat ANTHROPIC_BASE_URL=http://localhost:3456 atau http://127.0.0.1:xxx
# Kemungkinan besar itu adalah CCR / claude-code-router atau proksi lokal lainnya

2.3 Penyebab 3: ANTHROPIC_BASE_URL Mengarah ke Gateway Kompatibel OpenAI (Sekitar 20% Kasus)

Beberapa gateway LLM (seperti LiteLLM Proxy, OneAPI, Bifrost) meskipun mendukung konfigurasi model Anthropic, hanya mengekspos antarmuka /v1/chat/completions. Jika pengguna mengarahkan ANTHROPIC_BASE_URL ke gateway semacam ini:

  • Claude Code tetap mengirim permintaan sesuai /v1/messages
  • Gateway mengembalikan 404 atau secara otomatis menulis ulang jalur (rewrite path)
  • Gateway melakukan konversi internal ke format OpenAI untuk memanggil upstream
  • Jika alat tangkap paket disebarkan setelah gateway, yang terlihat adalah protokol OpenAI

Cara pengecekan: Periksa apakah ANTHROPIC_BASE_URL adalah alamat gateway yang kompatibel dengan OpenAI, dan apakah permintaan tersebut benar-benar berhasil (200 atau 404).

2.4 Penyebab 4: Pengaturan Variabel Lingkungan Wrapper Pihak Ketiga (Sekitar 10% Kasus)

Beberapa paket wrapper mengalihkan mode protokol melalui variabel lingkungan, contohnya:

# Variabel pengalih untuk openclaude
CLAUDE_CODE_USE_OPENAI=1
OPENAI_API_KEY=sk-xxx
OPENAI_MODEL=gpt-4o
OPENAI_BASE_URL=https://api.openai.com/v1

Meskipun yang diinstal via npm adalah paket resmi, jika terdapat skrip wrapper di PATH (misalnya /usr/local/bin/claude sebenarnya adalah wrapper), variabel-variabel ini akan tetap aktif.

Cara pengecekan:

# Daftar semua file eksekusi bernama claude di PATH
type -a claude

# Periksa apakah ada variabel lingkungan terkait
env | grep -E 'CLAUDE_CODE|OPENAI_BASE_URL|OPENAI_MODEL'

2.5 Penyebab 5: Intersepsi oleh Shell Alias atau Skrip Wrapper (Sekitar 7% Kasus)

Pengguna mungkin telah mengonfigurasi alias di ~/.bashrc / ~/.zshrc:

# Alias seperti ini akan menggantikan perintah claude yang asli
alias claude='openclaude'
alias claude='claude-code-router run'

# Atau mendefinisikan fungsi dengan nama yang sama
claude() {
  CCR_PROXY=http://localhost:3456 command claude "$@"
}

Cara pengecekan:

# Lihat alias
alias | grep claude

# Lihat fungsi
type claude

# Lihat file startup shell
grep -nE 'claude' ~/.bashrc ~/.zshrc ~/.profile 2>/dev/null

2.6 Penyebab 6: Salah Interpretasi dari Sudut Pandang Penangkapan Paket (Sekitar 3% Kasus)

Dalam beberapa kasus, alat penangkap paket pengguna ditempatkan di lokasi yang salah, sehingga permintaan yang terlihat bukanlah yang sebenarnya dikirim oleh Claude Code. Contohnya:

  • Claude Code → Proksi transparan lokal (seperti mitmproxy) → Gateway OpenAI jarak jauh
  • Alat penangkap paket ditempatkan setelah gateway, sehingga melihat permintaan yang sudah ditulis ulang oleh gateway
  • Padahal, Claude Code sebenarnya mengirim /v1/messages

Cara pengecekan: Gunakan mitmproxy di mesin lokal pengguna untuk memproksi proses Claude Code secara langsung guna memastikan protokol apa yang digunakan pada lompatan pertama (first hop).


Tiga: 5 Langkah Diagnosa Cepat Anomali Protokol Claude Code

claude-code-openai-compatible-mode-instead-of-v1-messages-id 图示

Periksa poin-poin berikut secara berurutan; sebagian besar anomali protokol dapat ditemukan dalam 3 langkah pertama.

3.1 Langkah 1: Pastikan Paket NPM Resmi yang Terinstal

# Hapus semua kemungkinan wrapper
npm uninstall -g @gitlawb/openclaude @aryanjsx/openclaude cli-agent-openai-adapter claudex claude-code-router 2>/dev/null

# Hapus dan instal ulang paket resmi
npm uninstall -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code

# Verifikasi sumber versi
claude --version
npm list -g @anthropic-ai/claude-code

Kondisi lulus: Output npm list -g menyertakan @anthropic-ai/[email protected].

3.2 Langkah 2: Bersihkan PATH dan Shell Alias

# Temukan semua file eksekusi bernama claude di PATH
type -a claude
which -a claude

# Batalkan alias / fungsi dengan nama yang sama
unalias claude 2>/dev/null
unset -f claude 2>/dev/null

# Periksa dan bersihkan konfigurasi terkait claude di skrip startup shell
grep -n 'claude' ~/.bashrc ~/.zshrc ~/.profile 2>/dev/null

Kondisi lulus: type -a claude hanya menampilkan satu jalur, dan mengarah ke paket resmi di direktori global npm.

3.3 Langkah 3: Bersihkan Variabel Lingkungan yang Berkonflik

# Lihat semua variabel terkait claude / openai
env | grep -iE 'claude|openai|anthropic'

# Bersihkan variabel yang mungkin berkonflik
unset CLAUDE_CODE_USE_OPENAI
unset OPENAI_BASE_URL
unset OPENAI_MODEL
unset CCR_PROXY

# Hanya simpan variabel yang diperlukan oleh paket resmi
export ANTHROPIC_BASE_URL="https://vip.apiyi.com"
export ANTHROPIC_AUTH_TOKEN="sk-your-apiyi-key"

🎯 Pengingat Penting: ANTHROPIC_BASE_URL harus diisi hingga akar domain (tanpa akhiran /v1), karena Claude Code akan secara otomatis menambahkan /v1/messages. Jika Anda mengisi https://vip.apiyi.com/v1, maka akan menjadi https://vip.apiyi.com/v1/v1/messages, yang menyebabkan error 404.

3.4 Langkah 4: Uji apakah base_url mendukung /v1/messages secara native

Gunakan curl untuk mensimulasikan permintaan Claude Code guna memverifikasi apakah gateway benar-benar mendukung protokol asli Anthropic:

curl -X POST "$ANTHROPIC_BASE_URL/v1/messages" \
  -H "x-api-key: $ANTHROPIC_AUTH_TOKEN" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-5",
    "max_tokens": 100,
    "messages": [{"role": "user", "content": "Hello"}]
  }'

Kondisi lulus: Mengembalikan 200, dan badan respons berisi "type": "message" serta "content": [...].

Jika mengembalikan 404 atau badan respons dalam format OpenAI (berisi choices), berarti gateway yang ditunjuk oleh ANTHROPIC_BASE_URL tidak mendukung protokol asli Anthropic. Dalam hal ini, beralihlah ke APIYI (apiyi.com) untuk segera menyelesaikannya—layanan ini mendukung /v1/messages secara native dan juga kompatibel dengan /v1/chat/completions, sehingga kedua protokol dapat digunakan.

3.5 Langkah 5: Verifikasi Permintaan Akhir dengan Penangkapan Paket Lokal

Jika 4 langkah pertama telah dilalui namun masalah masih ada, gunakan mitmproxy untuk menangkap paket secara lokal guna verifikasi:

# Jalankan mitmproxy (port default 8080)
mitmproxy --listen-port 8080

# Arahkan Claude Code melalui proksi lokal
export HTTPS_PROXY=http://localhost:8080
export HTTP_PROXY=http://localhost:8080

# Jalankan Claude Code
claude

Kondisi lulus: Permintaan pertama yang ditangkap oleh mitmproxy adalah POST /v1/messages, dan header permintaan berisi anthropic-version.

Empat. Mengakses Claude Code melalui APIYI dengan Konfigurasi Lengkap via /v1/messages Native

APIYI (apiyi.com) adalah salah satu dari sedikit layanan proksi API yang mendukung protokol Anthropic Messages API secara native, memastikan Claude Code berjalan melalui /v1/messages dan bukan /v1/chat/completions.

4.1 Konfigurasi Variabel Lingkungan (Cara Tercepat)

# macOS / Linux
export ANTHROPIC_BASE_URL="https://vip.apiyi.com"
export ANTHROPIC_AUTH_TOKEN="sk-your-apiyi-key"
# Opsional: Tentukan model default
export ANTHROPIC_MODEL="claude-sonnet-4-5"
export ANTHROPIC_SMALL_FAST_MODEL="claude-haiku-4-5"

# Windows PowerShell
$env:ANTHROPIC_BASE_URL = "https://vip.apiyi.com"
$env:ANTHROPIC_AUTH_TOKEN = "sk-your-apiyi-key"

# Jalankan Claude Code
claude

4.2 Konfigurasi Persisten pada File Startup Shell

# Tambahkan ke ~/.zshrc atau ~/.bashrc
cat >> ~/.zshrc <<'EOF'

# Konfigurasi proksi Claude Code → APIYI apiyi.com
export ANTHROPIC_BASE_URL="https://vip.apiyi.com"
export ANTHROPIC_AUTH_TOKEN="sk-your-apiyi-key"
export ANTHROPIC_MODEL="claude-sonnet-4-5"
EOF

# Muat ulang konfigurasi
source ~/.zshrc

4.3 Menggunakan Perintah Konfigurasi Bawaan Claude Code (Direkomendasikan)

Claude Code menyediakan CLI konfigurasi sendiri untuk menghindari kebocoran variabel lingkungan:

# Opsi 1: Interaktif
claude /login
# Pilih "Custom Endpoint", masukkan https://vip.apiyi.com dan kunci API Anda

# Opsi 2: Mengubah file konfigurasi secara langsung
cat > ~/.claude/settings.json <<'EOF'
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://vip.apiyi.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-your-apiyi-key"
  }
}
EOF

4.4 Memverifikasi Jalur Permintaan Setelah Konfigurasi

Setelah menjalankan Claude Code, buka terminal baru dan gunakan perintah berikut untuk memverifikasi:

# Opsi 1: Menggunakan mitmproxy untuk menangkap paket (paling akurat)
mitmproxy --listen-port 8080
# Saat menjalankan Claude Code di terminal lain, atur HTTPS_PROXY=http://localhost:8080

# Opsi 2: Mengaktifkan log debug Claude Code
ANTHROPIC_LOG=debug claude
# Log akan menampilkan URL permintaan dan metode yang digunakan secara lengkap

Hasil yang diharapkan: Semua URL permintaan adalah https://vip.apiyi.com/v1/messages, metode POST, dan header permintaan menyertakan anthropic-version: 2023-06-01.

4.5 Keunggulan Utama Menggunakan APIYI

Keunggulan Penjelasan
Dukungan native /v1/messages Protokol default Claude Code, tanpa kehilangan performa konversi
Mendukung /v1/chat/completions Satu kunci untuk dua protokol, fleksibel
Mempertahankan header anthropic-beta Mendukung fitur canggih seperti prompt caching, penggunaan tool, dll.
Tanpa batas konkurensi Skenario sesi panjang Claude Code tidak akan terkena limitasi
Bonus 10% untuk isi ulang $100 Setara dengan diskon 15% dari harga resmi
Pembayaran Rupiah Pembayaran langsung via WeChat/Alipay

Lima. Perbandingan Protokol Native /v1/messages vs OpenAI /v1/chat/completions

claude-code-openai-compatible-mode-instead-of-v1-messages-id 图示

Memahami perbedaan inti dari kedua protokol ini sangat penting untuk mengetahui mengapa Claude Code harus menggunakan protokol native agar dapat mengeluarkan kemampuan penuhnya.

Dimensi Anthropic /v1/messages OpenAI /v1/chat/completions
Header Autentikasi x-api-key: sk-... Authorization: Bearer sk-...
Header Versi anthropic-version: 2023-06-01 Tidak ada (menggunakan nomor versi di URL)
Header Fitur anthropic-beta: prompt-caching-... Tidak ada standar terpadu
Field system Field independen di level atas Sebagai role system di messages[0]
Format Respon { "content": [...], "stop_reason": "..." } { "choices": [{ "message": {...} }] }
Event Streaming Event terstruktur seperti message_start, content_block_delta SSE umum data: {...}
Pemanggilan Tool Menyematkan tool_use dalam blok konten choices[0].message.tool_calls
Penghitungan token usage.input_tokens / usage.output_tokens usage.prompt_tokens / usage.completion_tokens

Kesimpulan Penting: Claude Code banyak menggunakan fitur unik Anthropic (prompt caching, inkremental streaming tool_use, reasoning content, dll.). Jika dipaksa dikonversi ke protokol OpenAI, kemampuan ini akan hilang atau perilakunya menjadi tidak konsisten. Itulah alasan mengapa Anda harus memastikan Claude Code berjalan melalui /v1/messages native.

VI. Daftar Periksa Pemecahan Masalah Berdasarkan Skenario

6.1 Skenario 1: Penggunaan Lokal oleh Pengembang Individu

Penyebab paling umum: Adanya wrapper dengan nama yang sama di Shell alias atau PATH.

Daftar periksa:

  • Apakah npm list -g menyertakan @anthropic-ai/claude-code?
  • Apakah type -a claude hanya mengarah ke paket resmi?
  • Apakah ~/.zshrc / ~/.bashrc memiliki alias claude=...?
  • Apakah env | grep -i claude menunjukkan variabel non-standar?
  • Apakah ANTHROPIC_BASE_URL menyertakan akhiran /v1? (Seharusnya tidak perlu).

6.2 Skenario 2: Deployment di Lingkungan Tim/Perusahaan

Penyebab paling umum: Gateway LLM internal hanya mendukung protokol OpenAI.

Daftar periksa:

  • Apakah gateway perusahaan mendukung endpoint /v1/messages secara native?
  • Apakah gateway meneruskan header permintaan anthropic-version dan anthropic-beta?
  • Apakah gateway mempertahankan format asli peristiwa SSE?
  • Apakah ada skrip wrapper yang seragam untuk tim?

Jika gateway perusahaan memang hanya mendukung protokol OpenAI, disarankan untuk mengubah ANTHROPIC_BASE_URL klien agar mengarah ke APIYI (apiyi.com) untuk akses protokol native langsung guna menghindari kerugian konversi.

6.3 Skenario 3: Memanggil Claude Code di Lingkungan CI/CD

Penyebab paling umum: Penggunaan wrapper pihak ketiga yang tertanam dalam skrip CI.

Daftar periksa:

  • Apakah file konfigurasi CI melakukan npm install -g paket tidak resmi?
  • Apakah variabel lingkungan CI memiliki CLAUDE_CODE_USE_OPENAI=1 atau sejenisnya?
  • Apakah image CI runner sudah terpasang wrapper sebelumnya?

6.4 Skenario 4: Menjalankan di Dalam Kontainer Docker

Penyebab paling umum: Image dasar sudah terpasang wrapper.

Daftar periksa:

  • Apakah nama paket pada RUN npm install -g di Dockerfile adalah paket resmi?
  • Ke mana arah which claude di dalam kontainer?
  • Apakah ENV kontainer mengatur variabel pengalihan protokol?

VII. FAQ Masalah Protokol Claude Code

Q1: Saya sudah menginstal @anthropic-ai/claude-code resmi, mengapa masih menggunakan protokol OpenAI?

Penyebab paling mungkin adalah ANTHROPIC_BASE_URL mengarah ke gateway yang kompatibel dengan OpenAI. Beberapa gateway akan mengubah permintaan /v1/messages menjadi /v1/chat/completions secara internal saat memanggil upstream. Jika alat penangkap paket Anda dipasang setelah gateway, Anda akan melihat protokol yang sudah dikonversi.

Solusinya adalah mengubah ANTHROPIC_BASE_URL ke APIYI (apiyi.com) yang mendukung /v1/messages secara native tanpa kehilangan kualitas konversi.

Q2: Bagaimana cara menghapus semua kemungkinan wrapper Claude?

# Daftar semua paket global terkait claude
npm list -g --depth=0 | grep -i claude

# Hapus sekaligus wrapper yang diketahui
npm uninstall -g \
  @gitlawb/openclaude \
  @aryanjsx/openclaude \
  cli-agent-openai-adapter \
  claudex \
  claude-code-router \
  ccr \
  2>/dev/null

# Instal ulang paket resmi
npm install -g @anthropic-ai/claude-code

# Verifikasi
which claude
claude --version

Q3: Sampai level path mana ANTHROPIC_BASE_URL harus diisi?

Isi sampai root domain, jangan sertakan akhiran /v1. Claude Code akan menyambungkan /v1/messages secara otomatis di bagian internal.

# ✅ Benar
export ANTHROPIC_BASE_URL="https://vip.apiyi.com"

# ❌ Salah (akan menjadi /v1/v1/messages)
export ANTHROPIC_BASE_URL="https://vip.apiyi.com/v1"

# ❌ Salah (menyertakan path endpoint)
export ANTHROPIC_BASE_URL="https://vip.apiyi.com/v1/messages"

Q4: Mengapa beberapa tutorial menyarankan saya menginstal claude-code-router?

claude-code-router adalah alat komunitas yang bertujuan memungkinkan Claude Code memanggil model non-Anthropic (seperti DeepSeek, Zhipu, atau Ollama lokal). Ini dilakukan melalui konversi protokol.

Jika Anda hanya ingin menggunakan model Claude asli dari Anthropic (seperti Claude Sonnet 4.5, Opus 4.7), Anda tidak memerlukan CCR sama sekali. Cukup hubungkan ke APIYI (apiyi.com) untuk menggunakan /v1/messages native agar pengalaman lebih baik dan tanpa kerugian konversi.

Q5: Apakah APIYI (apiyi.com) mendukung /v1/messages dan /v1/chat/completions secara bersamaan?

Ya, APIYI sepenuhnya kompatibel dengan kedua protokol tersebut:

  • https://vip.apiyi.com/v1/messages —— Format asli Anthropic (default Claude Code)
  • https://vip.apiyi.com/v1/chat/completions —— Format kompatibel OpenAI

Satu kunci API dapat menggunakan kedua protokol tersebut, yang secara otomatis disesuaikan oleh alat klien.

Q6: Jika URL permintaan yang terlihat di penangkap paket adalah https://vip.apiyi.com/v1/messages, apakah itu pasti mode native?

Belum tentu. Anda perlu memverifikasi hal berikut:

  1. Header permintaan berisi anthropic-version: 2023-06-01.
  2. Body permintaan memiliki array messages di level atas dan field system terpisah (bukan system role di dalam messages).
  3. Body respons berisi "type": "message" dan content: [...] (bukan choices: [...]).

Jika URL adalah /v1/messages tetapi body permintaan menggunakan format OpenAI (dengan system role di dalam messages), berarti klien memiliki lapisan konversinya sendiri.

Q7: Apa variabel lingkungan untuk mengaktifkan log debug Claude Code?

# Menampilkan log permintaan/respons HTTP yang detail
ANTHROPIC_LOG=debug claude

# Atau gunakan mode verbose
claude --verbose

# Melihat informasi diagnostik Claude Code itu sendiri
claude /doctor

Log debug akan menampilkan URL lengkap, header permintaan, dan body permintaan (field sensitif akan disamarkan), yang merupakan cara paling langsung untuk menemukan masalah protokol.

Q8: Claude Code saya sebelumnya berjalan normal, namun tiba-tiba berubah menjadi protokol OpenAI, apa penyebabnya?

Beberapa penyebab perubahan mendadak yang paling umum:

  • Melakukan upgrade Claude Code tetapi tidak sengaja menginstal paket pihak ketiga dengan nama yang sama melalui npm install -g.
  • Tim baru saja menerapkan gateway LLM dan menetapkan ANTHROPIC_BASE_URL baru.
  • Beberapa alias aktif kembali setelah upgrade macOS.
  • Perusahaan mengaktifkan proxy transparan untuk audit konversi protokol.

Saat melakukan pemecahan masalah, prioritaskan untuk memeriksa perubahan lingkungan terbaru (catatan instalasi npm, perubahan konfigurasi shell, atau pemberitahuan perubahan gateway).

VIII. Key Takeaways Poin Utama

  • Resmi @anthropic-ai/claude-code selalu menggunakan /v1/messages, tidak ada mode kompatibilitas OpenAI resmi.
  • 6 Penyebab utama (berdasarkan probabilitas): Salah instal paket pihak ketiga / intersepsi claude-code-router / base_url mengarah ke gateway OpenAI / variabel lingkungan pihak ketiga / alias Shell / salah interpretasi saat melakukan packet sniffing.
  • 5 Langkah diagnosis cepat: Konfirmasi nama paket → Bersihkan PATH/alias → Bersihkan variabel lingkungan → Uji curl pada base_url → Verifikasi dengan packet sniffing lokal.
  • Jangan sertakan akhiran /v1 pada ANTHROPIC_BASE_URL, Claude Code akan menambahkannya secara otomatis.
  • APIYI apiyi.com mendukung native /v1/messages, sekaligus kompatibel dengan /v1/chat/completions, satu kunci API untuk dua protokol.
  • Keuntungan menggunakan protokol native: Dukungan penuh untuk fitur eksklusif Anthropic seperti prompt caching, tool_use, reasoning content, dll.
  • Metode verifikasi cepat: Gunakan ANTHROPIC_LOG=debug claude untuk melihat URL dan metode permintaan yang sebenarnya.

IX. Kesimpulan

Claude Code yang diinstal melalui NPM di lingkungan baris perintah harus selalu menggunakan protokol /v1/messages native—ini adalah perilaku hard-coded dari paket resmi @anthropic-ai/claude-code, dan tidak ada pengaturan resmi untuk beralih ke mode kompatibilitas OpenAI. Jika pelanggan melihat /v1/chat/completions saat melakukan packet sniffing, masalahnya pasti ada di suatu tempat pada lingkungan klien: entah salah menginstal wrapper pihak ketiga, ANTHROPIC_BASE_URL mengarah ke gateway yang hanya mendukung protokol OpenAI, atau ada intersepsi/konversi yang dilakukan oleh alias Shell atau variabel lingkungan.

Dengan mengikuti alur diagnosis 5 langkah pada bab ketiga artikel ini, sebagian besar masalah dapat ditemukan dalam waktu 10 menit. Solusi yang paling umum adalah: hapus semua paket tidak resmi → instal ulang @anthropic-ai/claude-code → arahkan ANTHROPIC_BASE_URL ke layanan proksi API yang mendukung /v1/messages secara native.

APIYI apiyi.com dirancang untuk skenario ini—mendukung Anthropic Messages API secara native (termasuk penerusan penuh header anthropic-version dan anthropic-beta), sekaligus kompatibel dengan OpenAI Chat Completions (satu kunci API untuk dua protokol), tanpa batasan konkurensi (sesi panjang Claude Code tidak akan dibatasi), isi ulang 100 USD dapat bonus 10% (setara diskon 15% dari harga resmi), dan mendukung pembayaran dalam Rupiah (melalui metode pembayaran lokal). Konfigurasinya cukup dengan mengatur ANTHROPIC_BASE_URL ke https://vip.apiyi.com tanpa perlu mengubah kode apa pun.

🎯 Saran langkah selanjutnya: Minta pelanggan untuk melakukan pengecekan sesuai urutan 3.1 → 3.2 → 3.3 dalam artikel ini, ubah ANTHROPIC_BASE_URL menjadi https://vip.apiyi.com, lalu setelah memulai ulang Claude Code, gunakan ANTHROPIC_LOG=debug claude untuk memverifikasi apakah URL permintaan sudah kembali ke /v1/messages.

Referensi

  1. Dokumentasi Resmi Claude Code: Penjelasan konfigurasi LLM Gateway

    • Tautan: code.claude.com/docs/en/llm-gateway
    • Penjelasan: Dokumentasi resmi menyatakan dengan jelas bahwa Claude Code menggunakan format Anthropic Messages API.
  2. Paket NPM @anthropic-ai/claude-code: Halaman paket NPM resmi

    • Tautan: npmjs.com/package/@anthropic-ai/claude-code
    • Penjelasan: Pastikan Anda menginstal paket resmi.
  3. Dokumentasi Resmi Anthropic Messages API: Spesifikasi protokol asli

    • Tautan: docs.anthropic.com/en/api/messages
    • Penjelasan: Bidang lengkap, header permintaan, dan format respons untuk endpoint /v1/messages.
  4. Situs Web APIYI: Layanan proksi API protokol Anthropic asli

    • Tautan: apiyi.com
    • Penjelasan: Mendukung /v1/messages asli + kompatibel dengan /v1/chat/completions, tanpa batas konkurensi, isi ulang 100 USD dapat bonus 10%.

Penulis: Tim Teknis
Terakhir Diperbarui: 02-05-2026
Tentang APIYI: APIYI (apiyi.com) adalah penyedia layanan proksi API Claude profesional yang mendukung asli Anthropic Messages API (/v1/messages, termasuk transmisi penuh anthropic-version dan anthropic-beta), serta kompatibel dengan OpenAI Chat Completions (/v1/chat/completions). Kami menyediakan akses stabil ke seluruh seri Claude Sonnet 4.5, Claude Opus 4.7, dan Claude Haiku 4.5. Isi ulang 100 USD mendapatkan bonus 10% (setara dengan diskon 15% dari harga resmi), tanpa batas konkurensi, dengan dukungan teknis yang responsif.

Similar Posts