PL ▾
Pobierz klucz API

GetAiApiKeyChecklista API AI do produkcji

Klucz API LLM do bota Discord: Przewodnik

Bot Discord potrzebuje trzech rzeczy od dostawcy LLM: endpointu kompatybilnego z OpenAI, klucza i limitów pasujących do ruchliwego serwera. Oto działający bot, jego ustawienia i koszt wiadomości.

Zaktualizowano

Izometryczna ilustracja dymków czatu połączonych z szafą serwerową, przedstawiająca bota Discord wywołującego API LLM

Kluczowe punkty

  1. Użyj pakietu openai z base URL https://api.getaiapikey.com/v1 i modelem uncensored.
  2. Przechowuj krótką, kroczącą historię na kanał; okno kontekstu ma 100 000 tokenów, ale koszt rośnie z każdą ponownie wysłaną turą.
  3. Ogranicz jednoczesne wywołania do około 6, ponieważ pełny klucz pozwala na 8 równoległych zapytań i 300 na minutę.
  4. Odpowiedź czatu z 1500 tokenami wejściowymi i 200 wyjściowymi kosztuje $0.000325.

Co robi klucz API LLM dla bota Discord

Jeśli chcesz klucz API LLM do bota Discord, mechanizmy są proste. Discord przekazuje wiadomość do Twojego kodu przez bramkę bota. Twój kod wysyła ostatnią rozmowę do endpointu LLM, otrzymuje tekst i publikuje go z powrotem na kanale. Klucz API potwierdza dostawcy LLM, że zapytanie jest Twoje i obciąża Twoje saldo.

Usługa jest kompatybilna z OpenAI, więc bot używa standardowego pakietu Pythona openai. Zmieniasz dwa ustawienia: Base URL i ID modelu uncensored, a reszta to zwykłe uzupełniania czatu. Nowi użytkownicy mogą wypróbować usługę: po rejestracji strona klucz API oferuje $0.50 kredytu próbnego, ważnego przez 7 dni, bez potrzeby karty.

Jedna szczera granica na wstępie. To model tekstowy. Nie generuje obrazów, głosu ani wideo i nie czyta załączników samodzielnie. Bot może przekazać tekst z wiadomości, ale wszystko poza tekstem wykracza poza możliwości tego API.

Przed napisaniem kodu

  1. Pozyskaj klucz API. Zarejestruj się za pomocą Google lub e-maila, utwórz klucz na stronie kluczy i przechowuj go w zmiennej środowiskowej.
  2. Stwórz aplikację Discord. W portalu deweloperskim Discord dodaj bota, skopiuj jego token i włącz intent Message Content, aby bot mógł czytać tekst wiadomości. Zaprosz go na swój serwer z uprawnieniami do czytania i wysyłania wiadomości.
  3. Zainstaluj biblioteki. Potrzebujesz discord.py oraz openai.
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"

Nigdy nie committuj żadnego z sekretów. Jeśli token wycieknie, zresetuj go w odpowiednim panelu. Po stronie LLM dokumentacja quickstart pokazuje to samo wywołanie w curl i Node.js, jeśli wolisz inny język.

Działający bot w około 50 liniach

Ten bot odpowiada, gdy ktoś o nim wspomni. Przechowuje ostatnie 20 wiadomości na kanał, wywołuje model z promptem osobowości i dzieli długie odpowiedzi, aby zmieściły się w limicie 2000 znaków Discord.

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

Uruchom go poleceniem python bot.py, oznacz bota na kanale i powinieneś zobaczyć odpowiedź. Wskaźnik pisania pojawia się, gdy zapytanie jest w toku, co sprawia, że oczekiwanie wydaje się krótsze.

Napisz prompt systemowy, który utrzymuje osobowość

Prompt systemowy wykonuje większość pracy w bocie czatu. Dobry jest krótki i konkretny: kim jest bot, jak długie są jego odpowiedzi i co powinien robić, gdy rozmowa odbiegnie. Porównaj dwie wersje.

