Kluczowe punkty
- API bez cenzury stosuje standardową składnię OpenAI, ale nie posiada zaawansowanych funkcji takich jak embeddingi czy routing wielomodelowy, więc Twój klient musi być skonfigurowany dla jednego endpointu.
- Odpowiedzi strumieniowe wymagają specyficznej obsługi SSE; jeśli Twoje SDK domyślnie parsuje JSON, napotkasz błędy parsowania przy dużych outputach bez cenzury.
- Wywoływanie funkcji działa, ale wymaga ścisłego przestrzegania schematu JSON, ponieważ model może częściej zmyślać argumenty niż modele dostrojone instrukcyjnie.
- Limit to 300 zapytań na minutę i rozmiar ciała 8 MB, co wymaga starannego strategii grupowania zapytań w aplikacjach o wysokim obciążeniu.
Zrozumienie endpointu API AI bez cenzury
Podczas integracji API AI bez cenzury pierwszym błędem jest założenie, że zachowuje się ono identycznie jak standardowe modele komercyjne. Nasz endpoint to hostowana usługa chat-completions kompatybilna z OpenAI. Obsługu ona pojedynczy, dedykowany model dużego języka AI bez cenzury. Oznacza to, że nie musisz zarządzać trasowaniem modeli ani wersjonowaniem. Wysyłasz zapytania do POST /v1/chat/completions i otrzymujesz w odpowiedzi tekst.
W przeciwieństwie do agregatorów łączących obrazy, wideo i wielu dostawców, ta usługa koncentruje się wyłącznie na wysokiej jakości generowaniu tekstu bez ograniczeń. Model ma otwarte wagi i jest dostrojony do odpowiadania bez odmów treści dla legalnego użytku dorosłego. Nie jest to jednak GPT, Claude, Gemini ani model żadnego innego dostawcy. Działa na naszych serwerach GPU.
Base URL to https://api.uncensoredgptapi.com/v1. Aby go użyć, zmień base_url w istniejących SDK OpenAI lub dowolnym kliencie kompatybilnym z OpenAI i podaj swój klucz API. ID modelu, który musisz wysłać, to po prostu "uncensored". Ta prostota skraca czas integracji, ale wymaga weryfikacji, czy Twój klient obsłuży endpoint jednokrotnego modelu bez oczekiwania na fallbacki.
Typowe błędy uwierzytelniania
Błędy uwierzytelniania wynikają zwykle z nieprawidłowo skonfigurowanych nagłówków lub wygasłych kluczy. API używa standardowej autoryzacji tokenem Bearer. Musisz dołączyć swój klucz API w nagłówku Authorization do każdego żądania.
Powszechnym błędem jest buforowanie klucza API bez weryfikacji jego ważności. Jeśli zregenerujesz klucz, stary zostaje natychmiast unieważniony. Musisz zaktualizować konfigurację klienta, aby używał nowego klucza. Jeśli otrzymasz błąd 401 Unauthorized, sprawdź dwie rzeczy: po pierwsze, upewnij się, że klucz został skopiowany poprawnie, bez spacji na początku lub końcu. Po drugie, zweryfikuj, czy używasz prawidłowego adresu URL bazowego. Nawet niewielka różnica w domenie lub ścieżce spowoduje błąd uwierzytelniania.
Kolejnym częstym problemem jest użycie niewłaściwego ID modelu. Endpoint oczekuje "uncensored". Jeśli wyślesz "gpt-4" lub inny standardowy ID modelu, endpoint może odrzucić żądanie lub zwrócić błąd, ponieważ obsługuje tylko jeden model. Zawsze sprawdzaj pole model w ciele żądania.
curl https://api.uncensoredgptapi.com/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."}]
}'
Prawidłowa obsługa odpowiedzi strumieniowych
Odpowiedzi strumieniowe przez Server-Sent Events (SSE) są obsługiwane, ale często nieprawidłowo przetwarzane przez programistów przyzwyczajonych do synchronicznych odpowiedzi JSON. Gdy ustawisz "stream": true w żądaniu, API zwraca strumień częściowych obiektów JSON, a nie jedną kompletną odpowiedź JSON.
Jeśli Twój klient spróbuje sparsować całą odpowiedź jako JSON naraz, zakończy się to niepowodzeniem. Musisz czytać strumień linia po linii. Każda linia zaczyna się od data: i zawiera częściowy obiekt JSON. Ostatnia linia to data: [DONE]. Twój kod powinien agregować te fragmenty, aby zrekonstruować końcowy tekst.
Niektóre SDK obsługują to automatycznie, ale implementacje niestandardowe wymagają jawnego parsowania SSE. Upewnij się, że bufor Twojego klienta obsługuje duże outputy bez przekraczania limitu czasu. Model bez cenzury może generować długie odpowiedzi, a strumieniowanie pomaga zarządzać zużyciem pamięci. Jeśli doświadczasz utraty połączenia, rozważ wdrożenie wykładniczego backoff dla logiki ponawiania.
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)
Błędy konfiguracji wywoływania funkcji
Wywoływanie funkcji jest obsługiwane, ale model bez cenzury może częściej zmyślać argumenty niż modele dostrojone instrukcyjnie. Wymaga to ściślejszej walidacji po Twojej stronie. Definiując narzędzia, upewnij się, że Twój schemat JSON jest precyzyjny. Model spróbuje wypełnić argumenty, ale może pominąć wymagane pola lub podać nieprawidłowe typy.
Zawsze waliduj argumenty wywołania narzędzia przed wykonaniem funkcji. Jeśli model zwróci nieprawidłowy JSON dla argumentów, obsłuż błąd w sposób graceful. Nie zakładaj, że output będzie idealnie ustrukturyzowany. Możesz potrzebować wdrożenia mechanizmu ponawiania lub kroku post-processing w celu oczyszczenia argumentów.
Ponadto pamiętaj, że model bez cenzury może zignorować definicje narzędzi, jeśli prompt jest złożony. Jeśli napotkasz problemy, uprość opisy narzędzi i upewnij się, że system prompt wyraźnie instruuje model do używania narzędzi, gdy jest to odpowiednie. Przetestuj z kilkoma przykładowymi wejściami, aby zweryfikować zachowanie.
Ograniczenia okna kontekstu (100k tokenów)
API bez cenzury obsługuje okno kontekstu 100 000 tokenów, obejmujące zarówno prompt, jak i completion. Jest to znacznie więcej niż wiele standardowych modeli, co pozwala na rozległe rozmowy lub przetwarzanie dużych dokumentów. Nie jest jednak nieskończone. Jeśli Twoje wejście przekroczy ten limit, API zwróci błąd.
Aby uniknąć osiągnięcia tego limitu, monitoruj zużycie tokenów. Większość SDK dostarcza narzędzia do liczenia tokenów. Śledź kumulatywne tokeny w historii rozmowy. Jeśli przetwarzasz duże dokumenty, rozważ ich chunking lub sumaryzację wcześniejszych części rozmowy, aby zwolnić miejsce w kontekście.
Pamiętaj, że okno kontekstu obejmuje wszystkie wiadomości w tablicy messages. Każda wiadomość wnosi wkład do całkowitego wyniku. Jeśli wysyłasz wiele małych wiadomości, narzut może się sumować. Zoptymalizuj strukturę promptu, aby zminimalizować niepotrzebne tokeny. Na przykład unikaj powtarzania instrukcji systemowych w każdej turze, jeśli pozostają stałe.
Wyjaśnienie limitów zapytań (300 RPM)
API narzuca limit zapytań 300 na minutę na klucz. Jest to twardy limit zapewniający uczciwe użytkowanie przez wszystkich użytkowników. Przekroczenie tego limitu spowoduje błąd 429 Too Many Requests. Twój klient powinien to obsłużyć, implementując strategię ponawiania.
Typowym błędem jest nieuwzględnienie ruchu burst. Jeśli wyślesz 300 zapytań w szybkim tempie, możesz osiągnąć limit, nawet jeśli średnia częstotliwość jest niższa. Rozłóż żądania równomiernie w ciągu minuty. Jeśli przetwarzasz duży zbiór danych, rozważ grupowanie zapytań lub użycie kolejki do zarządzania przepływem.
Limity zapytań są stosowane per klucz API. Jeśli masz wiele usług używających tego samego klucza, dzielą one limit. Aby zwiększyć pojemność, możesz wygenerować nowy klucz, ale pamiętaj, że tylko jeden klucz jest aktywny na konto. Możesz wygenerować klucz ponownie w dowolnym momencie, ale unieważnia to stary, więc upewnij się, że wszyscy klienci są zaktualizowani.
Ograniczenia rozmiaru ciała żądania (8 MB)
Każde ciało żądania jest ograniczone do 8 MB. Limit ten dotyczy payloadu JSON, w tym tablicy messages i dowolnych definicji narzędzi. Jeśli Twoje żądanie przekracza ten rozmiar, API odrzuci je błędem 413 Payload Too Large.
Limit ten jest ważny przy wysyłaniu dużych plików jako danych zakodowanych w base64 lub przy dołączaniu rozległych historii rozmów. Jeśli pracujesz z dużymi dokumentami, rozważ kompresję tekstu lub usunięcie niepotrzebnych spacji przed wysłaniem. Możesz również użyć strumieniowania, aby zmniejszyć zużycie pamięci, ale początkowe ciało żądania musi nadal mieścić się w limicie 8 MB.
Monitoruj rozmiary zapytań w trakcie prac. Jeśli napotkasz ten błąd, przeanalizuj strukturę promptu i usuń zbędne informacje. Na przykład, jeśli dołączasz cały prompt systemowy do każdej wiadomości, przenieś go do roli system raz i odwołuj się do niego.
Zarządzanie i regeneracja klucza API
Każde konto jest ograniczone do jednego klucza API. Ten klucz jest generowany podczas rejestracji i wyświetlany natychmiast. Możesz zregenerować klucz w dowolnym momencie z panelu. Po zregenerowaniu stary klucz jest natychmiast unieważniany. Każdy klient używający starego klucza otrzyma błąd 401 Unauthorized.
Aby skutecznie zarządzać tym, zaktualizuj wszystkich swoich klientów przed regeneracją klucza. Jeśli masz wiele usług lub urządzeń używających klucza, upewnij się, że są one aktualizowane jednocześnie. Możesz wygenerować nowy klucz tak wiele razy, jak to konieczne, ale tylko jeden będzie aktywny w danym momencie.
Klucz API jest powiązany z Twoim adresem e-mail i hasłem. Jeśli zgubisz klucz, możesz go zregenerować. Nie ma limitu liczby regeneracji. Jednak częsta regeneracja może wskazywać na problem z bezpieczeństwem, więc używaj jej w razie potrzeby. Chroń swój klucz i nie udostępniaj go publicznie.
Rozwiązywanie problemów z filtrami treści
Model bez cenzury nie odmawia legalnych treści dla dorosłych, fikcyjnych, badawczych lub kontrowersyjnych tematów. Istnieje jednak jeden twardy limit treści, który zawsze obowiązuje: brak treści seksualnych z udziałem małoletnich. Żądania zawierające tę treść są blokowane.
Jeśli napotkasz nieoczekiwane odmowy, sprawdź swój prompt pod kątem subtelnych wskaźników zabronionej treści. Model jest dostrojony do użytku bez ograniczeń, ale może nadal stosować podstawowe filtry bezpieczeństwa. Jeśli testujesz przypadki brzegowe, dokumentuj zachowanie, aby zrozumieć granice modelu.
Kolejnym powszechnym problemem jest halucynacja. Model bez cenzury może generować brzmiące wiarygodnie, ale nieprawdziwe informacje. Zawsze weryfikuj kluczowe wyniki, zwłaszcza podczas używania wywoływania funkcji lub generowania kodu. W niektórych przypadkach model priorytetyzuje płynność nad ścisłą zgodnością z faktami.