GetAiApiKey/Чек-лист API искусственного интеллекта для продакшена
API-ключ LLM для Discord-бота: руководство по настройке
Discord-боту от поставщика LLM нужны три вещи: совместимый с OpenAI эндпоинт, ключ и лимиты, подходящие для загруженного сервера. Вот рабочий бот, его настройки и стоимость сообщения.
Обновлено

Ключевые моменты
- Используйте пакет openai с базовым URL https://api.getaiapikey.com/v1 и моделью uncensored.
- Храните короткую скользящую историю для каждого канала; окно составляет 100 000 токенов, но стоимость растет с каждой повторно отправленной репликой.
- Ограничьте количество одновременных вызовов до 6, так как полный ключ позволяет 8 параллельных запросов и 300 в минуту.
- Ответ в чате с 1 500 входными и 200 выходными токенами стоит $0,000325.
Что делает API-ключ LLM для Discord-бота
Если вам нужен API-ключ LLM для Discord-бота, основные компоненты просты. Discord доставляет сообщение в ваш код через шлюз бота. Ваш код отправляет недавнюю беседу на эндпоинт LLM, получает текст и публикует его обратно в канал. API-ключ подтверждает поставщику LLM, что запрос ваш, и списывает средства с вашего баланса.
Этот сервис совместим с OpenAI, поэтому бот использует стандартный пакет Python openai. Вы меняете две настройки: базовый URL и идентификатор модели uncensored, а остальное — обычные запросы chat completions. Новые пользователи могут попробовать сначала: после регистрации на странице API-ключа доступен пробный баланс $0,50, действительный в течение 7 дней, карта не нужна.
Одна честная граница сразу. Это текстовая модель. Она не может генерировать изображения, голос или видео и не читает вложения самостоятельно. Ваш бот может пересылать текст из сообщения, но все, что выходит за рамки текста, не входит в возможности этого API.
Перед написанием кода
- Получите API-ключ. Войдите через Google или email, создайте ключ на странице ключей и сохраните его в переменной окружения.
- Создайте приложение в Discord. В панели разработчика Discord добавьте бота, скопируйте его токен и включите намерение «Содержимое сообщений», чтобы бот мог читать текст сообщений. Пригласите его на свой сервер с правами на чтение и отправку сообщений.
- Установите библиотеки. Вам нужны
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) в коде ограничивает бота шестью одновременными вызовами, поэтому он никогда не достигнет лимита в 8 и оставит место для второго скрипта, использующего тот же ключ. Для пробного ключа установите значение 2. Если вы превысите лимит, API вернёт HTTP 429: rate_limited для запросов в минуту, concurrency для одновременных запросов. Временная перегрузка также возвращает 429 с заголовком Retry-After: 5. Клиент OpenAI по умолчанию повторяет некоторые из этих запросов, а приведённый выше код выводит вежливое сообщение, если повторные попытки исчерпаны.
Потоковая передача заслуживает примечания. Если вы редактируете сообщение в Discord по мере поступления токенов, запрос удерживает слот параллельности до конца потока, а Discord ограничивает частоту редактирования сообщений. Для большинства ботов один ответ после полного ответа проще и надежнее.
Сколько стоит запуск Discord-бота
Цены: $0,15 за 1 млн входных токенов и $0,50 за 1 млн выходных токенов из предоплаченного баланса. Сначала рассчитуйте один ответ. Скажем, системный промпт плюс 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 за ответ, или $0,60 за 1 000 ответов. Сервер, получающий 500 ответов в день такого размера, тратит около $0,30 в день, примерно $9 за 30 дней.
Минимальная сумма пополнения — $20 (любая целая сумма до $500), с бонусом 5% от $50, 10% от $100 и 15% от $200. Баланс не сгорает, а неудачные или отклонённые запросы не оплачиваются. Оплата картой (Visa, Mastercard, Apple Pay, Google Pay) или криптовалютой (USDT в сети TRC20, USDC в сети Base). Подробнее на странице с ценами.
Правила и безопасность для сообществ для взрослых
Модель предназначена для законного использования взрослыми, и жесткое ограничение заключается в том, что сексуальный контент с участием несовершеннолетних всегда запрещен. Если на вашем сервере ведутся художественные или ролевые игры для взрослых, держите их для взрослых: ограничьте доступ к каналам в настройках Discord, укажите правила в теме канала и модерировайте. Ознакомьтесь с текущими политиками разработчиков и сообщества Discord перед запуском, так как они применяются к вашему боту независимо от того, что напишет модель.
Фиксируйте идентификаторы запросов. Каждый ответ API включает X-Request-Id, что помогает при обращении в поддержку по конкретному вызову. Заголовок X-Balance-USD позволяет боту предупредить вас в админ-канале, когда баланс на исходе, чтобы он не замолчал без предупреждения.
Дополнительные руководства
Вопросы и ответы
Какую библиотеку использовать для вызова API из Discord-бота?
Используйте пакет Python openai с AsyncOpenAI, установите base_url в https://api.getaiapikey.com/v1, и используйте модель uncensored. Любой клиент, совместимый с OpenAI, работает так же.
Могу ли я протестировать бота без оплаты?
Да. Новые пользователи могут получить $0,50 пробного баланса одним кликом на странице API-ключа. Он действует 7 дней, не требует привязки карты, а пробный ключ позволяет выполнять 2 параллельных запроса и 60 в минуту.
Сколько сообщений может запомнить бот?
Окно составляет 100 000 токенов, но вы выбираете, сколько истории пересылать. Большинство ботов сохраняют 10–20 сообщений на канале, чтобы контролировать расходы.
Может ли бот читать изображения или отвечать голосом?
Нет. Этот API обрабатывает только текст, без генерации изображений, аудио или видео и без эмбеддингов.
Что произойдет, если многие люди упомянут бота одновременно?
Дополнительные запросы сверх 8 параллельных или 300 в минуту получают HTTP 429. Используйте семафор или очередь в боте, чтобы оставаться в пределах этих лимитов.
Ваш ключ всего в одной форме от вас
Создайте аккаунт, скопируйте ключ, измените базовый URL. Это вся настройка.