Słaby prompt mówi „bądź pomocnym asystentem”. Silniejszy nadaje rolę, limit długości i nawyk: „Jesteś Marą, opowiadaczką. Odpowiadaj poniżej 150 słów. Zakończ jednym pytaniem, które posunie scenę do przodu.” Drugi daje modelowi coś, na czym można się oprzeć przez kilkanaście tur, a limit długości utrzymuje koszty przewidywalnymi.

Niektóre praktyczne punkty z uruchamiania botów czatu:

  • Dodaj prefiks każdej tury użytkownika nazwą autora, jak w kodzie. Na wspólnym kanale model nie rozróżni inaczej ludzi.
  • Umieść zasady swojego serwera w promptie systemowym, np. tematy do unikania lub własny styl. Model jest dostrojony do odpowiadania bez odrzuceń treści do legalnego użytku przez dorosłych, więc limity, których chcesz, muszą pochodzić z Twojego promptu i moderacji, a nie z modelu.
  • Utrzymuj osobowość stałą. Jeśli często ją zmieniasz, stare tury w historii będą sprzeczne z nowymi instrukcjami.

Kontekst, historia i okno 100 000 tokenów

Okno kontekstu ma 100 000 tokenów, prompt plus uzupełnienie. Krocząca historia 20 wiadomości jest od tego daleko, i to celowe. API jest bezstanowe: każde zapytanie musi zawierać całą rozmowę, którą model ma zobaczyć, więc każda dodatkowa tura, którą przechowujesz, jest płatna ponownie przy każdym kolejnym wywołaniu.

Wybierz długość historii na podstawie potrzeb pamięci bota. Zwykły bot czatu działa na 10 do 20 wiadomości. Długotrwała gra fabularna może wymagać więcej, a wtedy powszechnym podejściem jest streszczenie starych tur w krótką notatkę trzymaną na górze promptu, a następnie usunięcie oryginałów. Użyj drugiego wywołania modelu do napisania podsumowania, gdy historia przekroczy wybrany rozmiar.

Historia kanał po kanale, jak w kodzie, oddziela rozmowy. Jeśli chcesz też pamięci użytkownika między kanałami, zapisuj notatki w bazie danych i dodawaj je do promptu systemowego dla tego użytkownika. To zadanie Twojej aplikacji, ponieważ API nie przechowuje niczego między wywołaniami. Dla prywatności: prompty wysyłane do tego API nie są używane do trenowania; szczegóły na stronie prywatności.

Limity zapytań na ruchliwym serwerze

Pełny klucz pozwala na 8 równoległych zapytań i 300 zapytań na minutę. Klucz próbny pozwala na 2 i 60. Cichy serwer tego nie zauważy, ale popularny kanał może wysłać falę wzmianek jednocześnie.

asyncio.Semaphore(6) w kodzie ogranicza bota do 6 równoległych wywołań, więc nigdy nie osiągnie limitu 8 i zostawia miejsce dla drugiego skryptu używającego tego samego klucza. Na kluczu próbnym ustaw wartość 2. Jeśli przekroczysz limit, API zwróci HTTP 429: rate_limited dla limitu zapytań na minutę, concurrency dla zbyt dużej liczby naraz. Tymczasowe przeciążenie również zwraca 429 z Retry-After: 5. Klient OpenAI domyślnie ponawia niektóre z tych błędów, a powyższy kod odpowiada uprzejmą wiadomością, gdy skończą się ponowienia.

Strumieniowanie zasługuje na uwagę. Jeśli edytujesz wiadomość Discord, gdy przychodzą tokeny, zapytanie trzyma slot współbieżności do końca strumienia, a Discord ogranicza, jak szybko możesz edytować wiadomości. Dla większości botów pojedyncza odpowiedź po pełnej odpowiedzi jest prostsza i niezawodna.

Ile kosztuje uruchomienie bota Discord

