ID ▾
Dapatkan kunci API

GetAiApiKeyDaftar Periksa API Kecerdasan Buatan untuk Produksi

Kunci API LLM untuk Bot Discord: Panduan Penyiapan

Bot Discord membutuhkan tiga hal dari penyedia LLM: endpoint kompatibel OpenAI, kunci, dan batas yang sesuai untuk server sibuk. Berikut adalah bot yang berfungsi, pengaturan di baliknya, dan biaya per pesan.

Diperbarui

Ilustrasi isometrik gelembung obrolan yang terhubung ke rak server, mewakili bot Discord yang memanggil API LLM

Poin utama

  1. Gunakan paket openai dengan URL dasar https://api.getaiapikey.com/v1 dan model uncensored.
  2. Simpan riwayat bergulir singkat per saluran; jendela konteksnya adalah 100.000 token, tetapi biaya meningkat dengan setiap giliran yang dikirim ulang.
  3. Batasi panggilan yang sedang berjalan sekitar 6, karena kunci penuh memungkinkan 8 permintaan paralel dan 300 per menit.
  4. Balasan chat dengan 1.500 token input dan 200 token output berharga $0.000325.

Fungsi kunci API LLM untuk bot Discord

Jika Anda menginginkan bot Discord dengan kunci API LLM, komponennya sederhana. Discord mengirimkan pesan ke kode Anda melalui gateway botnya. Kode Anda mengirimkan percakapan terbaru ke endpoint LLM, menerima teks, dan mempostingnya kembali ke saluran. Kunci API adalah bukti kepada penyedia LLM bahwa permintaan itu milik Anda dan membebankannya ke saldo Anda.

Layanan ini kompatibel dengan OpenAI, sehingga bot menggunakan paket Python openai standar. Anda mengubah dua pengaturan, URL dasar dan ID model uncensored, dan sisanya adalah penyelesaian percakapan biasa. Pengguna baru dapat mencobanya terlebih dahulu: setelah masuk, halaman kunci API menawarkan $0,50 kredit uji coba, berlaku selama 7 hari, tanpa perlu kartu.

Satu batasan jujur di awal. Ini adalah model teks. Model ini tidak dapat menghasilkan gambar, suara, atau video, dan tidak membaca lampiran secara mandiri. Bot Anda dapat meneruskan teks dari pesan, tetapi apa pun di luar teks berada di luar cakupan apa yang dilakukan API ini.

Sebelum Anda menulis kode

  1. Dapatkan kunci API. Daftar dengan Google atau email, buat kunci di halaman kunci, dan simpan dalam variabel lingkungan.
  2. Buat aplikasi Discord. Di portal pengembang Discord, tambahkan bot, salin token-nya, dan aktifkan intent Message Content agar bot dapat membaca teks pesan. Undang bot ke server Anda dengan izin untuk membaca dan mengirim pesan.
  3. Instal pustaka. Anda memerlukan discord.py dan 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"

Jangan pernah melakukan commit untuk kedua rahasia tersebut. Jika token bocor, atur ulang di dasbor masing-masing. Untuk sisi LLM, dokumentasi quickstart menunjukkan panggilan yang sama dalam curl dan Node jika Anda lebih memilih bahasa lain.

Bot yang berfungsi dalam sekitar 50 baris

Bot ini menjawab ketika seseorang menyebutnya. Bot ini menyimpan 20 pesan terakhir per saluran, memanggil model dengan prompt persona, dan membagi jawaban panjang agar sesuai dengan batas pesan 2.000 karakter 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"])

Jalankan dengan python bot.py, sebutkan bot di saluran, dan Anda akan melihat balasan. Indikator pengetikan muncul saat permintaan sedang berjalan, yang membuat waktu tunggu terasa lebih singkat.

Tulis prompt sistem yang memegang persona

Prompt sistem melakukan sebagian besar pekerjaan dalam bot chat. Prompt yang baik itu singkat dan spesifik: identitas bot, seberapa panjang balasannya, dan apa yang harus dilakukan ketika percakapan menyimpang. Bandingkan dua versi.

