GetAiApiKey/उत्पादन के लिए कृत्रिम बुद्धिमत्ता API चेकलिस्ट
Discord बॉट के लिए LLM API कुंजी: सेटअप गाइड
एक Discord बॉट को एक LLM प्रोवाइडर से तीन चीजों की आवश्यकता होती है: एक OpenAI-संगत एंडपॉइंट, एक कुंजी, और एक व्यस्त सर्वर के लिए उपयुक्त सीमाएं। यहाँ एक कार्यरत बॉट, उसके पीछे की सेटिंग्स और प्रति संदेश लागत है।
अपडेट किया गया

मुख्य बिंदु
- base URL https://api.getaiapikey.com/v1 और uncensored मॉडल के साथ openai पैकेज का उपयोग करें।
- प्रति चैनल एक छोटा रोलिंग इतिहास रखें; विंडो 100,000 टोकन की है लेकिन हर भेजे गए टर्न के साथ लागत बढ़ती है।
- चल रहे कॉल को लगभग 6 पर सीमित करें, क्योंकि एक पूर्ण कुंजी 8 समानांतर अनुरोधों और प्रति मिनट 300 की अनुमति देती है।
- 1,500 इनपुट और 200 आउटपुट टोकन वाले एक चैट जवाब की लागत $0.000325 है।
एक Discord बॉट के लिए LLM API कुंजी क्या करती है
यदि आप Discord बॉट के लिए LLM API कुंजी चाहते हैं, तो चलने वाले हिस्से सरल हैं। Discord अपने बॉट गेटवे के माध्यम से संदेश को आपके कोड में भेजता है। आपका कोड हाल की बातचीत को एक LLM एंडपॉइंट पर भेजता है, पाठ प्राप्त करता है, और इसे चैनल में वापस पोस्ट करता है। API कुंजी वह प्रमाण है जो LLM प्रोवाइडर को यह साबित करता है कि अनुरोध आपका है और इसे आपके बैलेंस पर बिल करता है।
यह सेवा OpenAI-संगत है, इसलिए बॉट मानक openai Python पैकेज का उपयोग करता है। आपको दो सेटिंग्स बदलनी होती हैं, बेस URL और मॉडल ID uncensored, और बाकी सब सामान्य चैट कम्प्लीशन हैं। नए उपयोगकर्ता पहले इसे आज़मा सकते हैं: साइन-अप के बाद API कुंजी पृष्ठ पर 7 दिनों के लिए मान्य $0.50 का मुफ़्त ट्रायल क्रेडिट मिलता है, कार्ड की आवश्यकता नहीं है।
एक ईमानदार सीमा पहले ही बता देते हैं। यह एक टेक्स्ट मॉडल है। यह छवियाँ, आवाज़ या वीडियो जनरेट नहीं कर सकता, और यह अटैचमेंट को स्वयं नहीं पढ़ता। आपका बॉट संदेश से टेक्स्ट आगे बढ़ा सकता है, लेकिन टेक्स्ट से परे कुछ भी उस API की सीमा से बाहर है।
कोड लिखने से पहले
- एक API कुंजी प्राप्त करें। Google या ईमेल से साइन इन करें, कुंजी पृष्ठ पर एक कुंजी बनाएँ, और इसे एक एन्वायरनमेंट वेरिएबल में रखें।
- एक Discord एप्लिकेशन बनाएँ। Discord के डेवलपर पोर्टल में, एक बॉट जोड़ें, उसका टोकन कॉपी करें, और Message Content इंटेंट को सक्षम करें ताकि बॉट संदेश टेक्स्ट पढ़ सके। इसे अपने सर्वर में उस अनुमति के साथ आमंत्रित करें जो संदेश पढ़ने और भेजने की अनुमति देती है।
- लाइब्रेरीज़ इंस्टॉल करें। आपको
discord.pyऔर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"
इन दोनों सीक्रेट में से किसी को भी कभी कमिट न करें। यदि कोई टोकन लीक होता है, तो संबंधित डैशबोर्ड में इसे रीसेट करें। LLM साइड के लिए, क्विकस्टार्ट दस्तावेज़ में curl और Node में वही कॉल दिखाई जाती है यदि आप किसी अन्य भाषा को प्राथमिकता देते हैं।
एक कार्यरत बॉट लगभग 50 लाइनों में
यह बॉट तब जवाब देता है जब कोई उसका ज़िक्र करता है। यह प्रत्येक चैनल के लिए पिछले 20 संदेशों को रखता है, एक पर्सोना प्रॉम्प्ट के साथ मॉडल को कॉल करता है, और लंबे जवाबों को Discord की 2,000-अक्षरों की संदेश सीमा में फिट करने के लिए विभाजित करता है।
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"])
इसे python bot.py से चलाएँ, चैनल में बॉट का ज़िक्र करें, और आपको एक जवाब दिखना चाहिए। टाइपिंग इंडिकेटर तब दिखाई देता है जब अनुरोध चल रहा होता है, जिससे प्रतीक्षा छोटी लगती है।
एक सिस्टम प्रॉम्प्ट लिखें जो एक पर्सोना बनाए रखे
सिस्टम प्रॉम्प्ट चैट बॉट में सबसे ज्यादा काम करता है। एक अच्छा प्रॉम्प्ट छोटा और विशिष्ट होता है: बॉट कौन है, उसके जवाब कितने लंबे होने चाहिए, और जब बातचीत भटक जाए तो उसे क्या करना चाहिए। दो संस्करणों की तुलना करें।
एक कमजोर प्रॉम्प्ट में "एक सहायक बनो" लिखा होता है। एक मजबूत प्रॉम्प्ट भूमिका, शब्द सीमा और एक आदत देता है: "आप मारा हैं, एक कहानीकार। 150 शब्दों से कम जवाब दें। दृश्य को आगे बढ़ाने वाले एक प्रश्न के साथ समाप्त करें।" दूसरा प्रॉम्प्ट मॉडल को एक दर्जन टर्न्स के लिए पकड़ने के लिए कुछ देता है, और लंबाई की सीमा आपकी लागत को भी अनुमानित रखती है।
चैट बॉट्स चलाते समय कुछ व्यावहारिक बिंदु:
- प्रत्येक उपयोगकर्ता टर्न को कोड की तरह वक्ता के नाम से प्रिफ़िक्स करें। एक साझा चैनल में मॉडल अन्यथा लोगों में अंतर नहीं कर सकता।
- अपने सर्वर के नियम सिस्टम प्रॉम्प्ट में डालें, जैसे कि किन विषयों से बचना है या अपनी खास शैली। मॉडल वयस्कों के वैध उपयोग के लिए बिना सेंसर के जवाब देने के लिए ट्यून्ड है, इसलिए आपकी जो सीमाएँ चाहिए वे मॉडल से नहीं, बल्कि आपके प्रॉम्प्ट और आपकी मॉडरेशन से आनी चाहिए।
- पर्सोना को स्थिर रखें। यदि आप इसे अक्सर बदलते हैं, तो इतिहास में पुराने टर्न नए निर्देशों के विरोधाभासी होंगे।
कॉन्टेक्स्ट, इतिहास और 100,000-टोकन विंडो
कॉन्टेक्स्ट विंडो 100,000 टोकन की है, जिसमें प्रॉम्प्ट और कम्प्लीशन शामिल हैं। 20-संदेश वाली रोलिंग हिस्ट्री इससे कहीं कम है, और यह जानबूझकर किया गया है। API स्टेटलेस है: हर अनुरोध में उस पूरी बातचीत को भेजना होता है जिसे मॉडल को दिखाना है, इसलिए हर अतिरिक्त टर्न जो आप रखते हैं, उसे हर अगले कॉल पर फिर से भुगतान करना पड़ता है।
बॉट को कितनी मेमोरी की आवश्यकता है, उसके आधार पर हिस्ट्री लंबाई चुनें। एक सामान्य चैट बॉट 10 से 20 संदेशों के साथ काम करता है। एक लंबे समय तक चलने वाला रोलप्ले अधिक की आवश्यकता हो सकती है, और उस मामले में एक सामान्य दृष्टिकोण पुराने टर्न्स को एक छोटे नोट में सारांशित करना है जिसे प्रॉम्प्ट के ऊपर रखा जाता है, फिर मूल हटा दिया जाता है। जब हिस्ट्री आपकी चुनी हुई सीमा से अधिक हो जाए, तो सारांश लिखने के लिए एक दूसरा मॉडल कॉल का उपयोग करें।
कोड की तरह प्रति-चैनल हिस्ट्री, बातचीत को अलग रखती है। यदि आप चैनलों के बीच प्रति-उपयोगकर्ता मेमोरी भी चाहते हैं, तो डेटाबेस में नोट्स स्टोर करें और उस उपयोगकर्ता के लिए सिस्टम प्रॉम्प्ट में उन्हें जोड़ें। यह हिस्सा आपके एप्लिकेशन का काम है, क्योंकि API स्वयं कॉल्स के बीच कुछ भी नहीं रखता। गोपनीयता के लिए, ध्यान दें कि इस API को भेजे गए प्रॉम्प्ट प्रशिक्षण के लिए उपयोग नहीं किए जाते; विवरण के लिए गोपनीयता पृष्ठ देखें।
एक व्यस्त सर्वर पर रेट लिमिट
एक पूर्ण कुंजी 8 समानांतर अनुरोध और प्रति मिनट 300 अनुरोध की अनुमति देती है। एक ट्रायल कुंजी 2 और 60 की अनुमति देती है। एक शांत सर्वर कभी भी ध्यान नहीं देगा, लेकिन एक लोकप्रिय चैनल एक साथ ज़िक्रों का एक बर्स्ट भेज सकता है।
कोड में asyncio.Semaphore(6) बॉट को 6 चल रहे कॉल्स तक सीमित करता है, ताकि यह 8 की कैप तक न पहुँचे और उसी कुंजी का उपयोग करने वाले एक दूसरे स्क्रिप्ट के लिए जगह छोड़ दे। एक ट्रायल कुंजी पर, इसे 2 पर सेट करें। यदि आप एक लिमिट को पार करते हैं, तो API HTTP 429 लौटाता है: rate_limited प्रति मिनट अनुरोधों के लिए, concurrency एक साथ बहुत अधिक के लिए। अस्थायी ओवरलोड भी Retry-After: 5 के साथ 429 देता है। OpenAI क्लाइंट इनमें से कुछ को डिफ़ॉल्ट रूप से पुनः प्रयास करता है, और ऊपर दिया गया कोड यदि पुनः प्रयास समाप्त हो जाएं तो एक विनम्र संदेश के साथ जवाब देता है।
स्ट्रीमिंग के लिए एक नोट की आवश्यकता है। यदि आप टोकन आने पर Discord संदेश को संपादित करते हैं, तो अनुरोध स्ट्रीम समाप्त होने तक अपनी कॉन्करेंसी स्लॉट पकड़े रखता है, और Discord आपको संदेश कितनी तेज़ी से संपादित करने की अनुमति देता है, इसकी सीमा है। अधिकांश बॉट्स के लिए पूरा जवाब आने के बाद एक अकेला जवाब सरल और विश्वसनीय है।
Discord बॉट चलाने का खर्च
मूल्य निर्धारण $0.15 प्रति 1M इनपुट टोकन और $0.50 प्रति 1M आउटपुट टोकन है, प्रीपेड क्रेडिट से। पहले एक जवाब की गणना करें। मान लें कि सिस्टम प्रॉम्प्ट और 20 संदेशों का इतिहास मिलकर 1,500 इनपुट टोकन बनते हैं, और जवाब 200 टोकन का है।
- इनपुट: 1,500 / 1,000,000 x $0.15 = $0.000225
- आउटपुट: 200 / 1,000,000 x $0.50 = $0.0001
- कुल: प्रति जवाब $0.000325, इसलिए 1,000 जवाबों का खर्च $0.325 है
अब एक भारी केस 3,000 इनपुट और 300 आउटपुट टोकन के साथ: $0.00045 + $0.00015 = $0.0006 प्रति जवाब, या 1,000 जवाबों के लिए $0.60। एक सर्वर जो उस आकार के 500 जवाब प्रति दिन प्राप्त करता है, उस पर लगभग $0.30 प्रति दिन, यानी 30 दिनों में लगभग $9 खर्च होता है।
न्यूनतम टॉप-अप $20 है (पूर्णांक राशि, $500 तक), $50 से 5%, $100 से 10% और $200 से 15% बोनस मिलता है। क्रेडिट कभी नहीं खत्म होता, और विफल या अस्वीकृत अनुरोधों के लिए चार्ज नहीं किया जाता। कार्ड (Visa, Mastercard, Apple Pay, Google Pay) या क्रिप्टो (TRC20 पर USDT, Base पर USDC) से भुगतान करें। अधिक जानकारी मूल्य निर्धारण पृष्ठ पर।
वयस्क समुदायों के लिए नियम और सुरक्षा
मॉडल कानूनी वयस्क उपयोग के लिए है, और कठोर सीमा यह है कि नाबालिगों से जुड़ी यौन सामग्री कभी भी अनुमति नहीं है। यदि आपका सर्वर वयस्कों के लिए फिक्शन या रोलप्ले होस्ट करता है, तो इसे वयस्कों तक सीमित रखें: Discord की अपनी सेटिंग्स में चैनलों की पहुँच सीमित करें, चैनल टॉपिक में अपने नियम बताएं, और मॉडरेट करें। लॉन्च करने से पहले Discord की वर्तमान डेवलपर और कम्युनिटी पॉलिसी पढ़ें, क्योंकि वे आपके बॉट पर लागू होती हैं, चाहे मॉडल कुछ भी लिखे।
अनुरोध ID लॉग करें। प्रत्येक API प्रतिक्रिया में X-Request-Id शामिल होता है, जो आपको विशिष्ट कॉल के बारे में सहायता से संपर्क करने में मदद करता है। X-Balance-USD हेडर बॉट को एक एडमिन चैनल में क्रेडिट कम होने पर आपको चेतावनी देने देता है, ताकि वह बिना सूचना के शांत न हो जाए।
अधिक गाइड
प्रश्न और उत्तर
Discord बॉट से API कॉल करने के लिए मैं कौन सा लाइब्रेरी उपयोग करूं?
AsyncOpenAI के साथ openai Python पैकेज का उपयोग करें, base_url को https://api.getaiapikey.com/v1 पर सेट करें और uncensored मॉडल का उपयोग करें। कोई भी OpenAI-संगत क्लाइंट उसी तरह काम करता है।
क्या मैं भुगतान किए बिना बॉट का परीक्षण कर सकता हूँ?
हाँ। नए उपयोगकर्ता API कुंजी पृष्ठ पर एक क्लिक से $0.50 का ट्रायल क्रेडिट क्लेम कर सकते हैं। यह 7 दिनों तक चलता है, कार्ड की आवश्यकता नहीं होती है, और ट्रायल कुंजी 2 समानांतर अनुरोधों और प्रति मिनट 60 अनुरोधों की अनुमति देती है।
बॉट कितने संदेश याद रख सकता है?
विंडो 100,000 टोकन की है, लेकिन आप यह चुनते हैं कि कितना इतिहास फिर से भेजना है। अधिकांश बॉट लागत नियंत्रित करने के लिए प्रति चैनल 10 से 20 संदेश रखते हैं।
क्या बॉट छवियाँ पढ़ सकता है या आवाज़ में जवाब दे सकता है?
नहीं। यह API केवल पाठ संभालता है, जिसमें छवि, ऑडियो या वीडियो जनरेशन और एम्बेडिंग्स नहीं हैं।
यदि कई लोग एक साथ बॉट का उल्लेख करें तो क्या होता है?
8 समानांतर अनुरोध या प्रति मिनट 300 अनुरोध से अधिक होने पर HTTP 429 मिलता है। बॉट में सेमाफोर या क्यू का उपयोग करें ताकि वे उस सीमा के भीतर रहें।
आपकी कुंजी बस एक फ़ॉर्म दूर है
एक खाता बनाएँ, कुंजी कॉपी करें, बेस URL बदलें। सेटअप यही है।