Rabatt auf Premium-Pläne, wenn du dich registrierstRabatt sichern

Blog/developers·22. Aug. 2026·4 Min.·vom eroq-Team

Eine KI-Charakter-Chat-App mit der eroq-API bauen

Das komplette Muster für eine Charakter-Chat-App: Persona-Prompts, Verlaufsfenster, Streaming-UI, Credit-Budget – mit lauffähigem Code für die eroq-API.


Das ist das Tutorial, das wir uns gewünscht hätten, als wir unser erstes Charakter-Produkt ausgeliefert haben. Ein Abend Arbeit, ein funktionierendes Muster: Persona rein, gestreamte Antworten raus, Kosten, die du vorhersagen kannst.

Die Architektur in einem Absatz

Dein Backend verwaltet den API-Schlüssel, die Charakterbögen und den Gesprächsspeicher. Der Client spricht nur mit deinem Backend. In jedem Zug setzt du [system] + [windowed history] + [new user message] zusammen, schickst es an /v1/chat/completions und streamst die Antwort zurück. Die API ist zustandslos – dein Produkt verwaltet also das Gedächtnis, und das ist ein Feature.

1. Der Persona-Prompt

Halte Verhalten und Identität getrennt. Die Identität ist kurz, das Verhalten streng:

function personaPrompt(character) {
  return [
    `You are ${character.name}. ${character.oneLineIdentity}`,
    character.voiceNotes,                    // "dry humor, short sentences, hates small talk"
    'Stay fully in character. Never mention being an AI or add out-of-character notes.',
    'Actions in *asterisks*. Advance the scene, then hand it back.',
  ].join(' ')
}

Widersteh dem Lore-Dump. Eine Hintergrundgeschichte mit 2.000 Wörtern im System-Prompt bringt dir Drift, keine Tiefe – füge konkrete Fakten erst ein, wenn die Szene sie berührt.

2. Der Zug, gestreamt

export async function characterReply(character, history, userMessage, onDelta) {
  const res = await fetch('https://eroq.ai/v1/chat/completions', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.EROQ_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      model: 'eroq-rp-mini',                 // 1 Credit; rp-plus where it matters
      stream: true,
      messages: [
        { role: 'system', content: personaPrompt(character) },
        ...history.slice(-30),               // the window — see below
        { role: 'user', content: userMessage },
      ],
    }),
  })

  const reader = res.body.getReader()
  const decoder = new TextDecoder()
  let buffer = ''
  let full = ''
  while (true) {
    const { done, value } = await reader.read()
    if (done) break
    buffer += decoder.decode(value, { stream: true })
    const events = buffer.split('\n\n')
    buffer = events.pop() ?? ''
    for (const event of events) {
      const data = event.replace(/^data: /, '')
      if (data === '[DONE]') continue
      const chunk = JSON.parse(data)
      const delta = chunk.choices?.[0]?.delta?.content
      if (delta) { full += delta; onDelta(delta) }
    }
  }
  return full
}

Leite onDelta über dein eigenes SSE oder WebSocket an deine UI weiter. Erste Tokens in unter einer Sekunde auf dem Bildschirm – das lässt einen Charakter präsent wirken.

3. Das Verlaufsfenster

Schick die letzten 20–40 Züge, nie alles. Älterer Kontext bringt schneller Drift als Gedächtnis. Bei langen Beziehungen lässt du alle N Nachrichten einen günstigen Zusammenfassungsdurchlauf laufen und stellst die Zusammenfassung als systemnahe Notiz voran – ein einziger eroq-rp-mini-Aufruf (1 Credit) kauft dir eine dauerhafte Erinnerungszeile.

Filter das Fenster vor dem Senden: Jeder Zug, in dem das Modell aus der Rolle gefallen ist, gehört nicht in den Kontext, den du zurückschickst – sonst bekommst du mehr davon.

4. Die Kosten

Der ganze Sinn fester Preise ist, dass diese Tabelle existiert, bevor du startest:

