Wymagania wstępne
Aby korzystać z API apertus, potrzebujesz konta i klucza API. Zarejestruj się za pomocą Google lub e-mail na stronie Pobierz klucz API. Otrzymujesz klucz natychmiast; nie jest wymagany numer telefonu. Jeśli chcesz najpierw przetestować, każde nowe konto otrzymuje $0,50 kredytu próbnego ważnego przez 7 dni. Nie jest potrzebna karta. W produkcji doładuj kryptowalutą (USDT w TRC20 lub USDC na Base). Kredyt nigdy nie wygasa, a błędy nie zużywają salda. Masz jeden aktywny klucz na konto; wygenerowanie nowego zastępuje stary. Chroń swój klucz i przesyłaj go w nagłówku Authorization jako token bearer. API jest ściśle tekstowe i obsługuje jeden model bez cenzury zoptymalizowany pod kątem udzielania odpowiedzi bez odmów treści.
Base URL i uwierzytelnianie
Wysyłaj wszystkie żądania pod https://api.apertus.cc/v1. Ten base URL działa z oficjalnymi SDK OpenAI i dowolnym kompatybilnym klientem poprzez prostą zmianę endpointu. Dołącz swój klucz API w nagłówku: Authorization: Bearer YOUR_API_KEY. Jedynym obsługiwanym endpointem jest POST /v1/chat/completions. Dostępny jest również endpoint GET /v1/models do weryfikacji łączności. ID modelu do użycia to uncensored. Jest to model o otwartych wagach działający na naszych serwerach, odrębny od GPT, Claude lub innych dostawców. Obsługuje wejście tekstowe i zwraca wyjście tekstowe. Nie spodziewaj się embeddingów, obrazów ani audio. API jest zaprojektowane dla deweloperów, którzy chcą prostej integracji bez złożoności routingu modeli.
Pierwsze zapytanie
Wyślij podstawowe zapytanie completion, aby zweryfikować konfigurację. Użyj polecenia curl, aby wysłać żądanie POST do endpointu chat completions. Ustaw model na uncensored i dołącz prostą wiadomość. To potwierdza, że Twój klucz API działa, a bazowy URL jest poprawny. Możesz dostosować parametry, takie jak temperature lub max_tokens, zgodnie z potrzebami. Odpowiedź zawiera tekst wygenerowany przez model. Jeśli otrzymasz błąd 401, sprawdź swój klucz. Błąd 402 oznacza niewystarczający kredyt. Błąd 429 oznacza, że przekroczyłeś limit zapytań. To proste zapytanie demonstruje bezpośredni dostęp do API bez żadnego middleware. Jest to najszybszy sposób na zweryfikowanie integracji przed zbudowaniem bardziej złożonej logiki.
Integracja z Pythonem
Użyj oficjalnego SDK Pythona openai do interakcji z API. Zainicjuj klienta z base URL https://api.apertus.cc/v1 i swoim kluczem API. Ustaw model na uncensored. Wysyłaj wiadomości jako listę słowników. SDK automatycznie obsługuje serializację i parsowanie błędów. To podejście jest idealne dla usług backendowych lub skryptów przetwarzania danych. Możesz strumieniować odpowiedzi lub pobierać pełne bloki. Kod klienta jest identyczny jak ten, którego użyłbyś dla OpenAI, z wyjątkiem innego base URL. Zmniejsza to tarcie przy przełączaniu się z innych dostawców. Upewnij się, że masz najnowszą wersję SDK dla najlepszej kompatybilności. Integracja jest minimalna, wymagając tylko zmian konfiguracji w istniejącym ustawieniu klienta.
Integracja z Node.js
W środowiskach JavaScript lub TypeScript użyj pakietu npm openai. Skonfiguruj klienta z tym samym base URL i kluczem co w Pythonie. Wywołaj chat.completions.create() z modelem uncensored. Przekaż swoje wiadomości w standardowym formacie. Działa to dobrze dla funkcji serverless lub backendów Node.js. SDK zarządza żądaniami HTTP i parsowaniem odpowiedzi. Możesz obsłużyć błędy w sposób elegancki, sprawdzając status odpowiedzi. Kod pozostaje przenośny między różnymi usługami kompatybilnymi z OpenAI. Ułatwia to wymianę dostawców w razie potrzeby. Integracja Node.js obsługuje zarówno wzorce synchroniczne, jak i asynchroniczne. Użyj jej do budowania API, botów lub zautomatyzowanych przepływów pracy wymagających generowania tekstu bez cenzury.
Odpowiedzi strumieniowe
Włącz strumieniowanie, ustawiając stream: true w żądaniu. API zwraca fragmenty tekstu, gdy są generowane. Poprawia to postrzeganą opóźnienie dla długich odpowiedzi. Każdy fragment zawiera część completion. Ostateczny fragment zawiera statystyki użycia tokenów. Strumieniowanie jest obsługiwane za pomocą Server-Sent Events (SSE). Użyj funkcji strumieniowania SDK do efektywnego przetwarzania fragmentów. Jest to przydatne dla interfejsów czatu lub aplikacji w czasie rzeczywistym. Pamiętaj, że strumieniowanie zużywa te same tokeny co nie-strumieniowanie. Błędy mogą wystąpić w trakcie strumieniowania, więc obsługuj przerwania. Model bez cenzury obsługuje strumieniowanie domyślnie. Funkcja ta pozwala wyświetlać tekst inkrementalnie. Jest to standardowa funkcja w nowoczesnych API LLM. Upewnij się, że kod klienta poprawnie obsługuje częściowe odpowiedzi.
Limity, błędy i kontekst
Okno kontekstu wynosi łącznie 100 000 tokenów, wliczając prompt i completion. Maksymalna ilość outputu to 32 000 tokenów na zapytanie lub 2 048, jeśli max_tokens nie jest ustawione. Limity zapytań to 300 zapytań na minutę i 8 równoległych zapytań na klucz. Ciała zapytań muszą być mniejsze niż 8 MB. Typowe błędy to 401 dla nieprawidłowych kluczy, 402 dla braku kredytu i 429 dla limitów zapytań. Model odrzuca treści seksualne z udziałem nieletnich. Nie odrzuca innych legalnych treści dla dorosłych, fikcyjnych lub kontrowersyjnych. Ceny są przejrzyste: $0,25 za 1M tokenów wejściowych i $1,00 za 1M tokenów wyjściowych. Błędy są darmowe. Kredyt jest przedpłacony i nigdy nie wygasa. Skorzystaj z tych limitów, aby zaplanować skalę swojej aplikacji. API jest zaprojektowane do generowania tekstu w dużych ilościach w sposób opłacalny.
cURL
curl https://api.apertus.cc/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
}'Python
from openai import OpenAI
client = OpenAI(base_url="https://api.apertus.cc/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.apertus.cc/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);Strumieniowanie
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)