PL ▾

Zacznij od kredytu próbnego

E-mail i hasło, klucz od razu na ekranie.

https://api.uncensoredllmhub.com/v1

Uncensored LLM Hub: Jeden endpoint do czatu i agentów

Uncensored LLM Hub to hostowane API tekstowe kompatybilne z OpenAI z jednym modelem i jednym Base URL. Na tej stronie przedstawiamy praktyczną konfigurację aplikacji czatu i agenta.

Zaktualizowano

Świecący się centralny węzeł połączony strumieniami światła z oknem czatu, agentem i dokumentami

Kluczowe punkty

  • Jeden Base URL i jedno ID modelu, uncensored, działają z dowolnym SDK lub klientem OpenAI.
  • Obsługiwane są strumieniowanie, wywoływanie funkcji i tryb JSON, z oknem kontekstu 100 000 tokenów.
  • Pełny klucz pozwala na 8 równoległych zapytań i 300 na minutę, więc zaplanuj małą kolejkę dla obciążonych aplikacji.
  • Rozliczenie to $0,15 za 1 mln tokenów wejściowych i $0,50 za 1 mln tokenów wyjściowych z przedpłaconego kredytu, a prompty nie są używane do trenowania.

Co otrzymujesz z jednego endpointu

Ludzie szukają Uncensored LLM Hub, gdy chcą modelu, który odpowiada bez odmów treści dla prawnego użytku dorosłych, ale nie chcą uruchamiać GPU. Usługa to zwykłe API HTTPS. Wskazujesz klienta OpenAI na https://api.uncensoredllmhub.com/v1, wysyłasz ID modelu uncensored i uwierzytelniasz się za pomocą Authorization: Bearer YOUR_KEY. Dostępne są dwie metody: POST /v1/chat/completions do rozmów i GET /v1/models do listowania.

Warto być jasnym co stoi za tym endpointem. To jeden model o otwartych wagach, uruchamiany przez niezależnego dostawcę i dostrojony do pomijania odmów treści. Nie jest to oficjalne API żadnego dużego dostawcy i nie jest to router wybierający między modelami. Obsługuje tylko tekst: bez obrazów, audio, wideo, embeddingów ani dostrajania. Jedna ścisła zasada obowiązuje bez wyjątku: brak treści seksualnych z udziałem nieletnich.

To wąskie spektrum jest celem. Pojedynczy stabilny endpoint jest łatwy w obsłudze. Poniższe sekcje pokazują mały backend czatu, następnie pętlę agenta, a potem limity, które musisz uwzględnić w projekcie.

Krok 1: podłącz istniejącego klienta

Ponieważ API jest zgodne z formatem OpenAI, rzadko piszesz nowy kod klienta. Otwórz swoje SDK lub narzędzie, zmień bazowy URL i klucz, a następnie ustaw model na uncensored. Najpierw zaloguj się na stronie klucza API (poprzez Google lub e-mail i hasło), a następnie jednym kliknięciem odbierz darmowy kredyt próbny w wysokości $0,50. Kredyt próbny nie wymaga karty, trwa 7 dni i przysługuje jedna na osobę.

Minimalne zapytanie w Pythonie:

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)

Ustawienia próbkowania takie jak temperature, top_p, stop, seed oraz kary częstotliwości i obecności są przekazywane do modelu, więc znane Ci suwaki działają tak samo jak u innych dostawców. To samo wywołanie działa w narzędziach akceptujących niestandardowy endpoint kompatybilny z OpenAI, np. SillyTavern lub Open WebUI: wklej Base URL, dodaj klucz, wpisz ręcznie ID modelu.

Krok 2: strumieniuj odpowiedzi do interfejsu czatu

Aplikacje czatu wydają się wolne, jeśli użytkownik patrzy na puste pole, aż dojdzie pełna odpowiedź. Strumieniowanie to naprawia. Ustaw stream: true i API wysyła odpowiedź jako zdarzenia wysyłane przez serwer, z raportem użycia na końcu strumienia. Oto wersja Node, która przesyła tokeny po ich przybyciu:

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;
}

Dwa nawyki oszczędzą Ci problemów w przyszłości. Po pierwsze, zawsze przekazuj sygnał anulowania i anuluj go, gdy użytkownik zamknie kartę lub naciśnie stop. Zapytanie strumieniowe zajmuje slot równoległości do końca strumienia, więc porzucone strumienie zużywają Twój limit. Po drugie, przechowuj pełny tekst, który złożyłeś, ponieważ dołączysz go do historii jako wiadomość asystenta do kolejnej wiadomości.

Jeśli widzisz niejasne błędy w frontendzie podczas strumieniowania, nasz poradnik dotyczący diagnozowania problemów ze strumieniowaniem omawia typowe przyczyny, takie jak błędny Base URL, proxy buforujące zdarzenia i dwa kody 429.

Krok 3: świadomie wykorzystuj długi kontekst

Okno kontekstu wynosi 100 000 tokenów, dzielone przez prompt i uzupełnienie. Dla narzędzia do pisania opowiadań, czatu postaci lub asystenta dokumentów jest to miejsce na długą historię, duży prompt systemowy i materiały referencyjne jednocześnie. Nie musisz ustawiać max_tokens; uzupełnienie może użyć tego, co zostało.

