TR ▾
API anahtarı al

DeepSeek API SDK: OpenAI SDK'yi kullanın ve uç noktaları değiştirin

Bir DeepSeek API SDK kurulumu için özel bir istemci kurmanıza gerek yoktur: DeepSeek tarzı API'ler OpenAI formatını izler, bu nedenle OpenAI SDK'si farklı bir temel URL ile çalışır. Bu aynı gerçek, üç değeri değiştirerek başka bir uç noktaya geçmenizi sağlar.

güncellendi

Bir SDK ile uç noktaları değiştirme işlemini gösteren, birkaç sunucu kulesine besleme yapan bir bağlayıcı bloğu

Temel noktalar

  • OpenAI Python ve Node SDK'ları herhangi bir OpenAI uyumlu uç nokta ile çalışır; base URL, anahtar ve model adını değiştirirsiniz.
  • Bu üç değeri ortam değişkenlerinde tutun, böylece uç nokta değiştirmek için kod düzenlemenize gerek kalmaz.
  • Değiştirme işlemi düz sohbet, akış ve fonksiyon çağrıları için güvenlidir, ancak bunlara güvenmeden önce model özelliklerini test edin.
  • Bu uç nokta için https://api.deepseekapi.top/v1 ve model id uncensored kullanın.

Neden OpenAI SDK'si DeepSeek API SDK'sidir

Bir DeepSeek API SDK'sı aradıklarında, satıcının adını taşıyan bir paket beklerler. Pratikte, DeepSeek'in kendi belgeleri API'yi farklı bir base URL ile OpenAI SDK'sı üzerinden çağırmayı tanımlar, çünkü API OpenAI istek ve yanıt formatını izler. Tam base URL ve model adları için güncel belgelerine bakın; hizmetleri konusunda otorite onlardır.

Sonucu kullanışlı kılar. OpenAI istemci kütüphanesi için yazılan herhangi bir kod, aynı uç noktaları uygulayan herhangi bir sunucu ile iletişim kurabilir; burada bunlar POST /v1/chat/completions, POST /v1/responses ve GET /v1/models'dir. Sağlayıcılar arasında geçiş yapmak bir yeniden yazma değil, bir yapılandırma değişikliği haline gelir. Bu makalenin geri kalanı deseni Python, Node ve curl'de gösterir, ardından geçişi basitleştiren bir yapı sunar.

Python kurulumu

Resmi paketi yükleyin ve uç noktaya yönlendirin:

pip install openai
from openai import OpenAI

client = OpenAI(
    base_url="https://api.deepseekapi.top/v1",
    api_key="YOUR_KEY",
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You are a concise technical assistant."},
        {"role": "user", "content": "Explain idempotency in two sentences."},
    ],
)
print(resp.choices[0].message.content)
print(resp.usage)

Bir anahtarı API anahtarı sayfasından alın. Yeni kullanıcılar tek tıkla, kart olmadan $0,50 deneme kredisi talep edebilir. DeepSeek API Python makalesi hata işleme dahil olmak üzere bu dil hakkında daha fazla bilgi verir.

Node.js kurulumu

npm install openai
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.deepseekapi.top/v1",
  apiKey: process.env.API_KEY,
});