Prompt yang lemah mengatakan "jadilah asisten yang membantu". Prompt yang lebih kuat memberikan peran, batas panjang, dan kebiasaan: "Anda adalah Mara, seorang pencerita. Balas dalam kurang dari 150 kata. Akhiri dengan satu pertanyaan yang memajukan adegan." Yang kedua memberikan model sesuatu untuk dipegang selama beberapa giliran, dan batas panjang juga menjaga biaya Anda dapat diprediksi.

Beberapa poin praktis dari menjalankan bot chat:

  • Awali setiap giliran pengguna dengan nama pembicara, seperti yang dilakukan kode. Di saluran bersama, model tidak dapat membedakan orang satu sama lain.
  • Masukkan aturan server Anda ke dalam prompt sistem, seperti topik yang harus dihindari atau gaya penulisan khusus. Model ini disesuaikan untuk menjawab tanpa penolakan konten untuk penggunaan dewasa yang sah, sehingga batas yang Anda inginkan harus berasal dari prompt dan moderasi Anda, bukan dari model.
  • Jaga persona tetap stabil. Jika Anda sering mengubahnya, giliran lama dalam riwayat akan bertentangan dengan instruksi baru.

Konteks, riwayat, dan jendela 100.000 token

Jendela konteks adalah 100.000 token, prompt ditambah penyelesaian. Riwayat bergulir 20 pesan jauh di bawah itu, dan itu disengaja. API bersifat stateless: setiap permintaan harus membawa seluruh percakapan yang ingin Anda tunjukkan kepada model, sehingga setiap giliran tambahan yang Anda simpan dibayar lagi pada setiap panggilan berikutnya.

Pilih panjang riwayat berdasarkan seberapa banyak memori yang dibutuhkan bot. Bot obrolan kasual bekerja dengan 10 hingga 20 pesan. Roleplay jangka panjang mungkin membutuhkan lebih banyak, dan untuk itu pendekatan umum adalah merangkum giliran lama menjadi catatan singkat yang disimpan di dekat bagian atas prompt, lalu menghapus aslinya. Gunakan panggilan model kedua untuk menulis ringkasan ketika riwayat melewati ukuran yang Anda pilih.

Riwayat per-saluran, seperti dalam kode, menjaga percakapan tetap terpisah. Jika Anda juga menginginkan memori per-pengguna di seluruh saluran, simpan catatan di basis data dan tambahkan ke prompt sistem untuk pengguna tersebut. Bagian itu adalah tugas aplikasi Anda, karena API itu sendiri tidak menyimpan apa pun di antara panggilan. Untuk privasi, perhatikan bahwa prompt yang dikirim ke API ini tidak digunakan untuk pelatihan; lihat halaman privasi untuk detailnya.

Batas laju pada server sibuk

Kunci penuh memungkinkan 8 permintaan paralel dan 300 permintaan per menit. Kunci uji coba memungkinkan 2 dan 60. Server yang tenang tidak akan menyadarinya, tetapi saluran populer dapat mengirim lonjakan sebutan secara bersamaan.

asyncio.Semaphore(6) dalam kode membatasi bot hingga 6 panggilan yang sedang berjalan, sehingga tidak pernah mencapai batas 8 dan menyisakan ruang untuk skrip kedua yang menggunakan kunci yang sama. Pada kunci uji coba, atur menjadi 2. Jika Anda melebihi batas, API mengembalikan HTTP 429: rate_limited untuk permintaan per menit, concurrency untuk terlalu banyak sekaligus. Beban berlebih sementara juga memberikan 429 dengan Retry-After: 5. Klien OpenAI secara default mencoba ulang beberapa dari ini, dan kode di atas membalas dengan pesan sopan jika upaya ulang habis.

Streaming memerlukan catatan. Jika Anda mengedit pesan Discord saat token tiba, permintaan tersebut memegang slot konkurensinya hingga streaming berakhir, dan Discord membatasi seberapa cepat Anda dapat mengedit pesan. Untuk sebagian besar bot, satu balasan setelah jawaban lengkap lebih sederhana dan andal.

