GetAiApiKey/Lista de verificación de API de IA para producción
Clave de API LLM para un bot de Discord: Guía de configuración
Un bot de Discord necesita tres cosas de un proveedor LLM: un endpoint compatible con OpenAI, una clave y límites que se ajusten a un servidor ocupado. Aquí tienes un bot funcional, la configuración detrás de él y el costo por mensaje.
Actualizado

Puntos clave
- Usa el paquete openai con base URL https://api.getaiapikey.com/v1 y modelo uncensored.
- Mantén un historial corto y rotativo por canal; la ventana es de 100,000 tokens pero el costo crece con cada turno reenviado.
- Limita las llamadas en curso a unas 6, ya que una clave completa permite 8 peticiones simultáneas y 300 por minuto.
- Una respuesta de chat de 1,500 tokens de entrada y 200 de salida cuesta $0.000325.
Qué hace una clave de API LLM para un bot de Discord
Si quieres una clave de API LLM para un bot de Discord, las partes móviles son simples. Discord envía un mensaje a tu código a través de su gateway de bot. Tu código envía la conversación reciente a un endpoint LLM, recibe texto y lo publica de nuevo en el canal. La clave de API es lo que demuestra al proveedor LLM que la petición es tuya y lo factura a tu saldo.
Este servicio es compatible con OpenAI, por lo que el bot usa el paquete de Python openai estándar. Cambias dos configuraciones, la base URL y el ID del modelo uncensored, y todo lo demás son completaciones de chat normales. Los nuevos usuarios pueden probarlo primero: después del registro, la página de clave de API ofrece $0.50 de crédito de prueba, válido por 7 días, sin necesidad de tarjeta.
Un límite honesto de entrada. Este es un modelo de texto. No puede generar imágenes, voz o video, y no lee adjuntos por sí mismo. Tu bot puede reenviar texto de un mensaje, pero cualquier cosa más allá del texto está fuera de lo que hace esta API.
Antes de escribir código
- Obtén una clave de API. Regístrate con Google o correo electrónico, crea una clave en la página de claves y guárdala en una variable de entorno.
- Crea una aplicación de Discord. En el portal de desarrolladores de Discord, añade un bot, copia su token y habilita la intención de Contenido de Mensajes para que el bot pueda leer el texto de los mensajes. Invítalo a tu servidor con los permisos para leer y enviar mensajes.
- Instala las librerías. Necesitas
discord.pyyopenai.
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"
Nunca hagas commit de ninguna de las dos claves secretas. Si un token se filtra, restáuralo en el panel de control correspondiente. Para el lado LLM, la documentación de inicio rápido muestra la misma llamada en curl y Node si prefieres otro lenguaje.
Un bot funcional en unas 50 líneas
Este bot responde cuando alguien lo menciona. Guarda los últimos 20 mensajes por canal, llama al modelo con un prompt de personalidad y divide las respuestas largas para ajustarse al límite de mensaje de 2,000 caracteres de 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"])
Ejecútalo con python bot.py, menciona al bot en un canal y deberías ver una respuesta. El indicador de escritura se muestra mientras la petición está en curso, lo que hace que la espera se sienta más corta.
Escribe un prompt de sistema que mantenga una personalidad
El prompt de sistema hace la mayor parte del trabajo en un bot de chat. Uno bueno es corto y específico: quién es el bot, cuánto duran sus respuestas y qué debe hacer cuando la conversación se desvíe. Compara dos versiones.
Un prompt débil dice "sé un asistente útil". Uno más fuerte da un rol, un límite de longitud y un hábito: "Eres Mara, una narradora. Responde en menos de 150 palabras. Termina con una pregunta que avance la escena". La segunda opción le da al modelo algo a lo que aferrarse a lo largo de una docena de turnos, y el límite de longitud también mantiene tu costo predecible.
Algunos puntos prácticos de ejecutar bots de chat:
- Prefija cada turno del usuario con el nombre del hablante, como hace el código. En un canal compartido, el modelo de otra manera no puede distinguir a las personas.
- Pon reglas para tu servidor en el prompt de sistema, como temas a evitar o un estilo propio. El modelo está ajustado para responder sin rechazos de contenido para uso adulto legal, por lo que los límites que quieras deben venir de tu prompt y tu moderación, no del modelo.
- Mantén la personalidad constante. Si la cambias a menudo, los turnos antiguos en el historial contradirán las nuevas instrucciones.
Contexto, historial y la ventana de 100,000 tokens
La ventana de contexto es de 100,000 tokens, prompt más completación. Un historial rotativo de 20 mensajes está lejos de eso, y eso es intencional. La API es sin estado: cada petición debe llevar toda la conversación que quieres que el modelo vea, por lo que cada turno extra que guardas se paga de nuevo en cada llamada subsiguiente.
Elige una longitud de historial según la memoria que necesite el bot. Un bot de chat casual funciona con 10 a 20 mensajes. Un roleplay de larga duración puede necesitar más, y para eso un enfoque común es resumir los turnos antiguos en una nota corta mantenida cerca de la parte superior del prompt, luego descartar los originales. Usa una segunda llamada al modelo para escribir el resumen cuando el historial supere un tamaño que elijas.
Historial por canal, como en el código, mantiene las conversaciones separadas. Si también quieres memoria por usuario a través de canales, guarda notas en una base de datos y añádelas al prompt de sistema para ese usuario. Esa parte es trabajo de tu aplicación, ya que la API en sí no guarda nada entre llamadas. Para privacidad, ten en cuenta que los prompts enviados a esta API no se usan para entrenamiento; consulta la página de privacidad para los detalles.
Límites de peticiones en un servidor ocupado
Una clave completa permite 8 peticiones simultáneas y 300 peticiones por minuto. Una clave de prueba permite 2 y 60. Un servidor tranquilo nunca lo nota, pero un canal popular puede enviar una ráfaga de menciones a la vez.
El asyncio.Semaphore(6) en el código limita el bot a 6 llamadas en curso, así que nunca alcanza el límite de 8 y deja espacio para un segundo script usando la misma clave. En una clave de prueba, establécelo en 2. Si excedes un límite, la API devuelve HTTP 429: rate_limited para peticiones por minuto, concurrency para demasiadas a la vez. La sobrecarga temporal también da 429 con Retry-After: 5. El cliente de OpenAI reintenta algunos de estos por defecto, y el código anterior responde con un mensaje educado si se agotan los reintentos.
El streaming merece una nota. Si editas el mensaje de Discord a medida que llegan los tokens, la petición mantiene su ranura de concurrencia hasta que termina el stream, y Discord limita qué tan rápido puedes editar mensajes. Para la mayoría de los bots, una sola respuesta después de la respuesta completa es más simple y confiable.
Cuánto cuesta ejecutar un bot de Discord
La tarifa es de $0.15 por 1M de tokens de entrada y $0.50 por 1M de tokens de salida, del crédito prepago. Calcula una respuesta primero. Digamos que el prompt de sistema más 20 mensajes de historial llegan a 1,500 tokens de entrada, y la respuesta es de 200 tokens.
- Entrada: 1.500 / 1.000.000 x $0,15 = $0,000225
- Salida: 200 / 1,000,000 x $0.50 = $0.0001
- Total: $0.000325 por respuesta, así que 1,000 respuestas cuestan $0.325
Ahora un caso más pesado con 3,000 de entrada y 300 de salida: $0.00045 + $0.00015 = $0.0006 por respuesta, o $0.60 por 1,000 respuestas. Un servidor que recibe 500 respuestas al día a ese tamaño gasta unos $0.30 al día, aproximadamente $9 en 30 días.
La recarga más pequeña es de $20 (cualquier cantidad entera hasta $500), con un bono del 5% desde $50, 10% desde $100 y 15% desde $200. El crédito no caduca, y las peticiones fallidas o rechazadas no se cobran. Paga con tarjeta (Visa, Mastercard, Apple Pay, Google Pay) o cripto (USDT en TRC20, USDC en Base). Más en la página de precios.
Reglas y seguridad para comunidades adultas
El modelo sirve para uso adulto legal, y el límite duro es que el contenido sexual que involucra a menores nunca está permitido. Si tu servidor alberga ficción o roleplay para adultos, manténlo para adultos: restringe el acceso a los canales en la propia configuración de Discord, establece tus reglas en el tema del canal y modera. Lee las políticas actuales de desarrolladores y comunidad de Discord antes de lanzar, ya que se aplican a tu bot independientemente de lo que escriba el modelo.
Registra IDs de petición. Cada respuesta de API incluye X-Request-Id, lo que ayuda cuando contactas a soporte sobre una llamada específica. El encabezado X-Balance-USD permite al bot advertirte en un canal de administración cuando el crédito se agota, así que nunca se queda en silencio sin aviso.
Más guías
Preguntas y respuestas
¿Qué librería uso para llamar a la API desde un bot de Discord?
Usa el paquete Python de openai con AsyncOpenAI, establece base_url en https://api.getaiapikey.com/v1, y usa el modelo uncensored. Cualquier cliente compatible con OpenAI funciona de la misma manera.
¿Puedo probar el bot sin pagar?
Sí. Los nuevos usuarios pueden reclamar $0.50 de crédito de prueba con un solo clic en la página de la clave de API. Dura 7 días, no requiere tarjeta y la clave de prueba permite 2 peticiones simultáneas y 60 por minuto.
¿Cuántos mensajes puede recordar el bot?
La ventana de contexto es de 100,000 tokens, pero tú decides cuánta historia reenviar. La mayoría de los bots guardan de 10 a 20 mensajes por canal para controlar el costo.
¿Puede el bot leer imágenes o responder con voz?
No. Esta API solo maneja texto, sin generación de imágenes, audio o video ni embeddings.
¿Qué pasa si mucha gente menciona el bot al mismo tiempo?
Las peticiones extra por encima de 8 concurrentes o 300 por minuto obtienen HTTP 429. Usa un semáforo o cola en el bot para mantenerse por debajo de esos límites.
Tu clave está a un formulario de distancia
Crea una cuenta, copia la clave, cambia la URL base. Esa es toda la configuración.