Nutzerverhalten Aufrufe/Tag Modell Credits/Tag
Gelegentlich (20 Nachr.) 20 rp-mini 20
Engagiert (80 Nachr.) 80 rp-mini 80
Power-User + Qualitätsszenen 150 Mix ~250

Zu Paketpreisen (~$0.01/Credit oder weniger) kostet ein engagierter Nutzer etwa $0.80/Tag an Modellkosten. Kalkulier dein Abo entsprechend und biete Bilder (10 Credits) und Sprachzeilen als Premium-Momente an statt als Standard.

5. Die zwei Fehler, die du gut behandeln solltest

  • 402 insufficient_credits – dein Guthaben, nicht dein Bug. Alarmier dich selbst, lad auf und reagier elegant (stell die Nachricht in die Warteschlange, sag dem Nutzer, der Charakter sei „kurz weg“).
  • 502 / Stream-Fehler-Events – werden automatisch erstattet. Einmal mit Backoff wiederholen; der Nutzer sieht eine Tipp-Anzeige, keine Entschuldigung.

Alles andere im Fehler-Leitfaden ist Standard.

Häufige Fragen

Wie bleibt ein Charakter über ein langes Gespräch hinweg in seiner Rolle?

Drei Gewohnheiten erledigen den Großteil: ein System-Prompt, der Verhalten statt Biografie festlegt, ein Fenster der letzten 20–40 Züge statt des ganzen Verlaufs und eine fortlaufende Zusammenfassung, die etwa alle ~30 Züge aufgefrischt wird (ein eroq-rp-mini-Aufruf, 1 Credit). Wirf jeden Zug raus, in dem das Modell aus der Rolle gefallen ist, bevor du den Verlauf zurückschickst. Zeigt sich trotzdem Drift, verlege das Gespräch auf RP+, das darauf abgestimmt ist, eine Persona auch in der Tiefe zu halten.

Was kostet eine Charakter-Chat-App pro Nutzer?

Eine Completion kostet 1 Credit mit RP mini und 3 mit RP+, egal wie lang die Antwort ist. Ein engagierter Nutzer mit 80 Nachrichten am Tag verbraucht etwa 80 Credits täglich – ungefähr $0.80 zu Paketpreisen, da $10 1.000 Credits kauft. Bilder kosten je 10 Credits und angehängte Bilder 2 zusätzlich – die Premium-Momente sind also die Zeile, die du im Blick behalten musst, nicht der Chat selbst.

Merkt sich die Chat-API von eroq frühere Nachrichten?

Nein, und das ist Absicht. /v1/chat/completions ist zustandslos: Du schickst bei jedem Aufruf den Verlauf mit, den das Modell sehen soll – du verwaltest also das Gedächtnis und kannst es einsehen, kuratieren und debuggen. Charakterbögen und Weltzustand können im Top-Level-Feld context mitreisen, statt dein messages-Array zu überladen.

Können Nutzer einem Charakter Bilder schicken?

Ja. Der content eines Nutzerzugs kann ein Array aus Text- und image_url-Teilen sein – eine https-URL oder eine Data-URI, bis zu 2 Bilder pro Anfrage –, zu +2 Credits pro Bild zusätzlich zur Completion. Die Vision-Anleitung behandelt die UX-Muster und die Moderationspflichten, die bei dir bleiben.

Ab damit in Produktion

Das ist wirklich das ganze Muster: ein Verhaltens-Prompt, ein Fenster, ein Stream, ein Budget. Hol dir einen Schlüssel, füge Abschnitt 2 ein, und dein erster Charakter spricht innerhalb der fünf Minuten des Quickstarts – die 50 Gratis-Credits reichen für einen ganzen Testabend.

Tagschat apicharacterstutorial

Mach das mit den Modellen hinter diesem Artikel – starte mit 50 Gratis-Credits oder sieh dir alle Engines und ihre Preise an.