Biaya menjalankan bot Discord

Harga adalah $0,15 per 1 juta token input dan $0,50 per 1 juta token output, dari saldo prabayar. Hitung satu balasan terlebih dahulu. Katakanlah prompt sistem ditambah 20 pesan riwayat berjumlah 1.500 token input, dan jawabannya adalah 200 token.

  • Input: 1.500 / 1.000.000 x $0,15 = $0,000225
  • Output: 200 / 1.000.000 x $0,50 = $0,0001
  • Total: $0,000325 per balasan, sehingga 1.000 balasan biaya $0,325

Sekarang kasus yang lebih berat dengan 3.000 input dan 300 output token: $0.00045 + $0.00015 = $0.0006 per balasan, atau $0,60 per 1.000 balasan. Server yang mendapatkan 500 balasan sehari dengan ukuran itu menghabiskan sekitar $0,30 sehari, sekitar $9 selama 30 hari.

Isi saldo terkecil adalah $20 (setiap jumlah bulat hingga $500), dengan bonus 5% dari $50, 10% dari $100, dan 15% dari $200. Saldo prabayar tidak pernah kedaluwarsa, dan permintaan yang gagal atau ditolak tidak dikenakan biaya. Bayar dengan kartu (Visa, Mastercard, Apple Pay, Google Pay) atau kripto (USDT di TRC20, USDC di Base). Selengkapnya di halaman harga.

Aturan dan keamanan untuk komunitas dewasa

Model melayani penggunaan dewasa yang sah, dan batas kerasnya adalah konten seksual yang melibatkan anak di bawah umur tidak pernah diizinkan. Jika server Anda menampung fiksi atau roleplay untuk dewasa, batasi hanya untuk dewasa: batasi akses ke saluran lewat pengaturan Discord sendiri, nyatakan aturan Anda di topik saluran, dan moderasi. Baca kebijakan pengembang dan komunitas Discord terbaru sebelum Anda meluncurkan, karena kebijakan tersebut berlaku untuk bot Anda terlepas dari apa yang akan ditulis model.

Log ID permintaan. Setiap respons API menyertakan X-Request-Id, yang membantu ketika Anda menghubungi dukungan tentang panggilan tertentu. Header X-Balance-USD memungkinkan bot memperingatkan Anda di saluran admin ketika saldo hampir habis, sehingga tidak pernah diam tanpa pemberitahuan.

Tanya jawab

Pustaka mana yang saya gunakan untuk memanggil API dari bot Discord?

Gunakan paket Python openai dengan AsyncOpenAI, atur base_url ke https://api.getaiapikey.com/v1, dan gunakan model uncensored. Klien yang kompatibel dengan OpenAI bekerja dengan cara yang sama.

Bisakah saya menguji bot tanpa membayar?

Ya. Pengguna baru dapat mengklaim kredit uji coba senilai $0.50 dengan satu klik di halaman kunci API. Kredit ini berlaku selama 7 hari, tidak memerlukan kartu, dan kunci uji coba memungkinkan 2 permintaan paralel dan 60 per menit.

Berapa banyak pesan yang dapat diingat oleh bot?

Jendela konteksnya adalah 100.000 token, tetapi Anda memilih berapa banyak riwayat yang akan dikirim ulang. Sebagian besar bot menyimpan 10 hingga 20 pesan per saluran untuk mengontrol biaya.

Dapatkah bot membaca gambar atau membalas dengan suara?

Tidak. API ini hanya menangani teks, tanpa pembuatan gambar, audio, atau video, dan tanpa embedding.

Apa yang terjadi jika banyak orang menyebutkan bot secara bersamaan?

Permintaan tambahan di atas 8 permintaan paralel atau 300 per menit akan mendapatkan HTTP 429. Gunakan semaphore atau antrian di dalam bot agar tetap berada di bawah batas tersebut.

Kunci Anda hanya selangkah lagi dari satu formulir

Buat akun, salin kunci, ubah URL dasar. Itu saja seluruh proses pengaturannya.