Długi kontekst jest tani do wypróbowania przy tych cenach. Wypełnienie całego okna danymi wejściowymi kosztuje 0,1 × $0,15 = $0,015 za 100 000 tokenów wejściowych. Dodaj odpowiedź 2000 tokenów (0,002 × $0,50 = $0,001) i prawie pełne wywołanie kosztuje $0,016. Nadal będziesz chciał zarządzać oknem z trzech powodów: opóźnienia rosną wraz z rozmiarem promptu, każda tura ponownie wysyła historię, więc koszty sumują się w sesji, a bardzo długie historie rozmywają instrukcje na początku.

Prosta polityka działa dobrze:

  1. Przechowuj prompt systemowy i dowolny stały tekst referencyjny na początku.
  2. Zachowaj najnowsze tury dosłownie.
  3. Gdy historia przekroczy wybrany przez Ciebie próg, np. 60 000 tokenów, poproś model o streszczenie najstarszej części do krótkiej notatki i zamień te tury na nią.
  4. Odczytuj usage.prompt_tokens z każdej odpowiedzi, aby wiedzieć, jak duże będzie kolejne zapytanie, zamiast szacować po znakach.

Krok 4: narzędzia i dane strukturalne dla agentów

Agenci potrzebują od modelu dwóch rzeczy: sposobu na wywoływanie funkcji i wyniku, który można sparsować. Oba są wspierane. Wywoływanie narzędzi używa standardowych parametrów tools i tool_choice, wywołania narzędzi mogą być strumieniowane, a wyniki wracają jako wiadomości z role: "tool". Pojedynczy cykl zapytanie-odpowiedź wygląda tak:

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)

Zawsze waliduj argumenty przed uruchomieniem czegokolwiek z efektami ubocznymi. Model może wyprodukować wartość złą lub nieoczekiwaną, a Twój kod jest ostatnią linią obrony.

Dla zwykłego outputu strukturalnego bez narzędzi użyj trybu JSON z response_format ustawionym na {"type": "json_object"}. Opisz też w prompcie kształt, jakiego oczekujesz, i sparsuj odpowiedź w bloku try, aby nieudana odpowiedź wywołała ponowną próbę zamiast awarii.

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."}
    ]
  }'

Ograniczenia do uwzględnienia w projektowaniu

Pełny klucz pozwala na 8 równoległych zapytań i 300 zapytań na minutę. Klucz próbny pozwala na 2 i 60. Ciało może mieć do 8 MB. Każda odpowiedź zawiera X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests i X-RateLimit-Limit-Concurrency, które są przydatne do logowania.

Gdy przekroczysz limit, API zwraca HTTP 429. Kod to rate_limited za zbyt wiele zapytań na minutę i concurrency za zbyt wiele naraz. Tymczasowe przeciążenie również zwraca 429, z Retry-After: 5. Dla aplikacji wieloużytkownikowej umieść małą kolejkę przed API: semafor ustawiony poniżej limitu równoległości i ponowienie, które respektuje Retry-After. Dla agenta, który rozchodzi się na równoległe wywołania narzędzi, ogranicz rozgałęzienie do tej samej liczby.

Pełna lista parametrów i format błędów znajduje się w dokumentacji API.

Koszt, doładowania i obsługa danych

Cennik to $0,15 za 1 mln tokenów wejściowych i $0,50 za 1 mln tokenów wyjściowych z przedpłaconego kredytu. Nie ma subskrypcji, kredyt nigdy nie wygasa, a nieudane lub odrzucone zapytania nie są rozliczane. Tura czatu z 1500 tokenami wejściowymi i 500 wyjściowymi kosztuje 0,0015 × $0,15 + 0,0005 × $0,50 = $0,000225 + $0,00025 = $0,000475, więc $20 kredytu pokrywa około 42 000 takich tur.

Możesz doładować dowolną kwotę całkowitą od $20 do $500. Bonus to +5% od $50, +10% od $100 i +15% od $200. Płać kartą (Visa, Mastercard, Apple Pay, Google Pay) lub kryptowalutami (USDT na TRC20, USDC na Base). Strona cennika zawiera aktualną tabelę.

Pod względem danych: prompty nie są używane do trenowania. Przeczytaj politykę prywatności, aby uzyskać pełne brzmienie. Pozostajesz odpowiedzialny za to, co zbudujesz z modelem, a usługa jest przeznaczona wyłącznie do prawnego użytku przez osoby dorosłe.

Pytania i odpowiedzi

Jaki identyfikator modelu użyć?

Używaj uncensored jako ID modelu w każdym zapytaniu. Ustaw Base URL na https://api.uncensoredllmhub.com/v1 i przesyłaj swój klucz jako token Bearer.

Czy to zadziała z moim istniejącym kodem OpenAI?

Tak. Działa dowolny SDK lub klient OpenAI po zmianie Base URL i klucza. Obsługiwane są uzupełnienia czatu, strumieniowanie, wywoływanie funkcji i tryb JSON.

Czy generuje obrazy lub embeddingi?

Nie. To API tylko do tekstu, bez generowania obrazów, audio lub wideo, bez embeddingów i bez dostrajania.

Jak duża może być rozmowa?

Okno kontekstu wynosi 100 000 tokenów, dzielone przez prompt i odpowiedź. Ciało zapytania może mieć do 8 MB.

Twój klucz jest o jeden formularz stąd

Utwórz konto, skopiuj klucz, zmień bazowy URL. To cała konfiguracja.

Pobierz klucz API

https://api.uncensoredllmhub.com/v1