NL ▾
API-sleutel aanvragen

NsfwAiApiHandleiding

NSFW LLM-systeemprompt: Structuur en voorbeelden

Een NSFW-LLM-systeemprompt is een kort blok instructies dat vastlegt wie het model speelt, wat het verhaal toelaat en hoe de antwoorden moeten klinken. Deze gids toont een lay-out die werkt voor wettelijke volwassen fictie en companion chat, met code die je kunt uitvoeren.

Bijgewerkt

Gestapelde promptkaarten die in een chatbubble stromen boven een terminal, ter illustratie van de systeempromptstructuur
Isometrische illustratie die een lokale GPU-doos en een gehost servercluster vergelijkt, verbonden door chatballonnen

Wat een systeemprompt doet in een volwassen fictie-app

Het systeembericht is het eerste item in de messages-array. Het model leest het voor elke beurt en behandelt het als vaste instructies. Met een ongecensureerd model is de prompt belangrijker dan bij een sterk gefilterd model, omdat er geen verborgen laag is die de toon voor je bepaalt. Alles wat je niet specificeert, vult het model met zijn eigen standaardwaarden, en die zijn vaak vlak, repetitief of te lang.

Dus de taak van de prompt is niet om iets te "jailbreaken". Het model op deze service is afgestemd op antwoorden zonder inhoudelijke weigeringen voor wettelijk volwassen gebruik, dus je hebt geen trucs nodig. Je hebt richting nodig: wie spreekt, waar, in welke stijl, en waar de grenzen van het verhaal liggen. Een prompt die dit goed doet, produceert consistente personages over honderden beurten.

Er is één regel die buiten jouw controle staat en buiten elke prompt: geen seksuele inhoud met minderjarigen. Vermeld in je prompt dat elk personage volwassen is. Dit houdt het verhaal netjes en komt overeen met de servicevoorwaarden in de API-documentatie.

De vijfdelige structuur

De meeste prompts die standhouden tijdens een lange sessie hebben hetzelfde skelet. Houd elk onderdeel tot een paar regels.

  1. Rol. Één zin over wie het model is. Geef een naam en een taak, geen lijst van bijvoeglijke naamwoorden.
  2. Omgeving. Plaats, tijd, relatie tot het personage van de gebruiker, en een opmerking dat alle personages volwassen zijn.
  3. Stem. Persoon en tijd, zinslengte, humor niveau, woordenschat. Geef aan hoe lang antwoorden moeten zijn in woorden.
  4. Regels. Een handvol positieve instructies, zoals "spreek nooit voor het personage van de gebruiker" en "houd scènes smaakvol en niet-expliciet, tenzij de gebruiker anders stuurt".
  5. Exitlijn. Wat te doen als de gebruiker iets vraagt buiten het verhaal. Een korte zin buiten het personage, dan terug naar de scène.

Weersta de drang om een zesde, zevende en achtste onderdeel toe te voegen. Elke extra alinea concurreert om aandacht, en modellen volgen de eerste en laatste regels van een prompt vaak betrouwbaarder dan het midden.

Een werkend voorbeeld dat je vandaag nog kunt versturen

Het onderstaande script gebruikt de OpenAI Python SDK. Alleen de basis-URL, de sleutel en de model-ID verschillen van een standaard OpenAI-setup. Als je nieuw bent bij de endpoint, behandelt de Python-gids installatie en foutafhandeling.

from openai import OpenAI

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

SYSTEM = """You are Mara, a ship's navigator in a slow-burn space drama.
Setting: the freighter Calloway, year 2412. Adults only, all characters are 18+.
Voice: dry, warm, quick with a joke. Replies are 80-150 words.
Write in third person past tense for narration, first person for dialogue.
Never speak or act for the user's character.
Stay in character. If the user asks for something outside the story, answer in one short out-of-character line, then offer to continue."""

history = [{"role": "system", "content": SYSTEM}]

def say(text):
    history.append({"role": "user", "content": text})
    r = client.chat.completions.create(
        model="uncensored",
        messages=history,
        temperature=0.9,
        top_p=0.95,
        presence_penalty=0.3,
    )
    reply = r.choices[0].message.content
    history.append({"role": "assistant", "content": reply})
    return reply

print(say("Mara, the engines are quiet tonight. Can't sleep?"))

Let op wat de prompt niet bevat. Er is geen alinea met verontschuldigingen, geen lijst van twintig verboden woorden, geen instructie om "zo expliciet mogelijk te zijn". Het geeft een personage, een plek, een stem en een lengte. Explicietheid volgt dan de richting van de gebruiker in het gesprek, zoals de meeste lezers van volwassen fictie willen dat het zich gedraagt.

Hetzelfde verzoek met curl

Als je een prompt wilt testen voordat je het in code verwerkt, is curl snel. Het systeembericht gaat in het eerste slot, precies zoals in Python.

curl https://api.nsfwaiapi.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [
      {"role": "system", "content": "You are Mara, a navigator. Adults only. Stay in character. Replies under 120 words."},
      {"role": "user", "content": "Mara, are you still awake?"}
    ],
    "temperature": 0.9
  }'

