DE ▾

chatbotnsfw.comUnzensierte LLM-API für Entwickler

NSFW-Chatbot-API für Entwickler: So baust du einen auf

Eine NSFW-Chatbot-API für Entwickler ist ein normaler Chat-Endpunkt, der von einem Modell unterstützt wird, das rechtlich zulässige Erwachseneninhalte nicht ablehnt. Der Endpunkt ist der einfache Teil. Die Persona, der Speicher, die Altersprüfung und die Moderation musst du selbst bauen.

Zuletzt aktualisiert

Isometrische Bühne mit leuchtenden Chat-Bubbles, die durch ein Tor über einem Server-Rack gleiten

Zusammenfassung

  1. Die API ersetzt ein ablehnendes Modell durch eines, das auf erwachsene Fiktion antwortet; alles Produktseitige bleibt bei dir.
  2. Behalte den Schlüssel auf deinem Server, speichere die Historie selbst und sende bei jedem Zug ein zugeschnittenes Fenster.
  3. Beschränke den Zugang auf Erwachsene vor jeder Chat-Anfrage und halte eine harte Grenze bei Inhalten mit Minderjährigen ein.
  4. Streaming, Wiederholungsversuche bei 429 und ein pro Benutzer festgelegtes Limit halten einen kleinen Bot bei 8 parallelen Anfragen stabil.

Was die API dir bietet und was du noch besitzt

Der Dienst ist eine gehostete, OpenAI-kompatible Text-API. Du richtest ein OpenAI SDK auf https://api.chatbotnsfw.com/v1 ein, nutzt die Modell-ID uncensored und sendest normale Chat-Nachrichten. Das Modell ist ein Open-Weight-Modell, das darauf abgestimmt ist, ohne Inhaltsablehnung auf rechtliche Inhalte für Erwachsene zu antworten. Es ist nur Text: keine Bilder, Audio oder Video.

Das ist der gesamte Vertrag. Die API weiß nicht, wer dein Nutzer ist, wie alt er ist oder was deine Plattform erlaubt. Sie erinnert sich auch nicht an irgendetwas zwischen Aufrufen. Jede Anfrage muss die vollständige Konversation enthalten, die das Modell sehen soll.

BetreffWer ist zuständig
Generierung von Antworten ohne InhaltsablehnungDie API
Persona, Tonfall und Story-RegelnDu im System-Prompt
Konversations-SpeicherDu in deiner Datenbank
Altersprüfung und EinwilligungDu
Blockierung von Inhalten mit MinderjährigenDu, und die API hat dieselbe harte Grenze
Meldungen, Sperren, NutzungsbedingungenDu

Wenn du noch nicht gegen eine Chat-API entwickelt hast, behandelt die API-Dokumentation das Anfrageformat. Der bestehende NSFW-LLM-Integrationsleitfaden geht die Integrationsseite im Detail durch; dieser Artikel handelt vom Produkt darum herum.

Architektur: Halte den Schlüssel auf dem Server

Dein Frontend sollte den API-Schlüssel niemals halten. Platziere ein kleines Backend zwischen Browser oder App und der API. Das Backend authentifiziert deinen Nutzer, prüft die Altersprüfung, lädt seine Historie, ruft die API auf und speichert die Antwort.

  1. Browser sendet die Nachricht des Nutzers an dein Backend mit seiner Sitzung.
  2. Backend prüft, ob der Nutzer als Erwachsener verifiziert ist und unter seinem Ratenlimit liegt.
  3. Backend erstellt die Nachrichtenliste: System-Prompt, Speicher, aktuelle Züge, neue Nachricht.
  4. Backend ruft POST /v1/chat/completions auf und streamt Token zurück.
  5. Backend speichert den neuen Zug nach Ende des Streams.

Ein Voll-Key erlaubt 8 parallele Anfragen und 300 Anfragen pro Minute. Das ist genug für einen Hobby-Bot und ein fairer Start für ein kleines Produkt, solange dein Backend nicht zulässt, dass ein Nutzer mehrere Streams gleichzeitig öffnet. Eine gestreamte Anfrage belegt ihren Concurrency-Slot, bis der Stream endet, also kostet dich ein Nutzer, der einen offenen Stream verlässt, weiterhin einen Slot.

Schreibe die Persona als Vertrag

Der System-Prompt erledigt die meiste Produktarbeit. Ein guter liest sich wie ein kurzer Vertrag mit dem Modell, nicht wie ein Adjektiv-Paragraph. Decke vier Dinge ab: Wer die Figur ist, wie sie spricht, was die Story ist und was außerhalb der Grenzen liegt.

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.chatbotnsfw.com/v1",
    api_key=os.environ["NSFW_API_KEY"],
)

PERSONA = """You play Mara, a 34-year-old ship's navigator in a slow-burn
space romance. All characters are adults.
Voice: dry, warm, short paragraphs, first person.
Story rules: keep continuity with the notes below; never speak for the user;
stay in character unless the user writes OOC: in brackets.
Hard limits: no sexual content involving anyone under 18, ever. If the user
steers there, refuse in character and change the scene."""

