Ana Sayfa/API Referansı
Uncensored API Referansı: Alan Alan Açıklaması
Bu sayfa, Uncensored API ile göndereceğiniz veya alacağınız her alanı belgeler: chat completions istek gövdesi, yanıt nesnesi, finish_reason değerleri, usage bloğu, akış parçaları ve model listesi. Her bölüm, terminalinize yapıştırıp çalıştırabileceğiniz, açıklanmış bir örnekle kısa bir özellik belirtimi sunar.
güncellendi
Önemli noktalar
- İki uç nokta vardır: POST /v1/chat/completions ve GET /v1/models. İkisi de Bearer anahtarı ile kimlik doğrulaması yapar.
- Yanıt, id, choices[].message, finish_reason ve usage içeren tanıdık chat completion yapısını izler.
- Akış, sunucu tarafından gönderilen olayları (SSE) kullanır; son parça otomatik olarak usage taşır ve stream data: [DONE] ile sona erer.
- İstekleri şekillendiren limitler: 100.000 token bağlam penceresi, varsayılan 2048 ve maksimum 32.000 max_tokens, 8 MB gövde.
Kurallar ve taşıma
Temel URL https://api.uncensoredapis.com/v1 şeklindedir. Tüm gövdeler JSON ve UTF-8'dir. Her istek Authorization: Bearer <key> başlığını taşır; eksik veya yanlış anahtar 401 hatası döndürür. Sadece iki rota vardır, diğer tüm yollar 404 hatası verir.
| Yöntem | Yol | Amaç |
|---|---|---|
| POST | /v1/chat/completions | Asistan mesajı oluştur, isteğe bağlı olarak akış yap |
| GET | /v1/models | İsteyebileceğiniz model kimliğini listele |
API yalnızca metin içerir. Embedding, görsel, ses veya video rotaları yok; fine-tuning yok; yalnızca uncensored olarak hitap edilen tek bir model var. İletişim formatı chat completions kuralıyla uyumlu olduğundan, resmi Python ve Node SDK'ları base_url geçersiz kılındığında çalışır. dokümantasyon ilk kurulumu kapsar; bu sayfa alan düzeyinde bir tamamlayıcıdır.
İstek gövdesi alanları
Tablo, uç noktanın anladığı alanları listeler. Örnekleme alanları, üretim sırasında değiştirilmeden geçirilir; bu nedenle seçtiğiniz değerler herhangi bir chat-completions tarzı API'de olduğu gibi davranır.
| Alan | Tür | Notlar |
|---|---|---|
model | string | Her zaman "uncensored". |
messages | array | role (system, user, assistant, tool) ve content içeren sıralı nesneler. |
max_tokens | integer | Tamamlama sınırı. Varsayılan 2048, maksimum 32.000. |
temperature | number | Rastgelelik. Daha düşük değer daha belirleyicidir. |
top_p | number | Nükleus örnekleme kesme noktası. |
stop | string veya array | Üretimi sonlandıran dizeler. |
stream | boolean | true yanıtı sunucu tarafından gönderilen olaylara (SSE) yönlendirir. |
tools | dizi | Standart JSON şeması formatında fonksiyon tanımları. |
İşte tam açıklanmış bir istek. Sistem mesajı davranışı belirler, kullanıcı mesajı görevi taşır ve stop ilk boş satırda üretimi sonlandırır.
curl https://api.uncensoredapis.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [
{"role": "system", "content": "You are a terse release-notes writer."},
{"role": "user", "content": "Summarize: fixed login bug, added dark mode."}
],
"max_tokens": 120,
"temperature": 0.4,
"stop": ["\n\n"]
}'İki bütçe kuralı önemlidir. Birincisi, istem ile tamamlama metni 100.000 token içine sığmalıdır; bu nedenle istem tokenları ile max_tokens toplamı bu sınırı aşan istekler 400 hatası ile reddedilir. İkincisi, seri hale getirilmiş gövde 8 MB'ı geçemez. Uzun geçmişler gönderirseniz, bu limitlere yaklaştığında eski mesajları kendi tarafınızda kesin.
Yanıt nesnesi
Akış olmayan bir çağrı tek bir JSON nesnesi döndürür. Bunu aşağıdaki gibi baştan sona okuyun.
{
"id": "chatcmpl-example123",
"object": "chat.completion",
"created": 1767225600,
"model": "uncensored",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "v1.4: Login bug fixed. Dark mode added."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 38,
"completion_tokens": 14,
"total_tokens": 52
}
}- id: tamamlama için benzersiz bir tanımlayıcı. Olayları eşleştirmeye ihtiyacınız olduğunda bunu kendi istek kimliğinizin yanına kaydedin.
- object: sabit
chat.completiondeğeri. - created: Saniye cinsinden Unix zaman damgası.
- model:
uncensoreddeğerini yansıtır. - choices: bir dizi. Bir girdi alırsınız, bu nedenle
choices[0]cevaptır.indexonun konumudur. - choices[].message:
roleassistant'dir;contentmetni içerir veya model fonksiyon çağırma döndürdüğündenullolur. - choices[].finish_reason: üretimin neden durduğunu açıklar; bir sonraki bölüme bakın.
- usage: faturalandırma için token muhasebesi; aşağıda açıklanmıştır.
finish_reason değerleri
İçeriğe güvenmeden önce finish_reason değerine göre dallanma yapın. Bir kesilmiş bir cevap ile tam bir cevap, kontrol edilene kadar aynı görünür.
| Değer | Anlam | Kodunuzun yapması gerekenler |
|---|---|---|
stop | Model doğal bir sona ulaştı veya stop dizilerinizden birine ulaştı. | İçeriği olduğu gibi kullanın. |
length | max_tokens sınırı (veya bağlam penceresi) yanıt sırasında doldu. | max_tokens değerini artırın, isteği kısaltın veya modelden devam etmesini isteyin. |
tool_calls | Model bir veya daha fazla fonksiyonun çalıştırılmasını istiyor. | Bunları çalıştırın ve sonuçları tool mesajları olarak gönderin. |
Değer tool_calls olduğunda, mesaj aşağıdaki gibi görünür; argümanlar kendiniz ayrıştırmanız gereken bir JSON string nesnesi olarak iletilir:
{
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": null,
"tool_calls": [{
"id": "call_abc1",
"type": "function",
"function": {"name": "get_order", "arguments": "{\"order_id\": 8841}"}
}]
},
"finish_reason": "tool_calls"
}]
}Oluşturulan JSON bazen hatalı olabileceğinden, arguments üzerinde json.loads veya JSON.parse işlemini hata yönetimi içinde sarın.
Kullanım bloğu ve maliyeti
usage raporları prompt_tokens, completion_tokens ve total_tokens değerlerini içerir. Bakiyenizden düşülen tutarlar şunlardır: giriş için her milyon token başına $0.25 ve çıkış için her milyon token başına $1.00. Ön ödemeli bakiye, abonelik olmadan her istek için düşülür.
Belirtilen varsayımlar altında bir örnek: Bir istek 2.000 prompt token ve 500 completion token kullansın. Giriş maliyeti 2.000 / 1.000.000 x $0,25 = $0,0005'tir. Çıkış maliyeti 500 / 1.000.000 x $1,00 = $0,0005'tir. İstek toplamı $0,0010'dur. Bu token sayıları, gerçek bir iş yükünün ölçümü değil, aritmetik için varsayımlardır. Fiyatlandırma sayfası fiyatları tek bir yerde listeler.
Çıkış tokenları, giriş tokenlarından dört kat daha pahalı olduğundan, sıkı bir max_tokens değeri en doğrudan maliyet kontrol yolunuzdur.
Akış parçası formatı
"stream": true ayarladığınızda yanıt text/event-stream türüne dönüşür. Her olay, data: ile başlayan ve JSON içeren bir satırdır; boş bir satırla ayrılırlar. Nesne türü chat.completion.chunk olur ve message delta ile değiştirilir.
data: {"id":"chatcmpl-example123","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}
data: {"id":"chatcmpl-example123","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"v1.4: "},"finish_reason":null}]}
data: {"id":"chatcmpl-example123","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Login bug fixed."},"finish_reason":null}]}
data: {"id":"chatcmpl-example123","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: {"id":"chatcmpl-example123","object":"chat.completion.chunk","choices":[],"usage":{"prompt_tokens":38,"completion_tokens":14,"total_tokens":52}}
data: [DONE]- İlk parça genellikle
delta.roledeğeriniassistantolarak ve boş içerikle ayarlar. - İçerik parçaları
delta.contentiçinde bir parça taşır. Bunları varış sırasına göre birleştirin. - Kapanış içerik parçası boş bir
deltave null olmayan birfinish_reasoniçerir. - Boş bir
choicesdizisi içeren son parçausagetaşır. Bunu istemezsiniz; otomatik olarak eklenir. - Kelimenin tam anlamıyla
data: [DONE]akışı sonlandırır.
Bu boş choices dizisine karşı korunun: kullanım parçasında choices[0] dizinine erişmek basit döngülerde hata yükseltir. Aşağıdaki SDK örneği bunu yönetir.
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.uncensoredapis.com/v1", api_key=os.environ["API_KEY"])
reason, usage = None, None
for chunk in client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Name three uses of a rubber duck in debugging."}],
stream=True,
):
if chunk.choices:
piece = chunk.choices[0].delta.content
if piece:
print(piece, end="", flush=True)
if chunk.choices[0].finish_reason:
reason = chunk.choices[0].finish_reason
if getattr(chunk, "usage", None):
usage = chunk.usage
print("\nfinish:", reason, "| tokens:", usage.total_tokens if usage else "n/a")Akışlı fonksiyon çağırma için, delta.tool_calls parçalar halinde gelir; her çağrı dizini için arguments dizisini biriktirin ve finish_reason tool_calls olduğunda tek seferde ayrıştırın.
Modeller uç noktası
GET /v1/models yalnızca Bearer başlığını gerektirir ve bir liste nesnesi döndürür. Tek bir model olduğu için, data tek bir öğe ve uncensored özelliği içerir. Bu uç noktadan model açılır listesini dolduran istemciler bu nedenle tek bir seçenek gösterecektir.
curl https://api.uncensoredapis.com/v1/models -H "Authorization: Bearer $API_KEY"
{
"object": "list",
"data": [
{"id": "uncensored", "object": "model"}
]
}Bu uç nokta aynı zamanda bir anahtarı doğrulamanın en ucuz yoludur: 200 durumu anahtarın geçerli olduğunu, 401 durumu ise anahtarın yanlış olduğunu veya yeniden oluşturulduğunu gösterir. Bu uç noktayı çağırmak token üretmez. Durum işleme ve yeniden deneme kuralları için hatalar ve hız limitleri rehberi sayfasına bakın.
İstemci yazarları için referans kontrol listesi
Bir istemci kütüphanesi yazıyorsanız veya uç noktayı bir ağ geçidinin arkasına alıyorsanız, göndermeden önce yukarıdaki spesifikasyona göre bu davranışların her birini doğrulayın.
- Üst bilgi temizliği. Anahtarı yalnızca Authorization üst bilgisinde gönderin, asla sorgu dizgesinde değil ve asla üst bilgi değerini loglamayın.
- Savunmacı ayrıştırma. Yanıtlardaki bilinmeyen ek alanları yok sayılabilir olarak ele alın. Ayrıştırıcınızı tam JSON anahtar sırasına değil, burada belgelenen alanlara sabitleyin.
- Her yanıtta finish_reason kontrolü. Değer
lengtholduğunda görünür bir gösterge sunun; aksi takdirde kullanıcılar kesilmiş metni tam cevap olarak okur. - Göndermeden önce bütçe kontrolü. İstem tokenlarını tahmin edin,
max_tokensdeğerini ekleyin ve toplamı 100.000 ile karşılaştırın. Yerel olarak reddetmek, 400 hatası beklemekten daha hızlıdır. - Akış sonunu yönetin. Boş bir
choiceslistesi ve birusagenesnesi içeren bir parça bekleyin, ardından[DONE]. Gönderge geldikten sonra bağlantıyı kapatın. - Kullanımı kaydedin. Kendi ölçümünüzü daha sonra ön ödemeli bakiye ile eşleştirebilmeniz için her istek için
total_tokensdeğerini kaydedin. - Tavanı aşmayın. Hesap başına anahtar başına dakikada 300 istek izni verilir; bu nedenle çok sayıda kullanıcıya hizmet veren bir ağ geçidinin kendi kuyruğuna ihtiyacı vardır.
Bu adımların hiçbiri bir sağlayıcı SDK'sına bağlı değildir. Bearer başlığını ayarlayan ve JSON'u ayrıştıran düz bir HTTP istemcisi yeterlidir; bu sayfadaki SDK örnekleri birer kolaylıktır, gereklilik değil. Bu kontrol listesini rehber sayfasındaki hata tablosuyla birleştirerek istek yaşam döngüsünün tamamını (oluşturma, gönderme, akış, ayrıştırma, faturalandırma ve kurtarma) kapsarsınız.
Sorular ve cevaplar
Her istek için birden fazla seçenek alabilir miyim?
choices içinde tek bir öğe bekleyin ve choices[0]'ı okuyun. Alternatifler istiyorsanız ayrı istekler gönderin.
Neden message.content null?
Model metin yerine tool_calls döndürdü. finish_reason değerini kontrol edin, fonksiyonları çalıştırın ve sonuçları geri gönderin.
İstem ile max_tokens toplamı 100.000'i geçerse ne olur?
İstek, 400 bad request hatası ile reddedilir. İsteği kısaltın veya max_tokens değerini düşürün.
Akış fiyatı değiştirir mi?
Hayır. Faturalandırma aynı istem ve tamamlama token sayılarını kullanır ve son kullanım parçası bu sayıları bildirir.
Anahtarınız tek bir formun uzağında
Bir hesap oluşturun, anahtarı kopyalayın ve temel URL'yi değiştirin. Kurulumun tamamı budur.