Temel noktalar
- Tek bir base URL ve tek bir model kimliği (uncensored), herhangi bir OpenAI SDK'sı veya istemcisiyle çalışır.
- Akış, fonksiyon çağırma ve JSON modu desteklenir; 100.000 tokenlık bağlam penceresi sunar.
- Tam anahtar 8 eşzamanlı istek ve dakikada 300 istek izni verir, bu yüzden yoğun uygulamalar için küçük bir kuyruk planlayın.
- Faturalandırma, ön ödemeli krediden 1M input token başına $0.15 ve 1M output token başına $0.50'dir; istemler eğitim için kullanılmaz.
Tek bir uç noktadan ne alırsınız
İnsanlar, yasal yetişkin kullanımı için Uncensored LLM Hub'ı, içerik reddi olmadan yanıt veren bir model istediklerinde arar, ancak GPU çalıştırmak istemezler. Servis düz bir HTTPS API'sidir. Bir OpenAI istemcisini https://api.uncensoredllmhub.com/v1 adresine yönlendirirsiniz, model kimliği uncensored'i gönderirsiniz ve Authorization: Bearer YOUR_KEY ile kimlik doğrulaması yaparsınız. İki yöntem vardır: POST /v1/chat/completions konuşmalar için ve GET /v1/models listeleme için.
O uç noktanın arkasında ne olduğunu netleştirmek faydalıdır. Bu, bağımsız bir sağlayıcı tarafından çalışan ve içerik reddlerini atlamaya ayarlanmış tek bir açık ağırlıklı modeldir. Büyük bir satıcının resmi API'si değildir ve modeller arasında seçim yapan bir yönlendirici değildir. Yalnızca metin işler: görsel, ses, video, embedding veya ince ayar yok. Tek bir katı kural istisnasız geçerlidir: reşit olmayanlar içeren cinsel içerik yoktur.
Bu dar kapsam asıl noktadır. Tek bir kararlı uç nokta etrafında kolayca yapılandırılabilir. Aşağıdaki bölümler küçük bir sohbet arka ucunu, ardından bir ajan döngüsünü ve tasarım için ihtiyacınız olan sınırları gösterir.
Adım 1: mevcut bir istemciyi bağlayın
API, OpenAI formatını takip ettiği için yeni istemci kodu yazmanız çok azdır. SDK'nızı veya aracınızı açın, base URL'yi ve anahtarı değiştirin ve modeli uncensored olarak ayarlayın. Öncelikle API anahtarı sayfasında (Google veya e-posta ve şifre ile) giriş yapın, ardından tek tıkla $0.50 deneme kredisi talep edin. Deneme için kart gerekmez, 7 gün sürer ve kişi başı bir kezle sınırlıdır.
Python ile minimal bir istek:
from openai import OpenAI
client = OpenAI(
base_url="https://api.uncensoredllmhub.com/v1",
api_key="YOUR_API_KEY",
)
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "You are a concise assistant for a writing tool."},
{"role": "user", "content": "Give me three opening lines for a mystery set on a ferry."},
],
temperature=0.9,
top_p=0.95,
)
print(resp.choices[0].message.content)
temperature, top_p, stop, seed gibi örnekleme ayarları ve frekans ile varlık cezaları modele iletilir, bu nedenle diğer sağlayıcılardan bildiğiniz düğmeler aynı şekilde çalışır. Aynı çağrı, özel bir OpenAI uyumlu uç nokta kabul eden araçlarda da çalışır, örneğin SillyTavern veya Open WebUI: base URL'yi yapıştırın, anahtarı ekleyin, model kimliğini elle yazın.
Adım 2: yanıtları bir sohbet arayüzüne akış olarak gönderin
Kullanıcı tam cevap gelene kadar boş bir kutuya bakarsa sohbet uygulamaları yavaş hissettirir. Akış bunu düzeltir. stream: true ayarlayın ve API, akışın sonunda kullanım bilgisiyle birlikte cevabı sunucu gönderilen olaylar olarak gönderir. Gelen token'ları ileten bir Node sürümü burada:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.uncensoredllmhub.com/v1",
apiKey: process.env.API_KEY,
});
export async function streamReply(history, onToken, signal) {
const stream = await client.chat.completions.create(
{ model: "uncensored", messages: history, stream: true },
{ signal }
);
let text = "";
for await (const chunk of stream) {
const piece = chunk.choices[0]?.delta?.content ?? "";
if (piece) {
text += piece;
onToken(piece);
}
}
return text;
}
İki alışkanlık ileride sorunları önler. İlk olarak, her zaman bir iptal sinyali iletin ve kullanıcı sekmeyi kapattığında veya durdur'a bastığında iptal edin. Akışlı bir istek, akış bitene kadar eşzamanlılık slotunu işgal eder, bu yüzden terk edilen akışlar izninizden yer kaplar. İkinci olarak, birleştirdiğiniz tam metni saklayın, çünkü bir sonraki dönüş için asistan mesajı olarak geçmişe ekleyeceksiniz.
Akış sırasında ön ucunuzda belirsiz hatalar görürseniz, yaygın nedenları kapsayan akış hatalarını tanımlama notumuz, yanlış base URL, olayları arabelleğe alan bir proxy ve iki 429 kodu gibi.
Adım 3: uzun bağlamı bilinçli kullanın
Bağlam penceresi 100.000 token'dır ve istem ile tamamlama tarafından paylaşılır. Bir hikaye yazma aracı, karakter sohbeti veya belge asistanı için bu, uzun bir geçmiş, büyük bir sistem istemi ve referans materyalinin aynı anda yer alması için alan demektir. max_tokens ayarlamanıza gerek yoktur; tamamlama kalanı kullanabilir.
Uzun bağlam bu fiyatlarla denemek için ucuzdur. Tüm pencereyi girişle doldurmak 100.000 giriş token'ı için 0,1 × $0,15 = $0,015 maliyetindedir. 2.000 token'lık bir cevap (0,002 × $0,50 = $0,001) ekleyin ve neredeyse tam bir çağrı $0,016 maliyetindedir. Yine de pencereyi yönetmek isteyeceksiniz, üç nedenle: gecikme istem boyutuyla artar, her dönüş geçmişi yeniden gönderir, bu da maliyetleri bir oturum boyunca toplar ve çok uzun geçmişler üstteki talimatları sulandırır.
Basit bir politika iyi çalışır:
- Sistem istemini ve sabit referans metnini başta tutun.
- En son adımları aynen koruyun.
- Geçmiş seçtiğiniz bir eşiği (örneğin 60.000 token) geçtiğinde, modele en eski kısmı kısa bir nota özetlemesini ve bu dönüşleri bununla değiştirmesini isteyin.
- Sonraki isteğin ne kadar büyük olacağını karakterlerle tahmin etmek yerine, her yanıttan
usage.prompt_tokensokuyun.
Adım 4: ajanlar için araçlar ve yapılandırılmış çıktı
Ajanların bir modelden iki şeye ihtiyacı vardır: fonksiyonları çağırma yolu ve ayrıştırabileceğiniz çıktı. İkisi de desteklenir. Araç çağırma standart tools ve tool_choice parametrelerini kullanır, araç çağrıları akış yapılabilir ve sonuçlar role: "tool" ile mesajlar olarak geri gönderilir. Tek bir gidiş-dönüş şöyle görünür:
import json
from openai import OpenAI
client = OpenAI(
base_url="https://api.uncensoredllmhub.com/v1",
api_key="YOUR_API_KEY",
)
tools = [{
"type": "function",
"function": {
"name": "lookup_order",
"description": "Find an order by its number.",
"parameters": {
"type": "object",
"properties": {"order_id": {"type": "string"}},
"required": ["order_id"],
},
},
}]
messages = [{"role": "user", "content": "Where is order A-1042?"}]
first = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
msg = first.choices[0].message
if msg.tool_calls:
call = msg.tool_calls[0]
args = json.loads(call.function.arguments)
result = {"order_id": args["order_id"], "status": "shipped"} # your real lookup goes here
messages.append(msg)
messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps(result)})
final = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
print(final.choices[0].message.content)
Yan etkileri olan herhangi bir şeyi çalıştırmadan önce her zaman argümanları doğrulayın. Bir model hatalı veya beklenmedik bir değer üretebilir ve kodunuz son savunma çizgisidir.
Araçlar olmadan düz yapılandırılmış çıktı için, response_format değerini {"type": "json_object"} olarak ayarlayarak JSON modunu kullanın. İstediğiniz şekli istemde de belirtin ve yanıtı bir try bloğu içinde ayrıştırın, böylece kötü bir yanıt bir çökme yerine bir yeniden deneme tetikler.
curl https://api.uncensoredllmhub.com/v1/chat/completions -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" -d '{
"model": "uncensored",
"response_format": {"type": "json_object"},
"messages": [
{"role": "system", "content": "Reply with JSON: {"title": string, "tags": [string]}"},
{"role": "user", "content": "Describe a noir story set in a rainy port city."}
]
}'
Tasarım etrafında dikkate alınacak sınırlamalar
Tam anahtar 8 eşzamanlı istek ve dakikada 300 istek izni verir. Deneme anahtarı 2 ve 60 izni verir. Gövde en fazla 8 MB olabilir. Her yanıt X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests ve X-RateLimit-Limit-Concurrency taşır, bunlar loglamak için faydalıdır.
Bir limiti aştığınızda API HTTP 429 döndürür. Kod, dakika başına çok fazla istek için rate_limited ve aynı anda çok fazla için concurrency'dir. Geçici bir aşırı yükleme de 429 döndürür, Retry-After: 5 ile. Çok kullanıcılı bir uygulama için API'nin önüne küçük bir kuyruk koyun: eşzamanlılık limitinin altında boyutlandırılmış bir semafor ve Retry-After'i saygı duyan bir yeniden deneme. Paralel araç çağrılarına yayılan bir ajan için, yaymayı aynı sayıya kadar sınırlayın.
Tam parametre listesi ve hata formatı API belgelerinde bulunur.
Maliyet, bakiye yükleme ve veri işleme
Fiyatlandırma, giriş token'ı başına 1M başına $0,15 ve çıkış token'ı başına 1M başına $0,50'dir, ön ödemeli krediden. Abonelik yoktur, kredi asla sona ermez ve başarısız veya reddedilen istekler ücretlendirilmez. 1.500 giriş ve 500 çıkış token'ı olan bir sohbet dönüşü 0,0015 × $0,15 + 0,0005 × $0,50 = $0,000225 + $0,00025 = $0,000475 maliyetindedir, bu nedenle $20 kredi yaklaşık 42.000 böyle dönüşü karşılar.
$20 ile $500 arasında herhangi bir tam tutarı yükleyebilirsiniz. Bonus $50'den +%5, $100'den +%10 ve $200'den +%15'tir. Kart (Visa, Mastercard, Apple Pay, Google Pay) veya kripto (TRC20 üzerinde USDT, Base üzerinde USDC) ile ödeme yapın. fiyatlandırma sayfası mevcut tabloyu içerir.
Veri konusunda: istemler eğitim için kullanılmaz. Tam metin için gizlilik politikasını okuyun. Modelle inşa ettiklerinizden siz sorumlusunuz ve servis yalnızca yasal yetişkin kullanımı içindir.
