PL ▾
Pobierz klucz API

Generator opowiadań AI bez filtrów przez API

Generator opowiadań, który zatrzymuje się w połowie sceny, ponieważ fabula stała się mroczna, to słabe narzędzie do pisania. Ten artykuł pokazuje, jak zbudować go na bazie kompatybilnego z OpenAI endpointa, z kodem, który możesz uruchomić już dziś.

Zaktualizowano

Otwarta książka, której strony zamieniają się w świecące wstęgi płynące do terminala, reprezentujące generowanie opowiadań przez API

Kluczowe punkty

  • Wskaż dowolny SDK OpenAI na adres URL bazowy, użyj identyfikatora modelu uncensored i masz silnik opowiadania w około dwudziestu liniach kodu.
  • Systemowy prompt, który określa gatunek, ton i zasady, ma większe znaczenie niż jakiekolwiek ustawienia próbkowania.
  • Okno 100,000 tokenów pozwala utrzymać całą biblie opowieści i kilka rozdziałów w jednym zapytaniu.
  • Rozdział o 1,200 tokenach kosztuje około jednej dziesiątej centa, więc koszt rzadko jest ograniczeniem.

Czym jest generator opowiadań AI bez filtrów

Generator opowiadań AI bez filtrów to model tekstowy, który pisze fikcję, nie przerywając, by cię pouczyć, nie zamieniając twojego złoczyńcy na postać przyjazną ani nie odmawiając sceny, ponieważ temat jest mroczny. Thrillery kryminalne, powieści wojenne, horror, protagonistów w szarej strefie moralnej oraz dojrzały romans między dorosłymi potrzebują modelu, który traktuje mroczny materiał jako materiał, a nie jako powód do alarmu.

Usługa stojąca za tą stroną oferuje jeden model o otwartych wagach, nastawiony na odpowiadanie bez odrzucania treści dla prawnego użytku dorosłych. Działa u niezależnego dostawcy i jest dostępny przez standardowe API w stylu OpenAI. Wysyłasz listę wiadomości, otrzymujesz tekst. Nie ma edytora webowego do nauki ani szablonu do wypełnienia, o to chodzi: Ty decydujesz, jak działa narzędzie do pisania, a model dostarcza tekst.

Jedna zasada jest stała. Treści seksualne z udziałem nieletnich są zawsze zabronione i żaden prompt tego nie zmienia. Wszystko inne w prawnym utworze dla dorosłych jest Twoje do napisania. Jeśli chcesz ogólnego obrazu, jak to się porównuje z platformą postaci z hostingu, strona NoFilter AI kontra Character AI to omawia.

Twoje pierwsze opowiadanie w dwudziestu liniach Pythona

Ponieważ API jest zgodne z formatem OpenAI, oficjalny openai pakiet działa bez zmian. Wystarczy podmienić base URL i klucz. Zainstaluj go za pomocą pip install openai, a następnie uruchom to.

from openai import OpenAI

client = OpenAI(
    base_url="https://api.nofilterai.cc/v1",
    api_key="YOUR_KEY",
)

resp = client.chat.completions.create(
    model="uncensored",
    temperature=0.9,
    messages=[
        {"role": "system", "content": (
            "You are a fiction author. Write in third person, past tense. "
            "Use concrete detail and subtext. Never summarise the scene, "
            "never moralise, never address the reader."
        )},
        {"role": "user", "content": (
            "Genre: noir crime. Setting: a flooded harbour town. "
            "Write the opening 600 words. A smuggler finds a body in his net."
        )},
    ],
)
print(resp.choices[0].message.content)

Identyfikator modelu to uncensored. Klucz pochodzi ze strony klucz API. Jeśli jeszcze się nie zalogowałeś, nowi użytkownicy mogą odebrać tam kredyt próbny w wysokości $0,50 jednym kliknięciem, ważny przez 7 dni, więc ten pierwszy skrypt nic cię nie kosztuje.

To samo wywołanie działa z curl, co jest przydatne przy testowaniu promptu przed opakowaniem go w kod.

curl https://api.nofilterai.cc/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [
      {"role": "user", "content": "Write a 200 word horror scene set in a lighthouse."}
    ]
  }'

Struktura promptu generująca użyteczną fikcję

Większość rozczarowujących wyników z modelu opowieściowego wynika z niejasnych instrukcji, a nie z samego modelu. Trzy części promptu wykonują ciężką pracę.

Komunikat systemowy określa autora, a nie temat

Umieść tu zasady głosu: perspektywa, czas, rytm zdania, czego unikać. Linia taka jak "nie kończ scen refleksją nad tym, co to wszystko znaczy" usuwa nawyk, który dzieli wiele modeli językowych. Utrzymuj ten komunikat stabilny przez cały projekt, aby rozdziały brzmiały podobnie.

Komunikat użytkownika określa rytm