Het antwoord is standaard chat-completies JSON. De antwoordtekst staat in choices[0].message.content, en de X-Balance-USD response header toont je resterende tegoed na het verzoek.

Instellingen die met de prompt interageren

De prompt is maar de helft van het gedrag. Sampling-instellingen beïnvloeden hoe nauwkeurig het model het volgt.

  • temperature tussen 0,8 en 1,0 geeft levendig proza. Verlaag naar 0,6 als het personage van zijn verhaal afdwaart.
  • top_p rond 0,9 tot 0,95 snijdt vreemde woordkeuzes af zonder de stem vlak te maken.
  • presence_penalty of frequency_penalty van 0,2 tot 0,5 vermindert herhaalde zinnen in lange chats. Deze worden doorgegeven aan het model.
  • seed helpt als je twee versies van een prompt vergelijkt: zet de seed vast en verander alleen de tekst.
  • max_tokens is optioneel. Een lengteinstructie in de prompt werkt meestal beter dan een harde limiet, die een zin in tweeën kan snijden.

Verander één ding tegelijk. Als je de prompt en de temperatuur tegelijk bewerkt, weet je niet welke verandering hielp.

Veelvoorkomende fouten en hoe ze op te lossen

Het model spreekt namens de gebruiker

Voeg één expliciete regel toe: "Schrijf nooit de woorden, gedachten of acties van het personage van de gebruiker." Herhaal dit als de laatste regel van de prompt. Modellen wegen het einde van het systeembericht zwaarwegend.

Antwoorden worden steeds langer

Geef een aantal, zoals "80 tot 150 woorden". Vage formuleringen zoals "beknopt" worden op elke beurt anders gelezen. Controleer ook dat je eigen voorbeeldberichten in de geschiedenis niet te lang zijn, omdat het model de lengte die het ziet kopieert.

Het personage vergeet de setting na vele beurten

Het systeembericht staat altijd bovenaan, dus het valt niet buiten een contextvenster van 100.000 tokens, maar details vervagen in een lange geschiedenis. Voeg na elke 30 of 40 beurten een korte samenvatting toe als een gebruikersbericht, of vat oude beurten samen en vervang ze. De roleplay-modelgids bespreekt hoe de contextgrootte lange scènes beïnvloedt.

De toon wordt repetitief

Voeg een variatiehint toe aan de stemsectie, zoals "varieer zinsopeningen en vermijd het herhalen van een zin die in de laatste drie antwoorden is gebruikt", en verhoog de presence penalty iets.

Buiten het personage om praten

Definieer de exitlijn. Zonder exitlijn improviseert het model disclaimers.

Wat de systeemprompt kost

Het systeembericht wordt bij elk verzoek verzonden, dus het telt als input elke keer. Neem een prompt van 400 tokens. Bij $0,15 per 1M inputtokens kost 400 tokens 400 / 1.000.000 x $0,15 = $0,00006 per verzoek. Over 1.000 verzoeken is dat 400.000 tokens, of $0,06.

Een gesprek bevat ook zijn geschiedenis, wat meestal veel meer kost dan het systeembericht. Output wordt gefactureerd tegen $0,50 per 1M tokens, dus een antwoord van 150 woorden van ongeveer 200 tokens kost 200 / 1.000.000 x $0,50 = $0,0001. Mislukte of geweigerde verzoeken worden niet in rekening gebracht. Huidige prijzen en opwaardeerbedragen staan op de prijzenpagina, en je kunt beginnen met een proef-sleutel van de API-sleutelpagina. Betaling is in crypto (USDT op TRC20 of USDC op Base).

De conclusie: een prompt van 600 tokens is geen kostenprobleem. Schrijf de prompt die je nodig hebt en besteed de moeite aan het testen ervan in plaats van het inkorten.

Vragen en antwoorden

Hoe lang moet een NSFW-systeemprompt zijn?

Tussen 150 en 400 woorden dekt de meeste gevallen. Langere prompts helpen zelden en kunnen de instructies die er toe doen verwateren.

Moet ik een jailbreak gebruiken voor ongecensureerde antwoorden?

Nee. Het model is afgestemd om zonder inhoudelijke weigeringen te antwoorden voor wettelijk volwassen gebruik, dus een duidelijke rol en omgeving is genoeg. Tekst in jailbreak-stijl voegt meestal vooral ruis toe.

Kan ik het systeembericht wijzigen tijdens het gesprek?

Ja. Vervang het eerste bericht in de array bij het volgende verzoek. Het model volgt de nieuwe versie direct, hoewel eerdere antwoorden in de geschiedenis nog steeds de stijl beïnvloeden.

Is er iets verboden, ongeacht de prompt?

Ja. Seksuele inhoud met minderjarigen is nooit toegestaan, en je moet vermelden dat alle personages volwassen zijn in je instellingsblok.

Je sleutel is nog maar één stap verwijderd

Maak een account aan, kopieer de sleutel, pas de basis-URL aan. Dat is de hele installatie.

API-sleutel ophalen

NsfwAiApiOngecensureerde LLM-API voor NSFW-tekstgeneratie