Obrolan

Anthropic Messages dan Claude Code

Model Claude juga mendukung Messages API dari Anthropic, sehingga SDK Anthropic, Claude Code, dan apa pun yang dibuat untuk keduanya dapat digunakan cukup dengan mengganti URL dasar dan kunci.

POST/v1/messages

URL dasar https://api.zurelay.com (SDK menambahkan /v1/messages). Kirim kunci sebagai x-api-key atau Authorization: Bearer, dengan anthropic-version: 2023-06-01. Hanya model Claude yang tersedia di sini; model lain menggunakan /v1/chat/completions.

Dengan SDK Anthropic

import os
import anthropic
client = anthropic.Anthropic(
base_url="https://api.zurelay.com",
api_key=os.environ["ZURELAY_API_KEY"],
)
message = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
system="You are a careful code reviewer.",
messages=[{"role": "user", "content": "Review this function: def add(a, b): return a - b"}],
)
print(message.content[0].text)

Semua yang ada di Messages API Anthropic diteruskan (kecuali metadata, yang tetap di Zurelay): system sebagai string atau blok (dengan cache_control untuk caching prompt), tools, thinking, output_config, stop_sequences, temperature, streaming dengan event yang sama, dan header anthropic-beta. Gambar dan PDF dikirim sebagai blok image dan document: lihat Gambar, PDF, audio dan video. Anthropic menolak temperature, top_p dan top_k pada Claude mulai dari Opus 4.7, jadi untuk model tersebut kami menghapusnya dari permintaan alih-alih menggagalkan permintaan.

Berpikir

Claude berpikir secara adaptif: model menentukan seberapa banyak proses berpikir yang dibutuhkan suatu permintaan, dan output_config.effort mengatur tingkat upayanya: low, medium, high, xhigh (ekstra tinggi) atau max. Tambahkan display: "summarized" ke thinking untuk menerima ringkasan proses berpikir dalam blok thinking.

import os
import anthropic
client = anthropic.Anthropic(
base_url="https://api.zurelay.com",
api_key=os.environ["ZURELAY_API_KEY"],
)
message = client.messages.create(
model="claude-opus-5-5",
max_tokens=32000,
thinking={"type": "adaptive", "display": "summarized"},
output_config={"effort": "xhigh"},
messages=[{"role": "user", "content": "How many primes are there below 1,000?"}],
)
for block in message.content:
print(block.thinking if block.type == "thinking" else block.text)
  • Claude Opus 5.5 dan model Fable selalu berpikir: Opus 5.5 pada medium kecuali Anda menetapkan tingkatnya, Fable pada high. Jika diminta untuk tidak berpikir, keduanya berjalan pada low.
  • Claude Sonnet 5.5 dan Opus 5 secara default berpikir pada high, sementara Claude Haiku 5.5 pada medium. Opus 4.6 hingga 4.8 hanya berpikir jika Anda mengirim thinking. Opus 4.6 tidak memiliki xhigh, jadi model ini berjalan pada high.
  • Format lama, thinking: { type: "enabled", budget_tokens }, berfungsi pada semua model Claude: model yang menolaknya akan berpikir secara adaptif pada tingkat terdekat. Claude Haiku 4.5 hanya menerima format tersebut, dan diberi anggaran token saat Anda mengirim pengaturan berpikir adaptif.
  • Proses berpikir ditagih sebagai token output, jadi sisakan ruang untuknya di max_tokens pada xhigh dan max, dan gunakan streaming untuk jawaban panjang. Saat Anda menetapkan tingkatnya, header x-zurelay-reasoning-effort menunjukkan tingkat yang digunakan.

Caching prompt

Caching bekerja sama seperti di Anthropic: tambahkan cache_control pada blok yang ingin disimpan dalam cache, atau pada seluruh permintaan, untuk menyimpannya selama lima menit, atau tambahkan "ttl": "1h" untuk menyimpannya selama satu jam. Setiap bagian input ditagih dengan cara yang sama seperti di Anthropic:

InputTarifDalam penggunaan
Dibaca dari cacheTarif cache modelcache_read_input_tokens
Ditulis ke cache selama lima menit1.25 kali tarif inputephemeral_5m_input_tokens
Ditulis ke cache selama satu jam2 kali tarif inputephemeral_1h_input_tokens
SelebihnyaTarif inputinput_tokens

Kedua jenis penulisan tercantum di usage.cache_creation, dan cache_creation_input_tokens adalah total keduanya. Setiap halaman model menampilkan tarif cache-nya. Hanya input yang Anda minta untuk disimpan dalam cache yang ditagih sebagai penulisan: permintaan tanpa cache_control dikenai tarif input untuk semua yang tidak dibaca dari cache, dan input yang Anda minta untuk disimpan selama lima menit tidak pernah ditagih dengan tarif satu jam.

Claude Code

Arahkan Claude Code ke Zurelay dengan lima variabel lingkungan (URL dasar, kunci Anda, dan tiga alias model), lalu jalankan seperti biasa:

Shell
export ANTHROPIC_BASE_URL="https://api.zurelay.com"
export ANTHROPIC_AUTH_TOKEN="$ZURELAY_API_KEY"
export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-opus-5-5"
export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-5-5"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-haiku-5-5"
claude

Untuk menyimpan pengaturan ini, masukkan nilai yang sama ke blok env di ~/.claude/settings.json. Panduan lengkapnya, beserta panduan untuk Cursor, Cline dan lainnya, tersedia di Integrasi.

Tingkat /effort di Claude Code diteruskan ke model sebagai output_config.effort, sehingga xhigh dan max berfungsi sama seperti di Anthropic. Ultracode adalah pengaturan Claude Code, bukan tingkat upaya: pengaturan ini menggunakan tingkat sesi (xhigh saat Anda memulai Claude Code dengan --effort ultracode).

Menghitung token

POST/v1/messages/count_tokens

Menerima body yang sama dengan /v1/messages dan mengembalikan { "input_tokens": 1234 }, yaitu perkiraan jumlah token yang akan dihitung untuk permintaan tersebut. Gratis.

Kesalahan

Error dikembalikan dalam format Anthropic ({ "type": "error", "error": { "type", "message" } }), dengan arti yang sama seperti di halaman error. Respons ini tidak menyertakan code: gunakan status HTTP dan error.type.

Beberapa model Claude hanya dapat membaca PDF melalui /v1/chat/completions. Jika Anda mengirim PDF ke /v1/messages, pesan error akan menunjukkan endpoint yang harus digunakan. Tabel di Gambar, PDF, audio dan video menunjukkan apa yang dapat dibaca oleh setiap model.
  • Tips: Hitungan token Anthropic dan kami bisa sedikit berbeda; biaya dihitung berdasarkan penggunaan yang tercantum dalam respons.

Ada pertanyaan, atau ada yang kurang? Tanyakan kepada tim dukungan kami dan kami akan menjawab lewat email, biasanya dalam satu menit.