TR ▾
API anahtarı al

Yerel LLM OpenAI API: Yerel Çalıştır, Sunucuya Geç

Yerel bir LLM OpenAI API, OpenAI SDK'larının gönderdiği aynı HTTP isteklerini yanıtlayan kendi makinenizdeki bir model sunucusudur. İstek formatı paylaşıldığından, yazdığınız istemci kodu barındırılan bir uç noktada da çalışır; bu sayfa neyin aktarılacağını ve neyin aktarılmayacağını gösterir.

güncellendi

Yerel ve barındırılan LLM uç noktalarını gösteren, bir anahtar geçidi ile bir masaüstü bilgisayar ve bulut sunucusunun tek bir kablo ile bağlandığı görünüm.

Temel noktalar

İfadenin anlamı

İnsanlar "yerel LLM OpenAI API" ifadesini iki ilgili amaç için kullanır. İlki, dizüstü bilgisayarda veya ev sunucusunda çalıştırılan ve yerel bir bağlantı noktasında dinleyen OpenAI sohbet formatını destekleyen bir dil modelidir. İkincisi, modelin değiştirilebileceği şekilde uygulamanızı bu formata uygun yazma alışkanlığıdır.

Format basit bir sözleşmedir. Uygulamanız, model adı ve sistem, kullanıcı veya asistan rolü içeren bir liste olan messages ile bir JSON gövdesi gönderir. Sunucu, oluşturulan mesajı içeren bir JSON nesnesi veya akış isterseniz küçük parçaların akışı ile yanıt verir. Python ve JavaScript için resmi SDK'lar bunu sarar ve temel URL'yi geçersiz kılamanızı sağlar; bu asıl püf noktasıdır.

Birçok yerel araç bu sözleşmeyi sunar. Ollama, LM Studio, llama.cpp sunucusu ve vLLM her biri OpenAI tarzı bir rota sunar. Barındırılan hizmetler de öyle; bu nedenle aynı yirmi satır istemci kodu her ikisine de bağlanabilir. Bu sitedeki uç nokta barındırılan türdendir. POST /v1/chat/completions ve GET /v1/models kabul eder ve https://api.onekeyllmapi.com/v1 adresinden erişilir.

Yerel ile sunulan arasındaki fark

Genel olarak biri diğerinden daha iyi değildir. Kontrolü çabaya feda ederler. Tablo, belirli bir ürün için değil, kategori için geçerli olan farklılıklara sadık kalır.

SoruYerel çalıştırıcıSunulan OpenAI tarzı API
İstemlerin gittiği yerMakinenizde kalırHTTPS üzerinden sağlayıcıya bağlanın
DonanımGPU veya CPU ve bellek sağlarsınızSizin tarafınızda ek donanım veya maliyet gerekmez
Model boyutuBelleğinizle sınırlıdırSağlayıcının sunduğu her şey
Maliyet modeliDonanım ve güçToken başına, buradan ön ödemeli krediden
KullanılabilirlikMakineniz açık olduğu süreceKesintisiz sunucu, paylaşılan limitler
KurulumKurulum, ağırlık indirme, ayarlamaAnahtar oluşturun, temel URL'yi ayarlayın

Verilerinizin asla kontrolünüzdeki bir makineden ayrılmaması gerekiyorsa, yerel dağıtım kazanır ve barındırılan (hosted) yanlış bir araçtır. Donanımınızın taşıyabileceğinden daha büyük bir modele ihtiyacınız varsa veya birden fazla yerden erişilebilir bir bot gerekirse, barındırılan (hosted) kazanır. Yaygın bir kurulum her ikisini de tutar ve görev başına seçim yapar.

İstemciyi yerelden sunucuya geçirme

Kodunuz zaten bir yerel çalıştırıcı ile konuşuyorsa, geçiş üç değerdir. Mesajları oluşturma ve akış parçalarını okuma dahil her şey aynı kalır.

  1. Base URL. Yerel adresiniz yerine https://api.onekeyllmapi.com/v1 kullanın.
  2. API anahtarı. Yerel sunucular genellikle anahtarı yok sayar. Barındırılan bir hizmet bunu Authorization: Bearer <key> olarak gerektirir ve SDK bunu sizin için gönderir.
  3. Model Kimliği. Yerel isimler, çektiğiniz modele göre değişir. Burada kimlik uncensored.

Bunu esnek tutmanın düzenli bir yolu, üçünü de ortam değişkenlerinden okumaktır; böylece tek bir dosya her iki yerde de çalışır.

import os
from openai import OpenAI

client = OpenAI(
    base_url=os.environ.get("LLM_BASE_URL", "https://api.onekeyllmapi.com/v1"),
    api_key=os.environ.get("LLM_API_KEY", "YOUR_KEY"),
)
MODEL = os.environ.get("LLM_MODEL", "uncensored")