def reply(history, user_text):
    messages = [{"role": "system", "content": PERSONA}]
    messages += history[-24:]
    messages.append({"role": "user", "content": user_text})
    r = client.chat.completions.create(
        model="uncensored",
        messages=messages,
        temperature=0.9,
        top_p=0.95,
    )
    return r.choices[0].message.content

Zwei Details sind wichtiger, als sie aussehen. Gib in klaren Worten im Prompt an, dass alle Charaktere erwachsen sind. Und weise das Modell an, was am Rand zu tun ist, z. B. die Szene zu wechseln, damit die Geschichte weiterläuft, statt mit einer Fehlermeldung zu enden. Erhöhe temperature für lebhafteren Text und senke ihn, wenn der Charakter abschweift.

Teste die Persona vor dem Release

Lasse dieselben zwanzig Nutzer-Nachrichten nach jeder Bearbeitung durch den Prompt laufen, auch unangenehme: ein Nutzer, der den Bot fragt, die Figur abzulegen, einer, der die Szene mitten im Geschehen wechselt, einer, der gegen die Minderjährigen-Regel stößt. Speichere die Ausgaben und lies sie. Prompt-Änderungen, die einen Fall beheben, brechen oft einen anderen.

Speicher, der ins Fenster passt

Das Kontextfenster hat 100.000 Token, Prompt plus Completion, also ist Platz für eine lange Story. Länger ist nicht immer besser. Du zahlst für jeden Input-Token bei jedem Zug, und ein Modell mit einer riesigen Historie kann frühe Details trotzdem verlieren.

Ein praktisches Layout hat drei Schichten. Der System-Prompt hält die Persona. Ein kurzer Notizblock hält Fakten, die überleben müssen: Namen, Beziehungsstatus, im Story gemachte Versprechen. Die letzten 20 bis 30 Züge gehen wörtlich hinein. Ältere Züge werden in den Notizblock von einem günstigen Aufruf etwa alle 20 Züge zusammengefasst.

Der Code oben schneidet bereits history[-24:], was die letzten 24 Nachrichten hält. Füge den Notizblock als zweite System-Nachricht hinzu, wenn du einen hast. Die Kosten bleiben so niedrig: Ein typischer Zug sendet ein paar tausend Input-Token, was bei 0,15 $ pro 1 Mio. Input-Token ein Bruchteil eines Cents ist. Die Preisseite hat die Zahlen, und der Artikel zur Integration zeigt Anfrage-Formen.

Ein Produkt für erwachsene Inhalte braucht eine Altersprüfung vor dem ersten Chat-Aufruf, nicht danach. Die API überprüft das Alter nicht. Diese Pflicht liegt bei dir, und die richtige Methode hängt davon ab, wo du operierst und wo deine Nutzer leben.

  • Ein Kontrollkästchen mit der Aufschrift Ich bin über 18 ist ein Hinweis, keine Überprüfung. Einige Rechtsordnungen verlangen mehr.
  • Speichere das Ergebnis serverseitig gegen das Konto und prüfe es bei jeder Chat-Anfrage, nicht nur bei der Registrierung.
  • Mache klar, dass es nur für Erwachsene ist, auf der Landingpage und in den Nutzungsbedingungen, vor der Anmeldung.
  • Halte fiktive Figuren in jeder Persona, im Prompt und auf der Karte, die Nutzern gezeigt wird, erwachsen.

Frag einen Anwalt, der deinen Markt kennt, was das Minimum ist. Dieser Artikel kann es dir nicht sagen, und der API-Anbieter kann es nicht für dich entscheiden.

Moderationspflichten, die bei dir bleiben

Ein unzensiertes Modell ändert, was das Modell ablehnt. Es ändert nicht, wofür du verantwortlich bist. Plane diese ab Tag eins:

  • Strenge Blockade für Minderjährige. Sexuelle Inhalte mit Minderjährigen sind grundsätzlich verboten. Füge eine eigene Eingabeprüfung für offensichtliche Versuche hinzu und beende die Sitzung, wenn sie ausgelöst wird.
  • Meldefunktion. Gib deinen Nutzern die Möglichkeit, eine Konversation zu melden, und entscheide, wie du mit einer Meldung umgehst.
  • Kontomaßnahmen. Sei in der Lage, einen Benutzer schnell zu sperren.
  • Daten. Entscheide, wie lange du Transkripte aufbewahrst, und gib dies auf deiner Datenschutzseite an. Der API-Anbieter verwendet Prompts nicht zum Training, aber deine eigene Datenbank liegt in deiner Verantwortung.
  • Umfang. Halte das Produkt auf rechtmäßige Erwachsenennutzung und Fiktion beschränkt. Nenne dies in deinen Nutzungsbedingungen.

Fehlgeschlagene oder abgelehnte Anfragen werden nicht berechnet, was bedeutet, dass eine Anfrage, die durch deine eigene Prüfung blockiert wird, ebenfalls nichts kostet, da sie die API nie erreicht.

Pro-Nutzer-Limits und Kostenkontrolle

