pl ▾
Zdobądź klucz próbny

Rozwiązywanie typowych błędów z modelami abliterated

Rozwiązywanie problemów z modelami ablivered często sprowadza się do zrozumienia, jak bezcenzurowe LLM radzą sobie ze strukturą, kontekstem i strumieniowaniem inaczej niż standardowe komercyjne API. Poprawiając walidację JSON, limity tokenów i strojenie parametrów, możesz zapewnić niezawodną rozgrywkę NSFW lub kodowanie bez nieoczekiwanych odmów lub uszkodzonych formatów.

Ostatnia aktualizacja

Podsumowanie

Dlaczego twoja odpowiedź JSON nie przechodzi walidacji

Parsowanie JSON kończy się niepowodzeniem, gdy model dołącza tekst konwersacyjny poza blokiem kodu. Modele uncensored priorytetyzują naturalny przepływ języka, więc często dodają "Oto JSON" przed lub po surowych danych. Łamie to ścisłe parsowniki oczekujące tylko obiektu.

Korzystaj z response_format parametr ustawiony na {"type": "json_object"}.To wymusza od modelu zwracanie wyłącznie poprawnego formatu JSON. Eliminuje to potrzebę skryptów do czyszczenia danych za pomocą wyrażeń regularnych w Twoim kodzie. Należy jednak pamiętać, że zużywa to więcej tokenów na żądanie, ponieważ model jest ograniczony.

  • Ustaw response_format do json_object w ciele żądania.
  • Upewnij się, że Twój prompt systemowy wyraźnie żąda wyjścia w formacie JSON.
  • Obsługuj przecinki końcowe lub drobne błędy składniowe z gracją, jeśli model się pomyli.
from openai import OpenAI

client = OpenAI(base_url="https://api.abliteratedllmonline.com/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)

Poprawna obsługa limitów okna kontekstu

Twój kontekst mieści 100 000 tokenów łącznie, zarówno wejście, jak i wyjście. Jeśli wyślesz długą historię, musisz zmniejszyć maksymalną długość odpowiedzi. Domyślny limit max output wynosi 2048 tokenów, chyba że określisz inaczej.

Oblicz pozostałe tokeny, odejmując rozmiar wejścia od 100,000. Jeśli prowadzisz roleplay, zachowaj systemowy prompt zwięzły. Przechowuj tylko najnowsze zwroty rozmowy w żądaniu API. Starszy kontekst można podsumować lub uciąć. Zapobiegnie to przekroczeniu twardego limitu w trakcie generowania.

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.abliteratedllmonline.com/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);

Błędy wywoływania funkcji w modelach uncensored

Wywoływanie funkcji nie powiedzie się, gdy model zignoruje definicje narzędzi lub zwróci nieprawidłowe argumenty. Modele uncensored mogą priorytetyzować kreatywne odpowiedzi nad ścisłe korzystanie z narzędzi. Mogą zhalucynować parametry, które nie istnieją w Twoim schemacie.

Zdefiniuj swoje narzędzia jasno w tools tablicy. Użyj tool_choice aby wymusić konkretne zachowanie. Jeśli model odmówi wywołania narzędzia, sprawdź swój prompt systemowy pod kątem sprzecznych instrukcji. Upewnij się, że nazwy i opisy narzędzi są niejednoznaczne. Przetestuj najpierw prostymi zapytaniami, aby zweryfikować integrację.

  • Podaj jasne nazwy narzędzi i ich opisy.
  • Użyj tool_choice kontrolować wywoływanie.
  • Zweryfikuj argumenty względem swojego schematu przed wykonaniem.
curl https://api.abliteratedllmonline.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "List the python dependencies for this flask app"}]
  }'

Przerwania strumieniowania i obsługa SSE

Strumieniowanie przez zdarzenia wysłane przez serwer (SSE) może tracić tokeny, jeśli klient rozłączy się lub wystąpią drobne problemy z siecią. Ostatni czat zawiera statystyki użycia tokenów. Musisz przeanalizować ten czat, aby uzyskać liczniki wejścia i wyjścia.

Wdróż solidnego klienta SSE, który obsługuje logikę ponownego łączenia. Nie zakładaj, że każdy fragment zawiera dane. Niektóre fragmenty mogą być puste lub zawierać tylko spacje. Przetwarzaj ostatni fragment, aby zaktualizować saldo kredytów lub liczniki tokenów. Zapewnia to dokładne rozliczanie i śledzenie zużycia.

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)

Ustawienia temperatury wpływające na treści NSFW

Temperatura kontroluje losowość wyjścia modelu. Wyższe wartości, takie jak 0,8 lub 0,9, zwiększają kreatywność i nieprzewidywalność. Niższe wartości, takie jak 0,2, sprawiają, że wyjście jest bardziej deterministyczne i skupione. W przypadku odgrywania ról NSFW wyższe temperatury generują bardziej zróżnicowane i intensywne odpowiedzi.

Eksperymentuj z różnymi wartościami, aby znaleźć odpowiedni balans. Zbyt wysoka temperatura może prowadzić do niespójnego lub powtarzalnego tekstu. Zbyt niska temperatura może skutkować robotycznym lub mdłym dialogiem. Dostosuj w zależności od pożądanego tonu i spójności. Model bez cenzury dobrze reaguje na wyższe ustawienia kreatywności.

  • Użyj 0.7-0.9 do kreatywnego odgrywania ról.
  • Użyj 0.2-0.5 do zadań faktualnych lub kodowania.
  • Monitoruj jakość outputu podczas dostosowywania.

Top P i różnorodność w generowaniu roleplay