models = client.models.list()
print([m.id for m in models.data])

resp = client.chat.completions.create(
    model=MODEL,
    messages=[
        {"role": "system", "content": "Answer in two sentences."},
        {"role": "user", "content": "Why do OpenAI-style endpoints make switching models easy?"},
    ],
    temperature=0.5,
)
print(resp.choices[0].message.content)

Komut satırından yapılan aynı çağrı, hızlı bir duman testi için kullanışlıdır:

curl https://api.onekeyllmapi.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "uncensored", "messages": [{"role": "user", "content": "ping"}], "max_tokens": 20}'

Node ile desen aynıdır:

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: process.env.LLM_BASE_URL ?? "https://api.onekeyllmapi.com/v1",
  apiKey: process.env.LLM_API_KEY,
});

const res = await client.chat.completions.create({
  model: process.env.LLM_MODEL ?? "uncensored",
  messages: [{ role: "user", content: "Name three uses for JSON mode." }],
});
console.log(res.choices[0].message.content);

OpenAI uyumluluğunun kapsadığı ve kapsamadığı alanlar

Uyumluluk, veri formatının eşleştiği anlamına gelir. Orijinal hizmetin sunduğu tüm özelliklerin mevcut olduğunu garanti etmez. Gerçek bir uygulamayı taşımadan önce, bu maddelerin her birini hedef sistemle karşılaştırın.

Bu API'nin destekledikleri

  • Sohbet tamamlama uç noktaları POST /v1/chat/completions ve model listesi GET /v1/models adresindedir.
  • stream: true ile Sunucu Tarafından Gönderilen Olaylar (SSE) üzerinden akış; kullanım akışın sonunda bildirilir.
  • tools ve tool_choice aracılığıyla araç çağırma; akışlı tool_calls ve sonuçlar role: "tool" mesajları olarak gönderilir.
  • response_format: {"type": "json_object"} aracılığıyla JSON modu.
  • Örneklem kontrolleri: temperature, top_p, stop, seed ve ceza parametreleri geçirilir.

Ne yapmaz

  • Görüntü, ses veya video oluşturma yok. Sadece metindir.
  • Gömme uç noktası ve ince ayarlama yok. Uygulamanız bir vektör dizini oluşturuyorsa, ayrı bir gömme kaynağına ihtiyacınız vardır.
  • Yalnızca bir model. Model, bağımsız bir sağlayıcı tarafından yönetilen bir açık ağırlıklı modeldir. Büyük bir üreticinin resmi API'si değildir ve sağlayıcılar arasında bir yönlendirici değildir; bu nedenle ID'yi değiştirerek model aileleri arasında seçim yapamazsınız.

Yerel çalıştırıcılar bazen ters yönde farklılık gösterir: yerel bir sunucu gömme rotası sunabilir veya birden fazla model yüklemenize izin verebilir ve bağlam boyutu yapılandırdığınız şeydir. Her biri için hedefin belgelerini okuyun ve uygulamanızın gerçekten kullandığı özelliklerin kısa bir listesini tutun. hızlı başlangıç belgeleri istek alanlarını tam olarak gösterir.

Bağlam, limitler ve maliyet farklılıkları

Yerel bir sunucudan ayrıldığınızda üç sayı değişir. İlki pencere boyutudur. Yerel bir çalıştırıcının bağlam uzunluğu, belleğinize bağlı bir ayardır. Burada 100.000 token ile sabitlenmiştir, istem ve tamamlama tarafından paylaşılır ve max_tokens isteğe bağlıdır. İkincisi eşzamanlılıktır. Kendi makineniz istediğiniz kadar kuyruğa alınabilir, ancak tam bir anahtarla burada 8 eşzamanlı istek ve dakikada 300 istek, deneme anahtarı ile 2 ve 60 izin verilir. Üçüncüsü faturadır.

Barındırılan kullanım 1M giriş token'ı başına $0.15 ve 1M çıktı token'ı başına $0.50 maliyetle, ön ödemeli krediden kullandıkça öde yöntemiyle yapılır. Günlük bir işi örnek olarak ele alalım: bir özetleyici günde 400 belge işler, her biri 3.000 token giriş ve 300 token çıktı içerir. Giriş 400 x 3.000 = 1.200.000 token'dır, bu da 1.2 x $0.15 = $0.18'e mal olur. Çıktı 400 x 300 = 120.000 token'dır, bu da 0.12 x $0.50 = $0.06'a mal olur. Günün toplamı $0.24 olur ve 30 günlük bir ay $7.20 eder. Karar vermeden önce bir GPU'nun çalıştırılma maliyeti ve kartın kendisinin maliyetiyle karşılaştırın.

