AI-verhaalgenerator zonder filters via API
Een verhaalgenerator die stopt midden in een scène omdat de plot donkerder wordt, is een slecht schrijfgereedschap. Dit artikel laat zien hoe je er een bouwt op een OpenAI-compatible endpoint, met code die je vandaag nog kunt uitvoeren.

Belangrijkste punten
- Wijs een OpenAI SDK naar de basis-URL, gebruik de model-ID uncensored en je hebt een verhaalengine in ongeveer twintig regels.
- Een system prompt die genre, toon en regels instelt, is belangrijker dan elke sampling-instelling.
- Het venster van 100.000 tokens laat je een volledige story bible en meerdere hoofdstukken in één verzoek houden.
- Een hoofdstuk van 1.200 tokens kost ongeveer een tiende van een cent, dus kosten zijn zelden de beperking.
Wat een verhaalgenerator zonder filters precies is
Een AI-verhaalgenerator zonder filters is een tekstmodel dat fictie schrijft zonder je te laten vertellen wat wel en niet mag, je schurk niet plotseling vriendelijk maakt, of een scène weigert omdat het onderwerp somber is. Misdaadthrillers, oorlogsverhalen, horror, moreel grijze protagonisten en volwassen romantiek tussen volwassenen hebben allemaal een model nodig dat donkere stof als stof behandelt, niet als een waarschuwing.
De service achter deze site geeft je één open-weight model, afgestemd om zonder inhoudelijke weigeringen te antwoorden voor wettelijk volwassen gebruik. Het draait bij een onafhankelijke provider en is bereikbaar via een standaard OpenAI-style API. Je stuurt een lijst met berichten, je krijgt tekst terug. Er is geen webeditor om te leren en geen sjabloon om in te vullen, wat het punt is: jij beslist hoe het verhaalgereedschap werkt, en het model levert de tekst.
Er is één regel vast. Seksuele inhoud met minderjarigen is nooit toegestaan, en geen enkele prompt verandert dat. De rest van de legale volwassen fictie is van jou om te schrijven. Als je een algemeen beeld wilt van hoe dit zich verhoudt tot een platform voor gekarakteriseerde chat, dan behandelt de pagina over NoFilter AI versus Character AI dit.
Je eerste verhaal in twintig regels Python
Omdat de API het OpenAI-formaat volgt, werkt het officiële openai-pakket ongewijzigd. Je vervangt alleen de basis-URL en de sleutel. Installeer het met pip install openai en voer dit uit.
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)
De model-ID is uncensored. De sleutel vind je op de API-sleutelpagina. Als je je nog niet hebt aangemeld, kunnen nieuwe gebruikers daar met één klik $0,50 aan proeftegoed claimen, geldig voor 7 dagen, zodat dit eerste script je niets kost.
Dezelfde aanroep werkt vanuit curl, wat handig is om een prompt te testen voordat je deze in code verwerkt.
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."}
]
}'Promptstructuur die bruikbare fictie oplevert
De meeste teleurstellende output van een verhaalmodel komt door vage instructies, niet door het model. Drie delen van de prompt doen het zware werk.
Het systeembericht stelt de auteur in, niet het onderwerp
Plaats hier stemregels: perspectief, tijd, zinsbouw, wat te vermijden. Een regel zoals "eind scènes niet met een reflectie op wat het allemaal betekent" verwijdert een gewoonte die veel taalmodellen delen. Houd dit bericht stabiel over een heel project heen, zodat hoofdstukken op elkaar lijken.
Het bericht van de gebruiker bepaalt het ritme
Geef één scène per keer. Noem de personages, de locatie, wat er aan het eind van de scène verandert, en een gewenste lengte. "Schrijf 700 woorden. Mara confronteert haar broer over het ontbrekende ledger. Ze krijgt geen antwoord" is veel beter dan "ga door met het verhaal".
Een verhaalbijbel reist mee
Houd een kort blok bij met feiten over personages, de tijdlijn tot nu toe en openstaande punten, en stuur het mee met elk verzoek. Een bijbel van 800 tokens kost bijna niets en voorkomt dat het model een oogkleur verandert of een personage weer tot leven brengt.
- Gebruik
temperaturerond 0,8 tot 1,0 voor het schrijven van concepten en 0,5 tot 0,7 voor redactierondes. - Gebruik
stopsequenties als je in een vast formaat genereert, bijvoorbeeld stoppen bij een regel die "EINDE SCÈNE" luidt. - Gebruik
presence_penaltyenfrequency_penaltylichtjes als het model vaste zinsuitingen herhaalt. Beide worden doorgegeven aan het model. - Gebruik
seedals je twee promptversies op gelijke voet wilt vergelijken.
Een lang verhaal consistent houden
Het contextvenster is 100.000 tokens, inclusief de prompt en het antwoord samen. Dat is ruimte voor een volledige verhaalbijbel, de vorige meerdere hoofdstukken en een nieuw hoofdstuk met output in één verzoek. Voor de meeste fictieprojecten hoef je je lang geen zorgen meer te maken over geheugentrucs.
Een eenvoudige lus behandelt een geserialiseerd verhaal. Houd een lopende lijst van berichten bij, voeg elk hoofdstuk dat het model schrijft toe, en voeg je volgende instructie toe. Als de lijst de limiet nadert, vervang dan de oudste hoofdstukken door een korte samenvatting die je ook het model laat schrijven.
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."))
Knap niet stilzwijgend af als je de limiet bereikt. Een model dat het begin van het verhaal kwijtraakt, houdt vaak het plot vast, maar vergeet kleine feiten. Een geschreven samenvatting van 500 tot 800 tokens, ingevoegd na het systeembericht, houdt die feiten levend tegen kleine kosten.
Mislukte of geweigerde verzoeken worden niet in rekening gebracht, dus een heraanroep na een fout verdubbelt je rekening niet. De volledige lijst met parameters vind je in de API-documentatie.
Streaming en interactieve fictie
Voor een tekstavontuur of een live schrijfassistent wil je tekst op het scherm zien verschijnen zodra deze aankomt. Stel stream: true in en lees de server-verzonden gebeurtenissen. Gebruikscijfers verschijnen aan het einde van de stream.
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 ?? "");
}
Er gelden twee praktische limieten. Een volledige sleutel staat 8 gelijktijdige verzoeken en 300 verzoeken per minuut toe; een proefsleutel staat 2 en 60 toe. Een gestreamd verzoek houdt zijn concurrentieslot vast tot de stream eindigt, dus een langzame reader op een webpagina kan een slot langer blokkeren dan je verwacht. Als je een limiet overschrijdt, ontvang je HTTP 429 met de foutcode rate_limited of concurrency. Bij korte overbelasting krijg je ook een 429 met Retry-After: 5, en vijf seconden wachten voordat je opnieuw probeert, is de juiste reactie.
Waarom gegenereerde verhalen vlak worden, en de oplossingen
Zelfs zonder weigeringen kan een model saie fictie schrijven. De gebruikelijke oorzaken zijn eenvoudig te repareren zodra je ze kent.
Het eerste is de samenvattingsreflex. Als het model met rust wordt, comprimeert het gebeurtenissen tot een nette samenvatting. Vraag om één scène, noem de lengte, en verbied samenvattingen in het systeembericht. Het tweede is eentonigheid: elk personage spreekt in dezelfde beleefde toon. Geef elk sprekend personage een twee-regelige stemnotitie, zoals "kortaf, maakt zinnen nooit af" of "formeel, gebruikt titels zelfs voor vrienden". Het derde is het ontbreken van stakes. Een moment zoals "ze praten over het plan" produceert vulmateriaal, terwijl "ze heeft hem nodig om vóór zonsopgang in te stemmen, en hij weet het" spanning produceert.
Lees tot slot de output als een redacteur. Als dezelfde zinsvorm vier alinea's achter elkaar opent, zeg dat dan tegen het model in het volgende verzoek en vraag om een herschrijving. Je stuurt aan, je accepteert niet zomaar wat er aankomt. Schrijvers die de eerste output behandelen als een ruwe concept krijgen veel betere hoofdstukken dan zij die een afgewerkt exemplaar verwachten.
Wat een verhaal kost
Prijzen zijn $0,15 per 1M inputtokens en $0,50 per 1M outputtokens, van prepaid tegoed zonder abonnement. Tegoed vervalt niet. De cijfers hieronder zijn berekend op basis van die twee prijzen.
| Taak | Input-tokens | Output-tokens | Kosten |
|---|---|---|---|
| Een hoofdstuk met bijbel en eerdere tekst | 3,000 | 1,200 | $0.00045 + $0.0006 = $0.00105 |
| 100 zulke hoofdstukken | 300,000 | 120,000 | $0.045 + $0.06 = $0.105 |
| Interactieve sessie: 50 beurten, context van 20.000 tokens elk, antwoorden van 1.000 tokens | 1,000,000 | 50,000 | $0.15 + $0.025 = $0.175 |
| Een verzoek dat het venster vult met input | 100,000 | 0 | $0.015 |
Zelfs honderd hoofdstukken kosten ongeveer tien cent. Opwaarderingen beginnen bij $20 en lopen op tot $500 in elk willekeurig geheel bedrag, met een bonus van 5% vanaf $50, 10% vanaf $100 en 15% vanaf $200. Betalen kan alleen met crypto, via USDT op TRC20 of USDC op Base. Actuele details staan op de prijspagina.
De dure gewoonte is het opnieuw verzenden van een zeer lange geschiedenis bij elke beurt van een interactief verhaal. Vat oude beurten samen en je input-tokens dalen scherp.
Praktisch advies en limieten
Een paar punten besparen tijd zodra je begint met bouwen.
- Alleen tekst. De service genereert geen afbeeldingen, audio of video, en biedt geen inbeddingen of fine-tuning. Voor coverart of stem, gebruik je een ander hulpmiddel.
- JSON-modus helpt met structuur. Vraag om
response_format: {"type":"json_object"}, wanneer je wilt dat het model een personageblad of een scenelijst retourneert die je code parseert. - Je prompts worden niet gebruikt voor training. Dat is belangrijk, als je manuscript nog niet gepubliceerd is.
- Bewerk in beurten. Schrijf een concept met een hoge temperatuur, stuur het concept daarna terug met de instructie om dialoog aan te scherpen of bijvoeglijke naamwoorden te verminderen, met een lagere temperatuur.
- Controleer de output. Een model zonder weigeringen volgt jouw leidraad, dus, de toon die je krijgt is de toon die je vraagt.
Het model is een algemeen open-weight model, geen officiële API van een leverancier, dus test het op je eigen genre voordat je een product eromheen bouwt. Begin met het proeftegoed en een paar echte hoofdstukken.
Meer handleidingen
Vragen en antwoorden
Is er een gratis manier om een no-filter-AI-verhaalgenerator via de API te proberen?
Nieuwe gebruikers kunnen $0,50 aan proeftegoed claimen met één klik op de API-sleutelpagina na het inloggen. Het vereist geen betaling, is 7 dagen geldig en is beperkt tot één per persoon.
Hoe lang kan een enkel verhaalverzoek zijn?
Het contextvenster is 100.000 tokens, gedeeld door de prompt en het antwoord. Het antwoord kan alles gebruiken wat de prompt vrijlaat, en max_tokens is optioneel.
Kan ik het gebruiken met tools die OpenAI al ondersteunen?
Ja. Elke client waarmee je een aangepaste basis-URL en sleutel kunt instellen, werkt met de model-ID uncensored. De ondersteunde methoden zijn POST /v1/chat/completions en GET /v1/models.
Is er inhoud die het model niet zal schrijven?
Seksuele inhoud met minderjarigen is nooit toegestaan. Daarbovenop is het model afgestemd om zonder inhoudelijke weigeringen te antwoorden voor wettelijk volwassen gebruik.
Bewaar of train je op mijn verhalen?
Prompts worden niet gebruikt voor training.
Je sleutel is nog maar één formulier verwijderd
Maak een account aan, kopieer de sleutel, pas de base URL aan. Dat is de hele setup.