const stream = await client.chat.completions.create({
  model: "uncensored",
  stream: true,
  messages: [{ role: "user", content: "List four uses of a message queue." }],
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}

Desen aynıdır: base URL, anahtar, model. Akış, Sunucu Tarafından Gönderilen Olaylar döndürür ve kütüphane bunları asenkron bir yineleyiciye dönüştürür. Fonksiyon çağırma diğer OpenAI uyumlu API'lerle aynı şemayı izler: tools'i iletin, akışlı tool_calls'i okuyun ve sonuçları role: "tool" mesajları olarak döndürün.

Uç noktasını değiştirilebilir kılın

Bu üç değeri kod içine gömün değil, ortam değişkenlerinden okuyun ve istemci oluşturma işlemini bir işlevin içine alın. Ardından bir uç noktadan diğerine geçmek, kaynak koddan ziyade .env dosyasını düzenlemek anlamına gelir.

import os
from openai import OpenAI

def make_client():
    return OpenAI(
        base_url=os.environ.get("LLM_BASE_URL", "https://api.deepseekapi.top/v1"),
        api_key=os.environ["LLM_API_KEY"],
    )

MODEL = os.environ.get("LLM_MODEL", "uncensored")

def ask(prompt: str) -> str:
    r = make_client().chat.completions.create(
        model=MODEL,
        messages=[{"role": "user", "content": prompt}],
        temperature=0.7,
    )
    return r.choices[0].message.content

Artık farklı bir sağlayıcı için yalnızca üç ortam değişkenine ihtiyaç vardır. Resmi SDK'lar bazı sürümlerde OPENAI_API_BASE ve OPENAI_API_KEY'i de okur, ancak açık değişkenler daha nettir ve aynı anda birkaç sağlayıcı çalıştırırken sürprizleri önler.

TypeScript veya başka bir dil kullanıyorsanız, fikir aynıdır: bir fabrika işlevi, üç değişken ve kod tabanında dağılmış sağlayıcı adları yok. Yaygın bir hata, tedarikçi adının işlev adlarına, günlük mesajlarına ve değişken adlarına sızmasına izin vermektir; bu da sonraki bir değişikliği olduğundan daha zor hale getirir. Şeyleri sağlayıcıya göre değil, işlevine göre adlandırın (ask, summarise).

ask() üzerinden sabit bir istem gönderen ve boş olmayan bir yanıt için kontrol eden küçük bir test tutun. Her uç nokta değişikliğinden sonra çalıştırın; yanlış URL'leri ve anahtarları saniyeler içinde yakalar.

Değiştirirken ne değişir ve ne değişmez

ÖğeDeğişmezDeğişebilir
İstek şeklimessages, roller, temperature, top_p, stopBir sağlayıcının desteklemediği isteğe bağlı parametreler
AkışVeri parçaları ile SSEKullanımın akışta nerede göründüğü
Araç çağırmatools, tool_choice, tool_callsModelin bir şemayı ne kadar iyi takip ettiği
Model adıGerekli alanDeğerin kendisi: burada uncensored
Bağlam penceresiPrompt ve tamamlamaBoyut: Burada 100.000 token
DavranışSohbet formatıStil, güçlü yönler, reddetme davranışı

Son satır insanları yakalayan kısımdır. Bir uç nokta protokol düzeyinde uyumludur, davranış düzeyinde değil. İki sağlayıcı aynı istekleri kabul edebilir ve çok farklı yanıtlar verebilir. Burada model, bağımsız bir sağlayıcıdan gelen tek bir açık ağırlıklı modeldir, yasal yetişkin kullanım için içerik reddetmeleri olmadan cevap verecek şekilde ayarlanmıştır ve DeepSeek'in veya başka bir laboratuvarın resmi API'si değildir. Başka bir model için ayarladığınız istemleri yeniden test edin.

Bu uç noktanın sahip olduğu ve sahip olmadığı özellikler

  • Desteklenen: sohbet tamamlamaları, Responses formatı, model listeleme, akış, fonksiyon çağırma, JSON modu (response_format ile json_object), ve temperature, top_p, stop, seed ve cezaların pas geçilmesi.
  • Sunulmayan: görsel, ses veya video oluşturma, embedding'ler, ince ayar.
  • Sınırlar: 100.000 token'lık bir pencere, 8 MB maksimum gövde boyutu, 8 eşzamanlı istek ve tam bir anahtar başına dakikada 300 istek (deneme anahtarında 2 ve 60).
  • Hatalar: HTTP 429, rate_limited veya concurrency kodu ile ve geçici aşırı yüklenme durumunda Retry-After: 5 başlığı.

Kodunuz bir embeddings uç noktasını çağırıyorsa, bu kısım için başka bir sağlayıcıya ihtiyacınız olacak ve sohbeti burada tutabilirsiniz. Göreve göre bölme, yukarıdaki ortam değişkeni deseninin yaygın bir nedenidir.

Bir geçiş kontrol listesi

Mevcut bir projede bir uç noktayı başka biriyle değiştirdiğinizde, her şeyi aynı anda değiştirmek yerine kısa bir listeden geçin.

  1. Uç noktasını kanıtlayın. curl ile bir istek gönderin ve metin almayı onaylayın. GET /v1/models'i çağırın ve id uncensored'in listelendiğini kontrol edin.
  2. Üç değeri değiştirin. Temel URL, anahtar, model adı, başka hiçbir şey değil. Henüz istemlerle oynamayın.
  3. Mevcut testlerinizi çalıştırın. İstem regresyon testleriniz varsa, çalıştırın ve hangilerinin başarısız olduğunu not edin. Başarısızlıklar genellikle protokol hataları değil, farklı bir çıktı formatı gibi davranışsal hatalardır.
  4. Parametreleri kontrol edin. Uç noktanın ihtiyaç duymadığı seçenekleri kaldırın. Kullanıyorsanız temperature, top_p, stop ve seed parametrelerini koruyun.
  5. Akış ve araçları ayrı ayrı test edin. Akış hataları genellikle belirli bir parça düzenini varsayan istemci kodunda gizlenir. Araç çağrıları, modelin iyi takip edeceği bir şema gerektirir; bu nedenle gerçek fonksiyonlarınızla test edin.
  6. Gerçek trafik üzerinde maliyet ve gecikmeyi ölçün. Bir istemi değil, bir günlük istekleri karşılaştırın.

Bunu, trafiğin küçük bir kısmını yeni uç noktaya yönlendiren bir dalda veya özellik bayrağı ile yapın. İstemci kodu paylaşıldığından, geri alma işlemi bir ortam değişkenini değiştirmektir.

Yeniden denemeleri ve kullanım durumunu yönetin

SDK'lar bazı hataları varsayılan olarak yeniden dener, ancak üretim ortamında eşzamanlılık limitleri gerçek olduğundan 429 durum kodunu kendiniz yönetmelisiniz. Hız limiti özel durumunu yakalayın, Retry-After içindeki saniye sayısına kadar bekleyin (yüklenme durumunda 5 saniye) ve birkaç kez yeniden deneyin. Başarısız istekler ücretlendirilmez, bu nedenle yeniden denemeler bakiyeniz için güvenlidir.

Her çağrıda usage.prompt_tokens ve usage.completion_tokens değerlerini günlüğe kaydedin. Fiyatlandırma 1M girdi token başı $0.15 ve 1M çıktı token başı $0.50'dir; bu nedenle 2.000 girdi token ve 600 çıktı token içeren bir çağrı 2.000 × $0.15 / 1M + 600 × $0.50 / 1M = $0.0003 + $0.0003 = $0.0006 maliyetine sahiptir. Yanıt başlıkları ayrıca kalan kredi için X-Balance-USD değerini içerir. Bakiye yükleme ve bonuslar için fiyatlandırma sayfasına, tam parametre listesi için dokümantasyona bakın.

Editörler ve diğer araçlar

Bu üç değer, OpenAI uyumlu sağlayıcı ayarına sahip herhangi bir araca otomatik olarak aktarılır. Cursor'da DeepSeek tarzı bir API kullanma makalesi böyle bir editörle ilgili adımları anlatır. Her bir araçta alanlar biraz farklı etiketlenir, ancak her zaman /v1 ile biten temel URL'yi, anahtarı ve model adını girersiniz.

Sorular ve cevaplar

Kurulum yapmam gereken resmi bir DeepSeek SDK'sı var mı?

Satıcıya özgü bir pakete ihtiyacınız yok. DeepSeek, farklı bir base URL ile OpenAI SDK'sını kullanmayı belgeler; güncel detaylar için belgelerine bakın.

Bu uç noktayı kullanmak için hangi üç değeri değiştiririm?

Temel URL (https://api.deepseekapi.top/v1), API anahtarı ve model kimliği uncensored.

Mevcut OpenAI kodum değişmeden çalışır mı?

Sohbet, akış, JSON modu ve araç çağırma aynı formatı izler, bu nedenle büyük ölçüde evet. Gömme vektörleri, görseller ve ses sunulmaz ve model farklı olduğu için yanıtlar farklılık gösterir.

SDK anahtarı doğru şekilde gönderiyor mu?

Evet, anahtarınızı otomatik olarak Authorization: Bearer ile gönderir.

Anahtarınız tek bir formun uzağında

Bir hesap oluşturun, anahtarı kopyalayın ve base URL'yi değiştirin. Kurulum bu kadar basit.

API anahtarı al