Bir limiti aştığınızda API, rate_limited veya concurrency koduyla HTTP 429 yanıtı verir. Kısa bir aşırı yüklenme durumunda Retry-After: 5 ekler. Bekleyip tekrar deneme mantığını koruyun. Başarısız veya reddedilen istekler ücretlendirilmez. Kredi asla sona ermez; bu nedenle pasif bir ayın maliyeti yoktur.

Akışlı bir istek, akış bitene kadar eşzamanlılık slotunu korur; okumayı bıraktığınız akışları kapatın. Bakiye yükleme $20'den başlar; seviyeler ve bonuslar fiyatlandırma sayfasında yer alır.

Geçiş düğmesinin beklendiği gibi çalışmaması durumunda hata ayıklama

Çoğu başarısız geçiş, birkaç nedene dayanır. Bunlara bu sırayla göz atın.

  • 404 veya bağlantı hataları. Temel URL muhtemelen /v1 sonekine sahip değil veya fazladan bir yol içeriyor. URL'yi tam olarak https://api.onekeyllmapi.com/v1 olarak kullanın.
  • Kimlik doğrulama hataları. Anahtar eksik veya yanlış başlıkta gönderiliyor. Format Authorization: Bearer <key> şeklindedir. SDK kullanıcıları ortam değişkeninin gerçekten yüklendiğinden emin olmalıdır.
  • Model bulunamadı. Eski yerel model adı hala yapılandırmanızda bulunuyor. GET /v1/models çağrısı yapın ve listede yer alan ID'yi kullanın; bu ID uncensored şeklindedir.
  • Yük altında 429 hatası. Tam anahtarınızla dakikada 300 veya eşzamanlı 8 istek sınırını aştınız. Bir kuyruk veya semafor ekleyin.
  • Bir parametre yok sayılıyor gibi görünüyor. Yukarıda listelenen geçirilen alanlardan biri olup olmadığını kontrol edin ve sabit bir seed ile düşük sıcaklık ayarıyla davranışı karşılaştırın.

Her yanıt X-Request-Id başlığını içerir. Kötü bir yanıtın daha sonra izlenebilmesi için bunu kendi istek kimliğinizin yanına loglayın. Üretim trafiği çalıştırıyorsanız ve kaliteyi zaman içinde ölçmek istiyorsanız, site makalesi LLM Observability: Myths vs Facts iyi bir sonraki okuma kaynağıdır. X-Balance-USD, X-RateLimit-Limit-Requests ve X-RateLimit-Limit-Concurrency yanıt başlıkları da yakalanmaya değerdir.

Taahhüt olmadan deneme

Kodunuzun temiz bir şekilde taşınıp taşınmadığını test etmenin en ucuz yolu onu bir kez çalıştırmaktır. Google veya e-posta ve şifre ile bir hesap oluşturun, ardından anahtar sayfasından 0,50 $ değerinde deneme kredisi talep edin. Tek tıklamayla yapılır, kart gerektirmez, kişi başı bir kezle sınırlıdır ve 7 gün boyunca geçerliliğini korur. Anahtarınızı API anahtarı sayfasından alın, yukarıdaki üç ortam değişkenini ayarlayın ve mevcut test paketinizi çalıştırın.

Testler başarılı olursa ve kullanım bütçenize uyuyorsa, kart (Visa, Mastercard, Apple Pay, Google Pay) veya kripto (TRC20 üzerinde USDT, Base üzerinde USDC) ile bakiye yükleyin. İstemler eğitim için kullanılmaz. Model, yasal yetişkin kullanımı için içerik reddi olmadan yanıt verecek şekilde ayarlanmıştır; tek bir sabit kural vardır: reşit olmayanlar ile ilgili cinsel içerik yoktur.

Sorular ve cevaplar

Yerel bir LLM'yi OpenAI-uyumlu bir API ile çalıştırabilir miyim?

Evet. Ollama, LM Studio, llama.cpp sunucusu ve vLLM gibi çalıştırıcılar OpenAI tarzı uç noktalar sunabilir ve OpenAI SDK'sını bu yerel adrese yönlendirebilirsiniz.

Uygulamamı bu barındırılan API'ye taşımak için neyi değiştirmeliyim?

Üç değer: temel URL, API anahtarı ve model kimliği. Burada örneklerde gösterilen temel URL, hesabınızdan bir bearer anahtarı ve model kimliği uncensored'dır.

Bu API gömme (embeddings) veya görüntü oluşturma desteği sağlıyor mu?

Hayır. Sadece metin içerir; sohbet tamamlamaları, akış, fonksiyon çağırma ve JSON modu sunar. Gömme veya görüntüler için ayrı bir hizmet kullanın.

Bu bir model satıcısının resmi API'si mi?

Hayır. Bağımsız bir sağlayıcı tarafından yürütülen tek bir açık ağırlıklı modeli sunar ve satıcılar arasında bir yönlendirici değildir.

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.