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.

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
| Öğe | Değişmez | Değişebilir |
|---|---|---|
| İstek şekli | messages, roller, temperature, top_p, stop | Bir sağlayıcının desteklemediği isteğe bağlı parametreler |
| Akış | Veri parçaları ile SSE | Kullanımın akışta nerede göründüğü |
| Araç çağırma | tools, tool_choice, tool_calls | Modelin bir şemayı ne kadar iyi takip ettiği |
| Model adı | Gerekli alan | Değerin kendisi: burada uncensored |
| Bağlam penceresi | Prompt ve tamamlama | Boyut: 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_formatilejson_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_limitedveyaconcurrencykodu ile ve geçici aşırı yüklenme durumundaRetry-After: 5baş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.
- 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 iduncensored'in listelendiğini kontrol edin. - Üç değeri değiştirin. Temel URL, anahtar, model adı, başka hiçbir şey değil. Henüz istemlerle oynamayın.
- 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.
- Parametreleri kontrol edin. Uç noktanın ihtiyaç duymadığı seçenekleri kaldırın. Kullanıyorsanız temperature, top_p, stop ve seed parametrelerini koruyun.
- 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.
- 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.
Daha fazla kılavuz
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.