Kompatibilitas OpenAI SDK
Anthropic menyediakan lapisan kompatibilitas yang memungkinkan Anda menggunakan OpenAI SDK untuk menguji Claude API. Dengan beberapa perubahan kode, Anda dapat mengevaluasi kemampuan model Anthropic.
Memulai dengan OpenAI SDK
Untuk menggunakan fitur kompatibilitas OpenAI SDK, Anda perlu:
- Menggunakan OpenAI SDK resmi.
- Mengubah hal-hal berikut:
- Perbarui base URL Anda agar mengarah ke Claude API.
- Ganti kunci API Anda dengan kunci Claude API dari Claude Console.
- Jika kunci Anda adalah kunci akun pribadi atau akun layanan yang tidak dibatasi pada sebuah workspace, kirimkan juga header
anthropic-workspace-idpada setiap permintaan (misalnya,default_headersdi Python SDK ataudefaultHeadersdi TypeScript); lihat Memilih workspace. - Perbarui nama model Anda untuk menggunakan model Claude.
- Tinjau bagian-bagian berikut untuk mengetahui fitur apa saja yang didukung.
Contoh mulai cepat
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("ANTHROPIC_API_KEY"), # Your Claude API key
base_url="https://api.anthropic.com/v1/", # the Claude API endpoint
)
response = client.chat.completions.create(
model="claude-opus-5-5", # Claude model name
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who are you?"},
],
)
print(response.choices[0].message.content)Keterbatasan penting kompatibilitas OpenAI
Perilaku API
Berikut adalah perbedaan paling substansial dibandingkan menggunakan OpenAI:
- Parameter
strictuntuk function calling diabaikan, yang berarti JSON penggunaan alat tidak dijamin mengikuti skema yang diberikan. Untuk kesesuaian skema yang terjamin, gunakan Claude API native dengan structured outputs. - Input audio tidak didukung; input tersebut diabaikan dan dihapus dari input.
- Caching prompt tidak didukung, tetapi didukung di Anthropic SDK.
- Pesan system/developer diangkat (hoisted) dan digabungkan ke dalam field
systemtingkat atas, di mana pun pesan tersebut muncul dalam percakapan. Untuk menambahkan instruksi sistem di tengah percakapan, gunakan pesan sistem di tengah percakapan di Claude API native.
Sebagian besar field yang tidak didukung diabaikan secara diam-diam alih-alih menghasilkan error. Semuanya didokumentasikan di bagian-bagian berikut.
Pertimbangan kualitas output
Jika Anda telah menyesuaikan prompt Anda secara ekstensif, kemungkinan besar prompt tersebut disetel khusus untuk OpenAI. Pertimbangkan untuk menyusunnya ulang untuk Claude menggunakan panduan praktik terbaik prompting.
Pengangkatan pesan system / developer
Sebagian besar input ke OpenAI SDK dipetakan secara jelas dan langsung ke parameter Claude API, tetapi satu perbedaan yang mencolok adalah penanganan prompt system / developer. Kedua prompt ini dapat ditempatkan di sepanjang percakapan chat di OpenAI API. Lapisan kompatibilitas mengambil semua pesan system/developer dan menggabungkannya dengan satu baris baru (\n) di antaranya. String lengkap ini kemudian diberikan sebagai field system tingkat atas, sebelum setiap pesan.
Dukungan thinking
Anda dapat mengaktifkan thinking dengan menambahkan parameter thinking. Pada model saat ini, thinking bersifat adaptif, dengan Claude menentukan kapan dan seberapa dalam untuk berpikir, dan pada model Claude 5 fitur ini aktif secara default; "extended thinking" (pemikiran diperpanjang) yang dikonfigurasi secara manual adalah mode lama (legacy). Meskipun thinking meningkatkan penalaran Claude untuk tugas-tugas kompleks, OpenAI SDK tidak mengembalikan thinking Claude. Untuk fitur thinking lengkap, termasuk thinking yang diringkas, gunakan Claude API native.
response = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "Who are you?"}],
extra_body={"thinking": {"type": "enabled", "budget_tokens": 2000}},
)Batas laju
"Rate limit" (batas laju) mengikuti batas standar Anthropic untuk endpoint /v1/messages.
Dukungan API kompatibel OpenAI secara terperinci
Field permintaan
Field sederhana
| Field | Status dukungan |
|---|---|
model | Gunakan nama model Claude |
max_tokens | Didukung penuh |
max_completion_tokens | Didukung penuh |
stream | Didukung penuh |
stream_options | Didukung penuh |
top_p | Diteruskan ke model. Model Claude 4.7 dan yang lebih baru serta Claude Mythos Preview mengembalikan error 400 untuk nilai apa pun selain 0.99, yaitu nilai default, jadi hilangkan parameter ini. Permintaan yang menetapkan temperature dan top_p sekaligus juga mengembalikan error 400. Lihat Bekerja dengan pesan. |
parallel_tool_calls | Didukung penuh |
stop | Semua stop sequence non-whitespace berfungsi |
temperature | Antara 0 dan 1 (inklusif). Nilai lebih besar dari 1 dibatasi menjadi 1. Pada model Claude 4.7 dan yang lebih baru serta Claude Mythos Preview, nilai apa pun di bawah 1 mengembalikan error 400, jadi hilangkan parameter ini. Lihat Bekerja dengan pesan. |
n | Harus tepat 1 |
logprobs | Diabaikan |
metadata | Diabaikan |
response_format | Diabaikan. Untuk output JSON, gunakan structured outputs dengan Claude API native. |
prediction | Diabaikan |
presence_penalty | Diabaikan |
frequency_penalty | Diabaikan |
seed | Diabaikan |
service_tier | Diabaikan |
audio | Diabaikan |
logit_bias | Diabaikan |
store | Diabaikan |
user | Diabaikan |
modalities | Diabaikan |
top_logprobs | Diabaikan |
reasoning_effort | Diabaikan |
Field tools / functions
Field tools[n].function
| Field | Status dukungan |
|---|---|
name | Didukung penuh |
description | Didukung penuh |
parameters | Didukung penuh |
strict | Diabaikan. Gunakan structured outputs dengan Claude API native untuk validasi skema yang ketat. |
Field functions[n]
| Field | Status dukungan |
|---|---|
name | Didukung penuh |
description | Didukung penuh |
parameters | Didukung penuh |
strict | Diabaikan. Gunakan structured outputs dengan Claude API native untuk validasi skema yang ketat. |
Field array messages
Field untuk messages[n].role == "developer"
| Field | Status dukungan |
|---|---|
content | Didukung penuh, tetapi diangkat |
name | Diabaikan |
Field untuk messages[n].role == "system"
| Field | Status dukungan |
|---|---|
content | Didukung penuh, tetapi diangkat |
name | Diabaikan |
Field untuk messages[n].role == "user"
| Field | Varian | Sub-field | Status dukungan |
|---|---|---|---|
content | string | Didukung penuh | |
array, type == "text" | Didukung penuh | ||
array, type == "image_url" | url | Didukung penuh | |
detail | Diabaikan | ||
array, type == "input_audio" | Diabaikan | ||
array, type == "file" | Diabaikan | ||
name | Diabaikan |
Field untuk messages[n].role == "assistant"
| Field | Varian | Status dukungan |
|---|---|---|
content | string | Didukung penuh |
array, type == "text" | Didukung penuh | |
array, type == "refusal" | Diabaikan | |
tool_calls | Didukung penuh | |
function_call | Didukung penuh | |
audio | Diabaikan | |
refusal | Diabaikan |
Field untuk messages[n].role == "tool"
| Field | Varian | Status dukungan |
|---|---|---|
content | string | Didukung penuh |
array, type == "text" | Didukung penuh | |
tool_call_id | Didukung penuh | |
tool_choice | Didukung. Nilai "required" dan nilai fungsi bernama memaksa pemanggilan alat; Claude Opus 5.5, Claude Sonnet 5.5, Claude Fable 5.1, dan Claude Mythos 5.1 tidak mendukung penggunaan alat yang dipaksakan dan mengembalikan error, jadi gunakan "auto" pada model-model tersebut. Lihat Memaksa penggunaan alat. | |
name | Diabaikan |
Field untuk messages[n].role == "function"
| Field | Varian | Status dukungan |
|---|---|---|
content | string | Didukung penuh |
array, type == "text" | Didukung penuh | |
tool_choice | Didukung. Nilai "required" dan nilai fungsi bernama memaksa pemanggilan alat; Claude Opus 5.5, Claude Sonnet 5.5, Claude Fable 5.1, dan Claude Mythos 5.1 tidak mendukung penggunaan alat yang dipaksakan dan mengembalikan error, jadi gunakan "auto" pada model-model tersebut. Lihat Memaksa penggunaan alat. | |
name | Diabaikan |
Field respons
| Field | Status dukungan |
|---|---|
id | Didukung penuh |
choices[] | Selalu memiliki panjang 1 |
choices[].finish_reason | Didukung penuh |
choices[].index | Didukung penuh |
choices[].message.role | Didukung penuh |
choices[].message.content | Didukung penuh |
choices[].message.tool_calls | Didukung penuh |
object | Didukung penuh |
created | Didukung penuh |
model | Didukung penuh |
finish_reason | Didukung penuh |
content | Didukung penuh |
usage.completion_tokens | Didukung penuh |
usage.prompt_tokens | Didukung penuh |
usage.total_tokens | Didukung penuh |
usage.completion_tokens_details | Selalu kosong |
usage.prompt_tokens_details | Selalu kosong |
choices[].message.refusal | Selalu kosong |
choices[].message.audio | Selalu kosong |
logprobs | Selalu kosong |
service_tier | Selalu kosong |
system_fingerprint | Selalu kosong |
Kompatibilitas pesan error
Lapisan kompatibilitas mempertahankan format error yang konsisten dengan OpenAI API. Namun, pesan error yang detail tidak setara. Gunakan pesan error hanya untuk logging dan debugging.
Kompatibilitas header
Meskipun OpenAI SDK secara otomatis mengelola header, berikut adalah daftar lengkap header yang didukung oleh Claude API untuk developer yang perlu bekerja dengan header tersebut secara langsung.
| Header | Status dukungan |
|---|---|
x-ratelimit-limit-requests | Didukung penuh |
x-ratelimit-limit-tokens | Didukung penuh |
x-ratelimit-remaining-requests | Didukung penuh |
x-ratelimit-remaining-tokens | Didukung penuh |
x-ratelimit-reset-requests | Didukung penuh |
x-ratelimit-reset-tokens | Didukung penuh |
retry-after | Didukung penuh |
request-id | Didukung penuh |
openai-version | Selalu 2020-10-01 |
authorization | Didukung penuh |
openai-processing-ms | Selalu kosong |
Was this page helpful?