TR ▾

OpenAI-uyumlu sansürsüz LLM APIuncensoredapis.com

Ana SayfaAPI 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

  1. İki uç nokta vardır: POST /v1/chat/completions ve GET /v1/models. İkisi de Bearer anahtarı ile kimlik doğrulaması yapar.
  2. Yanıt, id, choices[].message, finish_reason ve usage içeren tanıdık chat completion yapısını izler.
  3. 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.
  4. İ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öntemYolAmaç
POST/v1/chat/completionsAsistan 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.

AlanTürNotlar
modelstringHer zaman "uncensored".
messagesarrayrole (system, user, assistant, tool) ve content içeren sıralı nesneler.
max_tokensintegerTamamlama sınırı. Varsayılan 2048, maksimum 32.000.
temperaturenumberRastgelelik. Daha düşük değer daha belirleyicidir.
top_pnumberNükleus örnekleme kesme noktası.
stopstring veya arrayÜretimi sonlandıran dizeler.
streambooleantrue yanıtı sunucu tarafından gönderilen olaylara (SSE) yönlendirir.
toolsdiziStandart 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.completion değeri.
  • created: Saniye cinsinden Unix zaman damgası.
  • model: uncensored değerini yansıtır.
  • choices: bir dizi. Bir girdi alırsınız, bu nedenle choices[0] cevaptır. index onun konumudur.
  • choices[].message: role assistant'dir; content metni içerir veya model fonksiyon çağırma döndürdüğünde null olur.
  • 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ğerAnlamKodunuzun yapması gerekenler
stopModel doğal bir sona ulaştı veya stop dizilerinizden birine ulaştı.İçeriği olduğu gibi kullanın.
lengthmax_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_callsModel 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]
  1. İlk parça genellikle delta.role değerini assistant olarak ve boş içerikle ayarlar.
  2. İçerik parçaları delta.content içinde bir parça taşır. Bunları varış sırasına göre birleştirin.
  3. Kapanış içerik parçası boş bir delta ve null olmayan bir finish_reason içerir.
  4. Boş bir choices dizisi içeren son parça usage taşır. Bunu istemezsiniz; otomatik olarak eklenir.
  5. 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.

  1. Ü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.
  2. 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.
  3. Her yanıtta finish_reason kontrolü. Değer length olduğunda görünür bir gösterge sunun; aksi takdirde kullanıcılar kesilmiş metni tam cevap olarak okur.
  4. Göndermeden önce bütçe kontrolü. İstem tokenlarını tahmin edin, max_tokens değerini ekleyin ve toplamı 100.000 ile karşılaştırın. Yerel olarak reddetmek, 400 hatası beklemekten daha hızlıdır.
  5. Akış sonunu yönetin. Boş bir choices listesi ve bir usage nesnesi içeren bir parça bekleyin, ardından [DONE]. Gönderge geldikten sonra bağlantıyı kapatın.
  6. Kullanımı kaydedin. Kendi ölçümünüzü daha sonra ön ödemeli bakiye ile eşleştirebilmeniz için her istek için total_tokens değerini kaydedin.
  7. 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.