Top P (probkowanie jądra) ogranicza model do rozważania tylko najwyższego procentu masy prawdopodobieństwa. Działa z temperaturą, aby kontrolować różnorodność. Niska wartość Top P sprawia, że wyjście jest bardziej przewidywalne. Wysoka wartość pozwala na większą różnorodność wyborów słów.

Połącz Top P z temperaturą dla precyzyjnej kontroli. Na przykład, wysoka temperatura przy niskim Top P może wygenerować twórczy, ale skupiony tekst. Jest to przydatne do zachowania głosu postaci przy jednoczesnym pozwalaniu na spontaniczne działania. Przetestuj różne kombinacje, aby dopasować je do swojego stylu narracji.

from openai import OpenAI

client = OpenAI(base_url="https://api.abliteratedllmonline.com/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)

Zrozumienie limitów i kosztów tokenów

Zużycie tokenów bezpośrednio wpływa na Twój kredyt z góry opłacony. API pobiera $0.15 za milion tokenów wejściowych i $0.50 za milion tokenów wyjściowych. Tokeny wyjściowe są droższe, ponieważ reprezentują pracę modelu. Strumieniowanie nie zmienia kosztu; płacisz za wszystkie wygenerowane tokeny.

Monitoruj zużycie tokenów, aby uniknąć nieoczekiwanych opłat. Ostatni fragment SSE zawiera dokładną liczbę tokenów. Użyj tych danych do zaktualizowania lokalnego salda lub panelu rozliczeniowego. Błędy i odrzucenia są darmowe, więc płacisz tylko za pomyślne uzupełnienia. Ta model oparty na zużyciu zapewnia, że nigdy nie zapłacisz za dużo.

  • Tokeny wejściowe kosztują $0.15 za milion.
  • Tokeny wyjściowe kosztują $0,50 za milion.
  • Odmowy i błędy są darmowe.

Zastąpienie klucza API i limity szybkości

Każde konto pozwala na tylko jeden aktywny klucz API. Jeśli zregenerujesz swój klucz, stary staje się nieprawidłowy natychmiast. Gwarantuje to bezpieczeństwo, ale wymaga od Ciebie szybkiej aktualizacji klientów. Limity szybkości wynoszą 300 żądań na minutę i 8 żądań równoległych na klucz.

Przekroczenie tych limitów powoduje błędy HTTP 429. Zaimplementuj wykładnicze opóźnienie ponawiania w swojej logice ponawiania. Monitoruj objętość żądań, aby utrzymać się w granicach. Jeśli potrzebujesz wyższej przepustowości, rozważ podzielenie obciążenia między wiele kont lub optymalizację rozmiarów promptów. Klucz jest wyświetlany natychmiast po rejestracji, więc przechowuj go bezpiecznie.

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.abliteratedllmonline.com/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);

Rozwiązywanie powszechnych błędów HTTP

Błędy HTTP wskazują na problemy z Twoim żądaniem lub odpowiedzią serwera. Powszechne błędy to 400 Bad Request, 401 Unauthorized i 429 Too Many Requests. Błąd 400 często oznacza niepoprawny JSON lub nieprawidłowe parametry. Błąd 401 oznacza nieprawidłowy lub wygasły klucz API.

Sprawdź nagłówki żądania i ładunek pod kątem błędów składniowych. Zweryfikuj, czy Twój klucz API jest poprawny i aktywny. Jeśli otrzymasz błąd 429, poczekaj i spróbuj ponownie z wykładniczym opóźnieniem. Użyj oficjalnych SDK OpenAI, aby automatycznie obsługiwać te błędy. Zapewniają one jasne komunikaty o błędach i logikę ponownych prób. To skraca czas rozwoju i poprawia niezawodność.

  • 400: Sprawdź składnię JSON i parametry.
  • 401: Zweryfikuj ważność klucza API.
  • 429: Zaimplementuj logikę ponownych prób z backoffem.
curl https://api.abliteratedllmonline.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "List the python dependencies for this flask app"}]
  }'

Typowe pytania

Czy mogę używać modeli abliterated ze standardowym SDK OpenAI?

Tak, nasze API jest w pełni kompatybilne z OpenAI. Możesz użyć oficjalnych SDK OpenAI, po prostu zmieniając bazowy adres URL na HTTPS://api.abliteratedllmonline.com/v1 i podając swój klucz API. Identyfikator modelu do wysłania to "uncensored". Zapewnia to płynną integrację z Twoim istniejącym kodem.

Czy model bez filtrów odrzuca treści?

Model został zaprojektowany jako uncensored do użytku dorosłego w granicach prawa. Nie odrzuca tematów kontrowersyjnych, fikcyjnych ani NSFW. Istnieje jednak ścisły limit treści: żądania dotyczące treści seksualnych z udziałem małoletnich są zawsze odrzucane. To jedno ścisłe odrzucenie w naszej usłudze.

Jak zarządzać strumieniowaniem z użyciem tokenów?

Podczas używania Event Stream (SSE) ostatni fragment zawiera statystyki użycia tokenów. Musisz przeanalizować ten ostatni fragment, aby uzyskać liczbę tokenów wejściowych i wyjściowych. Pozwala to na dokładne śledzenie zużycia kredytu i odpowiednie rozliczenie. Błędy i odrzucenia są darmowe, więc płacisz tylko za udane uzupełnienia.

Jaki jest rozmiar okna kontekstowego?

Okno kontekstowe wynosi 100 000 tokenów, co obejmuje zarówno prompt, jak i uzupełnienie. Maksymalna ilość outputu na żądanie to 16 000 tokenów, lub 2 048 tokenów, jeśli nie określisz parametru max_tokens. To duże okno pozwala na głęboką historię rozmów i przetwarzanie długich dokumentów.

Pobierz swój klucz API

Zarejestruj się, pobierz klucz i zaktualizuj adres URL bazowy. To wszystko.