NL ▾
API-sleutel aanvragen

GetAiApiKeyAI-API-controlelijst voor productie

LLM API-sleutel voor een Discord-bot: installatiegids

Een Discord-bot heeft drie dingen nodig van een LLM-aanbieder: een OpenAI-compatibel endpoint, een sleutel en limieten die passen bij een drukke server. Hier is een werkende bot, de instellingen erachter en de kosten per bericht.

Bijgewerkt

Isometrische illustratie van chatbellen die verbonden zijn met een serverrek, die een Discord-bot voorstelt die een LLM API aanroept

Belangrijkste punten

  1. Gebruik het openai-pakket met base URL https://api.getaiapikey.com/v1 en model uncensored.
  2. Bewaar een korte lopende geschiedenis per kanaal; het venster is 100.000 tokens maar de kosten stijgen met elk opnieuw verstuurd bericht.
  3. Beperk lopende aanroepen tot ongeveer 6, omdat een volledige sleutel 8 gelijktijdige verzoeken en 300 per minuut toestaat.
  4. Een chatantwoord van 1.500 input- en 200 output-tokens kost $0,000325.

Wat een LLM API-sleutel doet voor een Discord-bot

Als je een llm api key discord bot wilt, zijn de onderdelen eenvoudig. Discord levert een bericht aan je code via de bot gateway. Jouw code stuurt de recente conversatie naar een LLM endpoint, ontvangt tekst en plaatst deze terug in het kanaal. De API-sleutel bewijst aan de LLM-aanbieder dat het verzoek van jou is en rekent het af op je saldo.

Deze dienst is OpenAI-compatibel, dus de bot gebruikt het standaard openai Python-pakket. Je wijzigt twee instellingen, de base URL en de model ID uncensored, en al het andere zijn normale chat-completions. Nieuwe gebruikers kunnen het eerst uitproberen: na het aanmelden biedt de API-sleutel-pagina $0,50 aan gratis proeftegoed, geldig voor 7 dagen, geen creditcard nodig.

Eerlijk gezegd één grens vooraf. Dit is een tekstmodel. Het kan geen afbeeldingen, stem of video genereren en het leest geen bijlagen. Je bot kan tekst van een bericht doorsturen, maar alles daarbuiten valt buiten wat deze API doet.

Voordat je code schrijft

  1. Haal een API-sleutel op. Meld je aan met Google of e-mail, maak een sleutel aan op de sleutelpagina en bewaar deze in een omgevingsvariabele.
  2. Maak een Discord-toepassing aan. Voeg in het developer portal van Discord een bot toe, kopieer het token en schakel de Message Content intent in zodat de bot berichttekst kan lezen. Nodig het uit op je server met de rechten om berichten te lezen en te versturen.
  3. Installeer de bibliotheken. Je hebt discord.py en openai nodig.
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"

Commit geen van beide geheimen in je code. Als een token lekt, reset het dan in het respectievelijke dashboard. Voor de LLM-kant tonen de quickstart-documentatie dezelfde aanroep in curl en Node als je de voorkeur geeft aan een andere taal.

Een werkende bot in ongeveer 50 regels

Deze bot antwoordt wanneer iemand het vermeldt. Het bewaart de laatste 20 berichten per kanaal, roept het model aan met een persona-prompt en splitst lange antwoorden om binnen de 2.000 tekens van Discord te blijven.

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"])

Voer het uit met python bot.py, vermeld de bot in een kanaal en je zou een antwoord moeten zien. De typ-indicator toont terwijl het verzoek bezig is, wat de wachttijd korter laat lijken.

Schrijf een system prompt die een persona vasthoudt

De system prompt doet het meeste werk in een chatbot. Een goede is kort en specifiek: wie de bot is, hoe lang zijn antwoorden zijn en wat hij moet doen als de conversatie afdwaalt. Vergelijk twee versies.

Een zwakke prompt zegt "wees een behulpzame assistent". Een sterkere geeft een rol, een lengtelimiet en een gewoonte: "Je bent Mara, een verhalenverteller. Antwoord in minder dan 150 woorden. Eindig met één vraag die de scène vooruit helpt." De tweede geeft het model iets om aan vast te houden over een dozijn beurten, en de lengtelimiet houdt ook je kosten voorspelbaar.

Enkele praktische punten uit het draaien van chatbots:

  • Voorafgaand aan elke beurt van de gebruiker plaats je de naam van de spreker, zoals de code dat doet. In een gedeeld kanaal kan het model anders geen onderscheid maken tussen mensen.
  • Zet regels voor je server in de system prompt, zoals te vermijden onderwerpen of een huisstijl. Het model is afgestemd om zonder inhoudelijke weigeringen te antwoorden voor legaal gebruik door volwassenen, dus limieten die je wilt moeten komen van je prompt en je moderatie, niet van het model.
  • Houd de persona stabiel. Als je deze vaak wijzigt, zullen oude beurten in de geschiedenis de nieuwe instructies tegenspreken.

Context, geschiedenis en het 100.000-token venster

Het contextvenster is 100.000 tokens, prompt plus completion. Een lopende geschiedenis van 20 berichten zit daar ver onder, en dat is opzettelijk. De API is stateless: elk verzoek moet de volledige conversatie bevatten die het model moet zien, dus elk extra bericht dat je bewaart, wordt betaald bij elke volgende call.