Podawaj po jednej scenie na raz. Nazwij postaci, miejsce, co się zmienia na końcu sceny oraz docelową długość. „Napisz 700 słów. Mara konfrontuje się z bratem dotycząco brakującej księgi rachunkowej. Nie dostaje odpowiedzi” jest znacznie lepsze niż „kontynuuj historię”.

Biblia opowieści jest dołączana

Utrzymuj krótki blok z faktami o postaciach, dotychczasową linią czasu i otwartymi wątkami i wysyłaj go z każdym zapytaniem. Biblia o 800 tokenach kosztuje prawie nic i zapobiega zmianie koloru oczu lub wskrzeszeniu postaci przez model.

  • Używaj temperature na poziomie około 0.8 do 1.0 przy pisaniu i 0.5 do 0.7 przy edycji.
  • Używaj sekwencji stop, jeśli generujesz w stałym formacie, np. zatrzymując się przy linii "KONIEC SCENY".
  • Używaj presence_penalty i frequency_penalty oszczędnie, jeśli model powtarza ulubione zwroty. Obie są przekazywane do modelu.
  • Używaj seed, gdy chcesz porównać dwie wersje promptu na równych zasadach.

Utrzymanie spójności długiego opowiadania

Okno kontekstu wynosi 100,000 tokenów, licząc razem prompt i odpowiedź. To miejsce na pełną biblie opowieści, poprzednie kilka rozdziałów i nowy rozdział wyjściowy w jednym zapytaniu. Dla większości projektów literackich możesz na długo zapomnieć o sztuczkach pamięciowych.

Prosta pętla obsługuje serializowane opowiadanie. Utrzymuj listę wiadomości, dołączaj każdy rozdział napisany przez model i dodawaj swoją kolejną instrukcję. Gdy lista zbliża się do limitu, zastąp najstarsze rozdziały krótkim streszczeniem, które również poprosisz model o napisanie.

from openai import OpenAI

client = OpenAI(base_url="https://api.nofilterai.cc/v1", api_key="YOUR_KEY")

bible = "Mara Voss, 34, ferry pilot. Brother Teo owes money. Setting: Harbor Nine, rain every night."
history = [{"role": "system", "content": "Fiction author. Third person, past tense. No moralising.\nBible: " + bible}]

def write(beat):
    history.append({"role": "user", "content": beat})
    r = client.chat.completions.create(model="uncensored", messages=history, temperature=0.85)
    text = r.choices[0].message.content
    history.append({"role": "assistant", "content": text})
    return text

print(write("Chapter 1, 700 words: Mara finds Teo's boat adrift."))
print(write("Chapter 2, 700 words: she searches the cabin and finds a second ledger."))

Gdy osiągniesz limit, nie obcinaj bez ostrzeżenia. Model, który traci początek opowieści, często zachowuje fabułę, ale zapomina o drobnych faktach. Pisane streszczenie o 500 do 800 tokenów, wstawione po komunikacie systemowym, utrzymuje te fakty przy małym koszcie.

Nieudane lub odrzucone zapytania nie są rozliczane, więc ponowna próba po błędzie nie podwaja Twojej faktury. Pełna lista parametrów znajduje się w dokumentacji API.

Strumieniowanie i fikcja interaktywna

Dla gry tekstowej lub żywego asystenta do pisania chcesz widzieć słowa na ekranie, gdy przychodzą. Ustaw stream: true i czytaj zdarzenia wysyłane przez serwer. Liczniki użycia przychodzą na końcu strumienia.

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.nofilterai.cc/v1",
  apiKey: process.env.NOFILTER_KEY,
});

