Bloga dön
Rehber·23 Mayıs 2026·6 dk okuma

OpenAI SDK ile Claude çağırma — tek satırı değiştirin, kod tabanınızı koruyun

Anthropic'in SDK'sı harika, ancak ekosistem OpenAI'ninkinde standartlaştı. Değiştirilmemiş OpenAI Python ve Node SDK'larıyla Claude Opus 4.7, Sonnet 4.6 ve Haiku 4.5'i nasıl çağıracağınız burada — akış, araç kullanımı ve görüntü desteği dahil.

Anthropic'in kendi SDK'sı harika, ancak tüm yapay zekâ ekosistemi OpenAI istemci biçiminde standartlaştı — her örnek, her çerçeve adaptörü ve her "hello world" öğreticisi elinizde bir OpenAI(...) örneği olduğunu varsayar. Kodunuzu Anthropic'in SDK'sını doğrudan çağıracak şekilde geçirmek anlamlı bir yeniden düzenlemedir.

Böyle olmak zorunda değil. Bu yazı, Kunavo üzerinden çağrılarınızı yönlendirerek Claude Opus 4.7, Sonnet 4.6 ve Haiku 4.5 modellerini OpenAI SDK'sı üzerinden değişiklik yapmadan nasıl çağıracağınızı gösterir. Aynı SDK, aynı türler, aynı akış, aynı araç kullanımı. Değişen tek satır: base_url.

Minimum değişiklik

Python'da openai paketi zaten yüklüyse tam geçiş şöyle görünür.

main.py
from openai import OpenAI

client = OpenAI(
    api_key="sk-kn-...",
    base_url="https://api.kunavo.com/v1",   # the only line that changes
)

resp = client.chat.completions.create(
    model="claude-sonnet-4-6",              # a Claude slug, not gpt-4o
    messages=[
        {"role": "system", "content": "You are a senior platform engineer."},
        {"role": "user",   "content": "Critique this SQL migration..."},
    ],
)
print(resp.choices[0].message.content)

api_key, Kunavo anahtarınız olur (/app/keys adresinden oluşturulur). base_url, bizim ağ geçidimize işaret eder. Model kimliği gpt-4o'dan bir Claude slug'ına geçer — claude-opus-4-7, claude-sonnet-4-6, claude-haiku-4-5. İstek gövdesi, yanıt biçimi ve SDK'daki tüm yardımcılar OpenAI'ye karşı çalışırken olduğu gibi davranır.

Akış

Akış aynı şekilde çalışır. Kunavo, Anthropic'in SSE parçalarını OpenAI'nin chat.completion.chunk biçiminde iletir; bu nedenle mevcut asenkron yineleme deseni değişiklik yapılmadan çalışır.

stream.py
for chunk in client.chat.completions.create(
    model="claude-opus-4-7",
    messages=[{"role": "user", "content": "Explain Raft in 200 words."}],
    stream=True,
):
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

Araç kullanımı / işlev çağırma

Anthropic'in araç kullanımı protokolü anlamsal olarak OpenAI'nin işlev çağırmasıyla aynıdır — yalnızca iletim biçiminde farklıdırlar. Kunavo, tools dizisini, yanıttaki tool_calls alanını ve takip eden tool mesajlarını iki yönde çevirir. tool_choice="auto", "none" veya adlandırılmış bir araç kullanın — hepsi eşlenir.

tools.py
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get current weather in a city",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {"type": "string"},
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
                },
                "required": ["city"],
            },
        },
    }
]

resp = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{"role": "user", "content": "What's the weather in Tokyo?"}],
    tools=tools,
    tool_choice="auto",
)
print(resp.choices[0].message.tool_calls)

Görsel

Claude, 3.5'ten beri çok modludur; görüntü aktarmak standart OpenAI content: [{ type: 'text' }, { type: 'image_url' }] dizisidir. image_url.url, bir https URL'si veya data: base64 URI'si olabilir.

vision.py
resp = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "What's in this image?"},
            {"type": "image_url",
             "image_url": {"url": "https://example.com/cat.jpg"}},
        ],
    }],
)

Anthropic'in kendi SDK'sını kullanmak istediğinizde

Bazı yalnızca Anthropic'e özgü özellikler OpenAI biçiminde ifade edilemez — özellikle istem önbelleğe alma için cache_control yönergesi ve genişletilmiş thinking token'ları. Bunlardan herhangi birine ihtiyacınız varsa SDK'ları değiştirin ancak aynı anahtarı koruyun: Kunavo, Anthropic'e özgü /v1/messages uç noktasını da sunar; bu nedenle Anthropic'in SDK'sı da yalnızca tek bir base_url değişikliğiyle çalışır.

anthropic_native.py
from anthropic import Anthropic

client = Anthropic(
    api_key="sk-kn-...",
    base_url="https://api.kunavo.com",     # SDK appends /v1/messages
)

resp = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=1024,
    system="You are a senior platform engineer.",
    messages=[{"role": "user", "content": "What is a hot standby?"}],
)
print(resp.content[0].text)

Doğrudan iletilen parametrelerin tam listesi için Anthropic'in kendi Messages API'sinin belgelerine, istem önbelleğe almanın yinelenen istemlerde giriş maliyetini %90'a kadar nasıl azalttığını öğrenmek için /docs/caching adresine bakın.

İstem önbelleğe alma tek başına SDK değiştirmenizi gerektirmez. Uzun bir istemde Kunavo, OpenAI biçimli rotada önbellek kesme noktalarını sizin için ayarlar: sistem isteminde, araç tanımlarında ve zaten bir asistan turu içeren bir konuşmanın son mesajında. Bir sistem mesajına, kullanıcı mesajına veya araç tanımına kendiniz eklediğiniz cache_control, Claude'a iletilir.

Neyi kaybedersiniz — ne kazanırsınız

OpenAI biçimli rota sağlayıcının kendi protokolü değil, bir çeviridir. İki küçük unsur sınırı aşmaz:

  • Düşünme ayarları — thinking ve reasoning_effort bu rotada Claude'a iletilmez. Genişletilmiş düşünmeyi etkinleştirmek veya ayarlamak için Anthropic'in kendi Messages API'sini kullanın.
  • Düşünme çıktısı — model düşündüğünde yanıt bu düşünmeyi içermez ve kullanım nesnesinde bunun için ayrı bir sayım bulunmaz: düşünme token'ları completion_tokens içinde sayılır.

Kazancınız önemlidir: Claude, GPT, GPT-Image, Veo ve kataloğun geri kalanında tek bir SDK; modele bağlı olarak üst sağlayıcının resmî fiyatlarının altında ücretler; yerel para biriminizde Stripe tabanlı faturalandırma; sessiz model değişikliği yok — yük devretme sağlayıcıyı değiştirir, modeli asla değiştirmez ve kontrol paneli her çağrının modelini, token'larını ve maliyetini ayrıntılı olarak gösterir.

Doğrulamak için iki dakika

kunavo.com/app/signup adresinden kaydolun — $10 yükleme, kullandıkça öde modeliyle birkaç bin Claude çağrısını karşılar ve bakiyenizin süresi dolmaz. base_url değerinizi girin, model kimliğinizi bir Claude slug'ı ile değiştirin ve mevcut test paketini bununla çalıştırın. Bir şey düzgün aktarılmazsa contact@kunavo.com adresine e-posta gönderin — her mesajı okuyoruz.