Kies een geschiedenislengte op basis van het geheugen dat de bot nodig heeft. Een casual chatbot werkt met 10 tot 20 berichten. Een langdurige roleplay heeft misschien meer nodig, en daarvoor is een veelgebruikte aanpak om oude beurten samen te vatten tot een korte notitie bovenaan de prompt, en de originele te verwijderen. Gebruik een tweede model call om de samenvatting te schrijven wanneer de geschiedenis een door jou gekozen grootte passeert.

Per-kanaal geschiedenis, zoals in de code, houdt conversaties gescheiden. Als je ook per-gebruiker geheugen wilt over kanalen heen, sla dan notities op in een database en voeg ze toe aan de system prompt voor die gebruiker. Dat is de taak van je applicatie, omdat de API zelf niets bewaart tussen calls. Let voor privacy op dat prompts die naar deze API worden gestuurd niet worden gebruikt voor training; zie de privacy pagina voor de details.

Rate limits op een drukke server

Een volledige sleutel staat 8 gelijktijdige verzoeken en 300 verzoeken per minuut toe. Een proefsleutel staat 2 en 60 toe. Een rustige server merkt het nooit, maar een populair kanaal kan een burst van vermeldingen tegelijk sturen.

De asyncio.Semaphore(6) in de code beperkt de bot tot 6 lopende aanroepen, zodat het de bovengrens van 8 niet bereikt en ruimte laat voor een tweede script dat dezelfde sleutel gebruikt. Stel dit op een proefsleutel in op 2. Als je een limiet overschrijdt, retourneert de API HTTP 429: rate_limited voor verzoeken per minuut, concurrency voor te veel tegelijk. Tijdelijke overbelasting geeft ook 429 met Retry-After: 5. De OpenAI client probeert sommige hiervan standaard opnieuw, en de code hierboven antwoordt met een beleefd bericht als de retries opraken.

Streaming verdient een opmerking. Als je het Discord bericht bewerkt terwijl tokens aankomen, houdt het verzoek zijn concurrency slot vast tot de stream eindigt, en Discord beperkt hoe snel je berichten mag bewerken. Voor de meeste bots is een enkel antwoord na het volledige antwoord eenvoudiger en betrouwbaarder.

Wat een Discord-bot kost om te draaien

Prijzen zijn $0,15 per 1M input tokens en $0,50 per 1M output tokens, van prepaid credit. Bereken eerst één antwoord. Stel dat de system prompt plus 20 berichten geschiedenis samen 1.500 input tokens zijn, en het antwoord 200 tokens.

  • Input: 1.500 / 1.000.000 x $0,15 = $0,000225
  • Output: 200 / 1.000.000 x $0,50 = $0,0001
  • Totaal: $0,000325 per antwoord, dus 1.000 antwoorden kosten $0,325

Nu een zwaardere case met 3.000 input en 300 output tokens: $0,00045 + $0,00015 = $0,0006 per antwoord, of $0,60 per 1.000 antwoorden. Een server die 500 antwoorden per dag op die grootte krijgt, geeft ongeveer $0,30 per dag uit, ongeveer $9 over 30 dagen.

Het minimale bedrag om op te waarderen is $20 (elk heel bedrag tot $500), met een bonus van 5% vanaf $50, 10% vanaf $100 en 15% vanaf $200. Tegoed vervalt nooit, en mislukte of geweigerde verzoeken worden niet in rekening gebracht. Betaal met een kaart (Visa, Mastercard, Apple Pay, Google Pay) of crypto (USDT op TRC20, USDC op Base). Meer informatie op de prijzenpagina.

Regels en veiligheid voor volwassen gemeenschappen

Het model is bedoeld voor legaal gebruik door volwassenen, en de harde limiet is dat seksuele inhoud met minderjarigen nooit is toegestaan. Als je server fictie of roleplay voor volwassenen host, houd het dan bij volwassenen: sluit kanalen af in Discord's eigen instellingen, stel je regels vast in het kanaalonderwerp en modereer. Lees de huidige developer- en communitybeleid van Discord voordat je lanceert, omdat deze van toepassing zijn op je bot ongeacht wat het model zal schrijven.

Log request IDs. Elk API-antwoord bevat X-Request-Id, wat helpt wanneer je support contacteert over een specifieke call. De X-Balance-USD header laat de bot je waarschuwen in een admin kanaal wanneer credit laag is, zodat het nooit stilvalt zonder melding.

Vragen en antwoorden

Welke bibliotheek gebruik ik om de API aan te roepen vanuit een Discord-bot?

Gebruik het openai Python-pakket met AsyncOpenAI, stel base_url in op https://api.getaiapikey.com/v1, en gebruik het model uncensored. Elke OpenAI-compatibele client werkt op dezelfde manier.

Kan ik de bot testen zonder te betalen?

Ja. Nieuwe gebruikers kunnen met één klik op de API-sleutelpagina $0,50 aan proeftegoed claimen. Dit tegoed is 7 dagen geldig, vereist geen creditcard en de proefsleutel staat 2 gelijktijdige verzoeken en 60 per minuut toe.

Hoeveel berichten kan de bot onthouden?

Het contextvenster is 100.000 tokens, maar jij bepaalt hoeveel geschiedenis je opnieuw moet versturen. De meeste bots bewaren 10 tot 20 berichten per kanaal om de kosten te beheersen.

Kan de bot afbeeldingen lezen of met stem antwoorden?

Nee. Deze API verwerkt alleen tekst, zonder afbeeldings-, audio- of videogeneratie en zonder embeddings.

Wat gebeurt er als veel mensen de bot tegelijk noemen?

Extra verzoeken boven de 8 gelijktijdige of 300 per minuut krijgen HTTP 429. Gebruik een semaphore of wachtrij in de bot zodat deze onder die limieten blijft.

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.