const stream = await client.chat.completions.create({
  model: "uncensored",
  stream: true,
  messages: [
    { role: "system", content: "You are the narrator of a survival horror text adventure. Second person, present tense." },
    { role: "user", content: "I open the cellar door." },
  ],
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}

Obowiązują dwa praktyczne limity. Pełny klucz pozwala na 8 równoległych zapytań i 300 zapytań na minutę; klucz próbny pozwala na 2 i 60. Strumieniowane zapytanie zajmuje slot współbieżności do momentu zakończenia strumienia, więc wolny odbiornik na stronie internetowej może blokować slot dłużej, niż się spodziewasz. Jeśli przekroczysz limit, otrzymasz HTTP 429 z kodem błędu rate_limited lub concurrency. Przy krótkotrwałym przeciążeniu otrzymasz również 429 z Retry-After: 5, a odczekanie pięciu sekund przed ponowną próbą jest właściwą reakcją.

Dlaczego generowane opowieści stają się płaskie i jak to naprawić

Nawet bez odrzuceń model może napisać nudną fikcję. Typowe przyczyny są łatwe do naprawienia, gdy je poznasz.

Pierwsza to tendencja do streszczania. Działając samodzielnie, model kompresuje wydarzenia w porządne streszczenie. Poproś o jedną scenę, określ jej długość i zabroń streszczeń w wiadomości systemowej. Druga to jednolitość: każda postać mówi w tym samym uprzejmym rejestrze. Nadaj każdej postaci mówiącej dwuliniową notatkę o głosie, np. "staccato, nigdy nie kończy zdań" lub "formalny, używa tytułów nawet wobec przyjaciół". Trzecia to brak stawki. Zwrot typu "rozmawiają o planie" generuje wypełniacz, podczas gdy "ona potrzebuje, by zgodził się przed świtem, a on o tym wie" generuje napięcie.

Na końcu przeczytaj wynik jako redaktor. Jeśli ten sam kształt zdania otwiera cztery akapity z rzędu, poinformuj o tym model w kolejnym zapytaniu i poproś o przeredagowanie. Ty kierujesz, nie przyjmujesz tego, co nadejdzie. Pisarze, którzy traktują pierwsze wyjście jako szkic, uzyskają znacznie lepsze rozdziały niż ci, którzy oczekują wersji gotowej.

Ile kosztuje opowiadanie

Cennik to $0.15 za 1M tokenów wejściowych i $0.50 za 1M tokenów wyjściowych, z przedpłaconego kredytu bez subskrypcji. Kredyt nie wygasa. Poniższe liczby są obliczone od tych dwóch cen.

ZadanieTokeny wejścioweTokeny wyjścioweKoszt
Jeden rozdział z Biblią i wcześniejszym tekstem3,0001,200$0.00045 + $0.0006 = $0.00105
100 takich rozdziałów300,000120,000$0.045 + $0.06 = $0.105
Sesja interaktywna: 50 tur, kontekst 20,000 tokenów każda, odpowiedzi 1,000 tokenów1,000,00050,000$0.15 + $0.025 = $0.175
Jedno zapytanie, które wypełnia okno kontekstu wejściem100,0000$0.015

Nawet sto rozdziałów kosztuje około dziesięciu centów. Doładowania zaczynają się od $20 i sięgają $500 w dowolnej kwocie całkowitej, z bonusem 5% od $50, 10% od $100 i 15% od $200. Płatność tylko krypto, za pomocą USDT na TRC20 lub USDC na Base. Aktualne szczegóły znajdziesz na stronie z cenami.

Kosztującą nawyką jest ponowne wysyłanie bardzo długiej historii przy każdej turze interaktywnej opowieści. Streszczaj stare tury, a Twoje tokeny wejściowe gwałtownie spadną.

Praktyczne wskazówki i limity

Kilka punktów oszczędzi ci czasu, gdy zaczniesz budować aplikację.

  • Tylko tekst. Usługa nie generuje obrazów, dźwięku ani wideo i nie oferuje osadzania ani dopasowywania. Do okładki lub głosu użyj innego narzędzia.
  • Tryb JSON pomaga ze strukturą. Poproś o response_format: {"type":"json_object"}, gdy chcesz, aby model zwrócił arkusz postaci lub listę scen, które twój kod parsuje.
  • Twoje prompty nie są używane do trenowania. Ma to znaczenie, jeśli twoja powieść jest nieopublikowana.
  • Edytuj etapami. Stwórz szkic przy wysokiej temperaturze, a następnie wyślij go z instrukcją, aby zaostrzyć dialogi lub usunąć przysłówki przy niższej temperaturze.
  • Sprawdzaj wynik. Model bez odrzuceń pójdzie za twoim tropem, więc ton, jaki otrzymasz, to ton, o który poprosiłeś.

Model to ogólny model o otwartych wagach, a nie oficjalne API dostawcy, więc przetestuj go na swoim gatunku przed zbudowaniem produktu na jego bazie. Zacznij od darmowego kredytu próbnego i kilku prawdziwych rozdziałów.

Pytania i odpowiedzi

Czy jest darmowy sposób na wypróbowanie generatora opowieści bez filtrów przez API?

Nowi użytkownicy mogą odebrać $0.50 kredytu próbnego jednym kliknięciem na stronie klucza API po rejestracji. Nie wymaga to płatności, jest ważne przez 7 dni i przysługuje tylko raz na osobę.

Jak długa może być prośba o pojedynczą opowieść?

Okno kontekstu wynosi 100,000 tokenów, dzielonych między prompt a odpowiedź. Odpowiedź może wykorzystać wszystko, co pozostawił prompt, a max_tokens jest opcjonalne.

Czy mogę użyć go z narzędziami, które już obsługują OpenAI?

Tak. Działa każdy klient, który pozwala ustawić własny Base URL i klucz, używając ID modelu uncensored. Obsługiwane metody to POST /v1/chat/completions i GET /v1/models.

Czy są jakieś treści, których model nie będzie pisał?

Treści seksualne z udziałem nieletnich są zawsze zabronione. Poza tym model jest nastawiony na odpowiadanie bez odrzucania treści dla prawnego użytku dorosłych.

Czy przechowujesz lub trenujesz na moich opowieściach?

Prompty nie są używane do trenowania.

Twój klucz jest jeden formularz dalej

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