Ein offener Chat ohne Begrenzungen ist eine Einladung für einen Benutzer, dein Guthaben aufzubrauchen. Lege ein tägliches Token-Limit für jedes Konto fest und prüfe es vor der API-Anfrage. Die Antwort zeigt, wie viele Token jeder Durchlauf verbraucht hat, sodass das Limit nur einen Zähler kostet.

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.chatbotnsfw.com/v1",
    api_key=os.environ["NSFW_API_KEY"],
)

DAILY_CAP = 400_000   # tokens per user per day
used_today = {}       # user_id -> tokens, keep this in your database

def guarded_reply(user_id, messages):
    if used_today.get(user_id, 0) >= DAILY_CAP:
        return "You have reached today's limit. Come back tomorrow."
    r = client.chat.completions.create(model="uncensored", messages=messages)
    used = r.usage.prompt_tokens + r.usage.completion_tokens
    used_today[user_id] = used_today.get(user_id, 0) + used
    return r.choices[0].message.content

Ein Limit von 400.000 Token ist ein Wert, den du anpassen musst, keine Empfehlung. Bei einem Prompt von 6.000 Token pro Durchlauf sind etwa 65 Durchläufe pro Tag möglich. Finde heraus, was ein Benutzer für dich wert ist, setze das Limit entsprechend im Preis fest und achte auf den X-Balance-USD-Header in deiner eigenen Überwachung, damit ein Fehler nicht über Nacht das Guthaben aufbraucht.

Halte ein separates, kleines Guthaben für die Testumgebung vor. Testverkehr und echter Verkehr sollten niemals denselben Schlüssel verwenden, da eine Testschleife, die bei jedem Fehler erneut versucht, in einer Stunde mehr ausgeben kann als eine Woche echter Nutzer.

Streaming und Umgang mit 429

Chat fühlt sich ohne Streaming langsam an. Setze stream: true und leite Chunks an den Browser weiter. Das Streaming endet auch mit einem Nutzungsblock, den du für die Kostenverfolgung protokollieren kannst.

Überschreitet man das Limit, antwortet die API mit HTTP 429. Der Fehlercode ist rate_limited für Anfragen pro Minute und concurrency für zu viele Anfragen gleichzeitig. Bei temporärer Überlastung wird ebenfalls 429 mit Retry-After: 5 zurückgegeben. Halte dich an diesen Header.

import os, time
from openai import OpenAI, RateLimitError

client = OpenAI(
    base_url="https://api.chatbotnsfw.com/v1",
    api_key=os.environ["NSFW_API_KEY"],
    max_retries=0,
)

def stream_reply(messages):
    for attempt in range(4):
        try:
            stream = client.chat.completions.create(
                model="uncensored",
                messages=messages,
                stream=True,
            )
            for chunk in stream:
                if chunk.choices and chunk.choices[0].delta.content:
                    yield chunk.choices[0].delta.content
            return
        except RateLimitError:
            time.sleep(5)
    yield "The service is busy. Please try again in a moment."

Füge eine pro-Nutzer-Sperre hinzu, sodass ein Konto jeweils nur einen Stream hält. Dann unterstützen 8 gleichzeitige Anfragen etwa 8 gleichzeitig chattende Nutzer, und eine Warteschlange puffert den Rest ab.

Um zu starten, hole dir einen API-Schlüssel. Neue Nutzer erhalten mit einem Klick 0,50 $ Testguthaben. Der Testschlüssel ist auf 2 parallele Anfragen und 60 Anfragen pro Minute begrenzt, was zum Testen des Ablaufs genügt.

Häufig gestellte Fragen

Gibt es eine offizielle NSFW-Chatbot-API von den großen KI-Anbietern?

Dieser Dienst ist nicht die offizielle API eines Modellherstellers. Er verwendet ein Open-Weight-Modell, das von einem unabhängigen Anbieter betrieben und darauf abgestimmt ist, bei rechtmäßiger Erwachsenennutzung ohne Inhaltsablehnungen zu antworten.

Überprüft die API, ob meine Nutzer erwachsen sind?

Nein. Altersprüfung, Einwilligung und deine Nutzungsbedingungen sind deine Aufgabe als Entwickler. Die API erzwingt jedoch eine harte Grenze gegen sexuelle Inhalte mit Minderjährigen.

Kann es Bilder für meinen Chatbot generieren?

Nein. Sie ist nur für Text. Es gibt keine Bild-, Audio- oder Videoerzeugung, keine Embeddings und kein Fine-Tuning.

Wie halte ich einen Charakter über einen langen Chat hinweg konsistent?

Behalte eine Persona im System-Prompt, einen kurzen Notizblock mit wichtigen Fakten und die letzten 20 bis 30 Durchläufe wörtlich. Fasse ältere Durchläufe in den Notizen zusammen.

Wie zahle ich?

Lade von $20 bis $500 mit Krypto auf (USDT auf TRC20 oder USDC auf Base). Guthaben verfällt nie und es gibt kein Abonnement.

Hole dir jetzt deinen API-Schlüssel

Melde dich an, hole dir deinen Schlüssel und aktualisiere deine Basis-URL. Das war's.