GetAiApiKey/Checkliste für die KI-API-Produktion
LLM-API-Schlüssel für einen Discord-Bot: Setup-Anleitung
Ein Discord-Bot benötigt drei Dinge von einem LLM-Anbieter: einen OpenAI-kompatiblen Endpunkt, einen Schlüssel und Limits, die zu einem ausgelasteten Server passen. Hier ist ein funktionierender Bot, die Einstellungen dahinter und die Kosten pro Nachricht.
Aktualisiert

Wichtige Punkte
- Verwende das openai-Paket mit der Basis-URL https://api.getaiapikey.com/v1 und dem Modell uncensored.
- Halte einen kurzen rollierenden Verlauf pro Kanal; das Kontextfenster umfasst 100.000 Token, aber die Kosten steigen mit jeder erneut gesendeten Runde.
- Begrenze laufende Aufrufe auf etwa 6, da ein voller Schlüssel 8 parallele Anfragen und 300 pro Minute erlaubt.
- Eine Chat-Antwort mit 1.500 Input- und 200 Output-Token kostet $0,000325.
Was ein LLM-API-Schlüssel für einen Discord-Bot tut
Wenn du einen LLM-API-Schlüssel für einen Discord-Bot möchtest, sind die Komponenten einfach. Discord übermittelt eine Nachricht über sein Bot-Gateway an deinen Code. Dein Code sendet das aktuelle Gespräch an einen LLM-Endpunkt, empfängt Text und postet ihn zurück in den Kanal. Der API-Schlüssel beweist dem LLM-Anbieter, dass die Anfrage von dir stammt, und belastet dein Guthaben.
Dieser Dienst ist OpenAI-kompatibel, daher nutzt der Bot das Standard-Paket openai für Python. Du änderst zwei Einstellungen, die Basis-URL und die Modell-ID uncensored, und alles Weitere sind normale Chat-Vervollständigungen. Neue Nutzer können es zuerst testen: Nach der Anmeldung bietet die API-Schlüssel-Seite $0,50 an Testguthaben, gültig für 7 Tage, keine Karte erforderlich.
Eine ehrliche Grenze vorab. Dies ist ein Textmodell. Es kann keine Bilder, Stimme oder Video generieren und liest keine Anhänge eigenständig. Dein Bot kann Text aus einer Nachricht weiterleiten, aber alles darüber hinaus liegt außerhalb dessen, was diese API leistet.
Bevor du Code schreibst
- Erhalte einen API-Schlüssel. Melde dich mit Google oder E-Mail an, erstelle einen Schlüssel auf der Schlüsselseite und speichere ihn in einer Umgebungsvariable.
- Erstelle eine Discord-Anwendung. Füge im Discord-Entwicklerportal einen Bot hinzu, kopiere sein Token und aktiviere die Intention „Nachrichteninhalt“, damit der Bot Nachrichtentext lesen kann. Lade ihn mit den Berechtigungen zum Lesen und Senden von Nachrichten in deinen Server ein.
- Installiere die Bibliotheken. Du benötigst
discord.pyundopenai.
python3 -m venv .venv
source .venv/bin/activate
pip install discord.py openai
export API_KEY="your-llm-key"
export DISCORD_TOKEN="your-discord-bot-token"
Committe keines der beiden Secrets in ein Repository. Wenn ein Token geleakt wird, setze es im jeweiligen Dashboard zurück. Für die LLM-Seite zeigen die Quickstart-Dokumente denselben Aufruf in curl und Node, falls du eine andere Sprache bevorzugst.
Ein funktionierender Bot in etwa 50 Zeilen
Dieser Bot antwortet, wenn jemand ihn erwähnt. Er behält die letzten 20 Nachrichten pro Kanal bei, ruft das Modell mit einem Persona-Prompt auf und teilt lange Antworten auf, um das Discord-Nachrichtenlimit von 2.000 Zeichen einzuhalten.
import os
import asyncio
from collections import defaultdict, deque
import discord
from openai import AsyncOpenAI, RateLimitError
ai = AsyncOpenAI(
base_url="https://api.getaiapikey.com/v1",
api_key=os.environ["API_KEY"],
)
SYSTEM = (
"You are Mara, the resident storyteller of a community server for adult "
"fiction writers. Keep replies under 150 words unless asked for more. "
"Stay in character, write in plain prose, and ask one question at the end."
)
history = defaultdict(lambda: deque(maxlen=20))
gate = asyncio.Semaphore(6)
intents = discord.Intents.default()
intents.message_content = True
bot = discord.Client(intents=intents)
@bot.event
async def on_message(message):
if message.author.bot or bot.user not in message.mentions:
return
text = message.clean_content.replace("@" + bot.user.display_name, "").strip()
if not text:
return
log = history[message.channel.id]
log.append({"role": "user", "content": message.author.display_name + ": " + text})
async with gate:
async with message.channel.typing():
try:
resp = await ai.chat.completions.create(
model="uncensored",
messages=[{"role": "system", "content": SYSTEM}, *log],
temperature=0.8,
max_tokens=500,
)
except RateLimitError:
await message.reply("I am busy right now. Try again in a few seconds.")
return
reply = resp.choices[0].message.content or ""
log.append({"role": "assistant", "content": reply})
for i in range(0, len(reply), 1900):
await message.reply(reply[i:i + 1900])
bot.run(os.environ["DISCORD_TOKEN"])
Führe ihn mit python bot.py aus, erwähne den Bot in einem Kanal und du solltest eine Antwort sehen. Die Tippanzeige erscheint, während die Anfrage läuft, was die Wartezeit kürzer erscheinen lässt.
Schreibe einen System-Prompt, der eine Persona hält
Der System-Prompt erledigt die meiste Arbeit in einem Chat-Bot. Ein guter ist kurz und spezifisch: Wer der Bot ist, wie lang seine Antworten sind und was er tun soll, wenn das Gespräch abschweift. Vergleiche zwei Versionen.
Ein schwacher Prompt sagt „sei ein hilfreicher Assistent“. Ein stärkerer gibt eine Rolle, eine Längenbegrenzung und eine Gewohnheit: „Du bist Mara, eine Geschichtenerzählerin. Antworte in unter 150 Wörtern. Beende mit einer Frage, die die Szene vorantreibt.“ Die zweite Version gibt dem Modell etwas, an das es sich über ein Dutzend Runden klammern kann, und die Längenbegrenzung hält deine Kosten ebenfalls vorhersehbar.
Einige praktische Punkte aus dem Betrieb von Chat-Bots:
- Füge jeder Benutzer-Runde den Namen des Sprechers voran, wie es der Code tut. In einem gemeinsamen Kanal kann das Modell die Personen sonst nicht unterscheiden.
- Schreibe Regeln für deinen Server in den System-Prompt, z. B. zu vermeidende Themen oder einen Hausstil. Das Modell ist darauf abgestimmt, ohne Inhaltsfilter für die rechtmäßige Nutzung durch Erwachsene zu antworten, daher müssen Grenzen, die du möchtest, aus deinem Prompt und deiner Moderation stammen, nicht vom Modell.
- Halte die Persona stabil. Wenn du sie oft änderst, werden alte Runden im Verlauf den neuen Anweisungen widersprechen.
Kontext, Verlauf und das 100.000-Token-Fenster
Das Kontextfenster umfasst 100.000 Token, Prompt plus Vervollständigung. Ein rollierender Verlauf von 20 Nachrichten ist davon weit entfernt, und das ist beabsichtigt. Die API ist zustandslos: Jede Anfrage muss das gesamte Gespräch enthalten, das das Modell sehen soll, also wird jede zusätzliche Runde, die du behältst, bei jeder folgenden Anfrage erneut bezahlt.
Wähle eine Verlaufslänge danach, wie viel Speicher der Bot benötigt. Ein einfacher Chat-Bot funktioniert mit 10 bis 20 Nachrichten. Ein langes Rollenspiel kann mehr benötigen, und hier ist es üblich, alte Runden in eine kurze Zusammenfassung am Anfang des Prompts zu verdichten und die Originale zu verwerfen. Nutze einen zweiten Modellaufruf, um die Zusammenfassung zu schreiben, wenn der Verlauf eine von dir gewählte Größe überschreitet.
Verlauf pro Kanal, wie im Code, hält Unterhaltungen getrennt. Wenn du auch benutzerspezifischen Speicher über Kanäle hinweg möchtest, speichere Notizen in einer Datenbank und füge sie dem System-Prompt für diesen Benutzer hinzu. Das ist Aufgabe deiner Anwendung, da die API selbst nichts zwischen Aufrufen speichert. Zum Datenschutz: Die an diese API gesendeten Prompts werden nicht zum Training verwendet; siehe die Datenschutzseite für Details.
Ratenlimits auf einem ausgelasteten Server
Ein voller Schlüssel erlaubt 8 parallele Anfragen und 300 Anfragen pro Minute. Ein Testschlüssel erlaubt 2 und 60. Ein ruhiger Server bemerkt das nie, aber ein beliebter Kanal kann einen Burst von Erwähnungen gleichzeitig senden.
Der asyncio.Semaphore(6) im Code begrenzt den Bot auf 6 laufende Aufrufe, sodass er die Obergrenze von 8 nie erreicht und Raum für ein zweites Skript lässt, das denselben Schlüssel nutzt. Setze ihn bei einem Testschlüssel auf 2. Wenn du ein Limit überschreitest, gibt die API HTTP 429 zurück: rate_limited für Anfragen pro Minute, concurrency für zu viele gleichzeitig. Temporäre Überlastung gibt ebenfalls 429 mit Retry-After: 5. Der OpenAI-Client wiederholt einige davon standardmäßig, und der Code oben antwortet mit einer höflichen Nachricht, wenn die Wiederholungen aufgebraucht sind.
Streaming verdient einen Hinweis. Wenn du die Discord-Nachricht bearbeitest, während Token eintreffen, hält die Anfrage ihren Parallelitäts-Slot bis zum Stream-Ende, und Discord begrenzt, wie schnell du Nachrichten bearbeiten darfst. Für die meisten Bots ist eine einzelne Antwort nach der vollständigen Antwort einfacher und zuverlässiger.
Was ein Discord-Bot zum Betreiben kostet
Die Preise liegen bei $0,15 pro 1 Mio. Input-Token und $0,50 pro 1 Mio. Output-Token, vom Prepaid-Guthaben. Rechne zuerst eine Antwort aus. Nehmen wir an, der System-Prompt plus 20 Nachrichten Verlauf ergeben 1.500 Input-Token und die Antwort sind 200 Token.
- Input: 1.500 / 1.000.000 x $0,15 = $0,000225
- Output: 200 / 1.000.000 x $0,50 = $0,0001
- Gesamt: $0,000325 pro Antwort, also kosten 1.000 Antworten $0,325
Nun ein schwererer Fall mit 3.000 Input- und 300 Output-Token: $0,00045 + $0,00015 = $0,0006 pro Antwort, oder $0,60 pro 1.000 Antworten. Ein Server, der an dieser Größe 500 Antworten pro Tag erhält, gibt etwa $0,30 pro Tag aus, rund $9 über 30 Tage.
Die kleinste Aufladung beträgt $20 (jeder ganze Betrag bis zu $500), mit einem Bonus von 5 % ab $50, 10 % ab $100 und 15 % ab $200. Guthaben verfällt nie, und fehlgeschlagene oder abgelehnte Anfragen werden nicht berechnet. Bezahle mit Karte (Visa, Mastercard, Apple Pay, Google Pay) oder Krypto (USDT auf TRC20, USDC auf Base). Mehr auf der Preisseite.
Regeln und Sicherheit für Erwachsenengemeinschaften
Das Modell dient der rechtmäßigen Nutzung durch Erwachsene, und die harte Grenze ist, dass sexuelle Inhalte mit Minderjährigen niemals erlaubt sind. Wenn dein Server Fiktion oder Rollenspiel für Erwachsene hostet, halte es bei Erwachsenen: Beschränke den Zugang zu Kanälen über die eigenen Discord-Einstellungen, gib deine Regeln im Kanal-Thema an und moderiere. Lies die aktuellen Entwickler- und Gemeinschaftsrichtlinien von Discord, bevor du startest, da sie für deinen Bot gelten, unabhängig davon, was das Modell schreibt.
Logge Anfrage-IDs. Jede API-Antwort enthält X-Request-Id, was dir hilft, wenn du den Support zu einer bestimmten Anfrage kontaktierst. Der Header X-Balance-USD ermöglicht es dem Bot, dich in einem Admin-Kanal zu warnen, wenn das Guthaben niedrig wird, damit er nicht ohne Vorwarnung schweigt.
Weitere Anleitungen
Fragen und Antworten
Welche Bibliothek verwende ich, um die API von einem Discord-Bot aus aufzurufen?
Verwende das openai Python-Paket mit AsyncOpenAI, setze base_url auf https://api.getaiapikey.com/v1, und verwende das Modell uncensored. Jeder OpenAI-kompatible Client funktioniert auf die gleiche Weise.
Kann ich den Bot testen, ohne zu bezahlen?
Ja. Neue Nutzer können mit einem Klick auf der API-Schlüssel-Seite $0,50 an Testguthaben beanspruchen. Es gilt 7 Tage lang, benötigt keine Karte und der Testschlüssel erlaubt 2 parallele Anfragen und 60 pro Minute.
Wie viele Nachrichten kann der Bot sich merken?
Das Kontextfenster umfasst 100.000 Token, aber du entscheidest, wie viel Verlauf du erneut sendest. Die meisten Bots speichern 10 bis 20 Nachrichten pro Kanal, um die Kosten zu steuern.
Kann der Bot Bilder lesen oder mit Stimme antworten?
Nein. Diese API verarbeitet nur Text, ohne Bild-, Audio- oder Videogenerierung und ohne Embeddings.
Was passiert, wenn viele Personen den Bot gleichzeitig erwähnen?
Zusätzliche Anfragen über 8 parallele Anfragen oder 300 pro Minute erhalten HTTP 429. Verwende eine Semaphore oder eine Warteschlange im Bot, damit er unter diesen Grenzen bleibt.
Dein Schlüssel ist nur ein Formular entfernt
Erstelle ein Konto, kopiere den Schlüssel, ändere die Basis-URL. Das ist die gesamte Einrichtung.