Ceny to $0.15 za 1M tokenów wejściowych i $0.50 za 1M tokenów wyjściowych, z przedpłaconego kredytu. Oblicz jedną odpowiedź najpierw. Załóżmy, że prompt systemowy plus 20 wiadomości historii to 1500 tokenów wejściowych, a odpowiedź to 200 tokenów.

  • Wejście: 1500 / 1000000 x $0.15 = $0.000225
  • Wyjście: 200 / 1 000 000 x $0.50 = $0.0001
  • Razem: $0.000325 na odpowiedź, więc 1000 odpowiedzi kosztuje $0.325

Teraz cięższy przypadek z 3000 tokenami wejściowymi i 300 wyjściowymi: $0.00045 + $0.00015 = $0.0006 na odpowiedź, lub $0.60 za 1000 odpowiedzi. Serwer, który dostaje 500 odpowiedzi dziennie w tym rozmiarze, wydaje około $0.30 dziennie, około $9 przez 30 dni.

Minimalne doładowanie to $20 (dowolna kwota całkowita do $500), z bonusem 5% od $50, 10% od $100 i 15% od $200. Kredyt nigdy nie wygasa, a odrzucone lub nieudane zapytania nie są rozliczane. Płać kartą (Visa, Mastercard, Apple Pay, Google Pay) lub kryptowalutami (USDT na TRC20, USDC na Base). Więcej na stronie z cenami.

Zasady i bezpieczeństwo dla społeczności dorosłych

Model jest przeznaczony do legalnego użytku przez dorosłych, a twardy limit to, że treści seksualne z udziałem nieletnich są zawsze zabronione. Jeśli Twój serwer hostuje fikcję lub roleplay dla dorosłych, trzymaj się dorosłych: ogranicz dostęp do kanałów w ustawieniach Discord, określ zasady w temacie kanału i moderuj. Przeczytaj aktualne zasady deweloperskie i społeczności Discord przed uruchomieniem, ponieważ dotyczą Twojego bota niezależnie od tego, co napisze model.

Loguj identyfikatory zapytań. Każda odpowiedź API zawiera X-Request-Id, co pomaga przy kontakcie z wsparciem w sprawie konkretnego wywołania. Nagłówek X-Balance-USD pozwala botowi ostrzec Cię na kanale administracyjnym, gdy kredyt się kończy, więc nigdy nie ucichnie bez ostrzeżenia.

Pytania i odpowiedzi

Jaką bibliotekę użyć do wywoływania API z bota Discord?

Użyj pakietu openai dla Pythona z klasą AsyncOpenAI, ustaw base_url na https://api.getaiapikey.com/v1, i użyj modelu uncensored. Każdy klient kompatybilny z OpenAI działa w ten sam sposób.

Czy mogę przetestować bota bez płacenia?

Tak. Nowi użytkownicy mogą odebrać $0,50 kredytu próbnego jednym kliknięciem na stronie klucza API. Ważny przez 7 dni, nie wymaga karty, a klucz próbny pozwala na 2 równoległe zapytania i 60 na minutę.

Ile wiadomości bot może zapamiętać?

Okno kontekstu ma 100 000 tokenów, ale to Ty decydujesz, ile historii wysyłać ponownie. Większość botów przechowuje 10 do 20 wiadomości na kanał, aby kontrolować koszty.

Czy bot może czytać obrazy lub odpowiadać głosem?

Nie. To API obsługuje tylko tekst, bez generowania obrazów, audio lub wideo oraz bez embeddingów.

Co się stanie, gdy wielu użytkowników wspomni o bocie jednocześnie?

Dodatkowe zapytania powyżej 8 równoległych lub 300 na minutę otrzymają kod HTTP 429. Użyj semafora lub kolejki w bocie, aby utrzymać się poniżej tych limitów.

Twój klucz jest o jeden formularz stąd

Utwórz konto, skopiuj klucz, zmień bazowy URL. To cała konfiguracja.