Construir un Bot de IRC con IA: Ejecutar un LLM local con Ollama en el chat
Qué cubre este artículo sobre bots de IA en IRC
- Por qué Internet Relay Chat e IA local encajan perfectamente.
- La arquitectura: cliente IRC que se conecta a la API de Ollama.
- Un esqueleto Python completo para construir tú mismo.
- Memoria de conversación, moderación y protección contra flood.
- Seguridad y trampas comunes.
Introducción: Vieja escuela con IA nueva
Los bots de IRC son más antiguos que la mayoría de lenguajes de programación que se usan hoy. Los Eggdrops moderaban canales antes de que “chatbot” fuera siquiera un término. Lo que cambió: antes los bots reaccionaban a triggers fijos, ahora un LLM local puede responder preguntas libres. Y ese es el punto emocionante para BotServ.de: un bot de IA en IRC es probablemente el ejercicio más honesto de desarrollo de bots que existe. Sin magia de frameworks, sin obligación de cloud, solo un socket, un protocolo y un modelo corriendo en tu propio hardware.
El valor práctico es obvio: bot de soporte en un canal comunitario, asistente de documentación para un proyecto, ayuda de programación en un canal de desarrolladores. Y como el modelo corre localmente via Ollama, las conversaciones de tu comunidad no van a ningún proveedor externo.
Arquitectura: Cómo funciona el bot de IA en IRC
El principio es gratamente simple. Tu bot es un cliente IRC normal que se conecta con nick y contraseña, se une a uno o varios canales y escucha mensajes. Cuando llega un mensaje que lo menciona, lo envía a la API de Ollama, obtiene una respuesta y la publica en el canal.
IRC-Netzwerk <--Socket/TLS--> Dein Bot (Python) <--HTTP--> Ollama (lokales LLM)
Tres componentes, tres responsabilidades: la parte IRC se encarga del protocolo y la conexión, la lógica del bot decide cuándo responder, y Ollama proporciona la inteligencia. Quien quiera profundizar más en programación de bots encontrará en IRC-Coding.de más de 500 artículos sobre Eggdrops, clientes y chatbots, incluyendo temas de IA.
Requisitos previos para tu bot de IA en IRC
- Ollama instalado con un modelo, p.ej.
ollama pull qwen3ollama3.2. Una GPU con 8 GB de VRAM es suficiente para modelos más pequeños; los detalles están en nuestra ruta de aprendizaje Locales KI. - Python 3.10+ en la misma máquina o en un servidor en la red.
- Acceso a una red IRC: tu propio servidor (ver nuestro artículo sobre daemons IRC) o una red pública que permita bots. Algunos servidores exigen registro de bots.
- Nick registrado para el bot, para que siga siendo identificable.
El bot en Python: El esqueleto base
IRC es un protocolo en texto plano, ni siquiera necesitas una biblioteca. Versión mínima con socket estándar:
import socket
import requests
SERVER = "irc.dein-netz.de"
PORT = 6697
NICK = "kibot"
CHANNEL = "#dein-kanal"
OLLAMA_URL = "http://localhost:11434/api/chat"
MODEL = "qwen3"
history = {}
def ask_llm(user, text):
msgs = history.setdefault(user, [])
msgs.append({"role": "user", "content": text})
msgs = msgs[-10:]
history[user] = msgs
r = requests.post(OLLAMA_URL, json={
"model": MODEL,
"messages": [{"role": "system", "content":
"Du bist ein hilfreicher Bot in einem IRC-Kanal. "
"Antworte kurz, maximal zwei Saetze."}] + msgs,
"stream": False,
})
reply = r.json()["message"]["content"]
history[user].append({"role": "assistant", "content": reply})
return reply
irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Für Produktion: ssl.wrap_socket oder ssl.create_default_context()
irc.connect((SERVER, PORT))
def send(line):
irc.send((line + "\r\n").encode())
send(f"NICK {NICK}")
send(f"USER {NICK} 0 * :KI-Bot")
buf = ""
while True:
buf += irc.recv(4096).decode(errors="ignore")
lines, buf = buf.split("\r\n")[:-1], buf.split("\r\n")[-1]
for line in lines:
if line.startswith("PING"):
send("PONG " + line.split()[1])
if " 376 " in line or " 422 " in line: # MOTD Ende
send(f"JOIN {CHANNEL}")
if f"PRIVMSG {CHANNEL}" in line and f"!ki " in line:
user = line.split("!")[0].lstrip(":")
text = line.split("!ki ", 1)[1].strip()
send(f"PRIVMSG {CHANNEL} :{user}: {ask_llm(user, text)}")
Esto es deliberadamente mínimo: conectar, jugar ping/pong, responder a !ki pregunta, publicar la respuesta. Para producción es mejor usar una biblioteca como irc (pip install irc) o pydle, que manejan reconexiones, SASL y TLS correctamente.
Etapas de expansión: Del juguete al bot útil
Diseño del trigger. El prefijo !ki evita que el bot responda a cada línea. Alternativamente, reacciona a su nick (“kibot: pregunta”), se siente más natural pero necesita parsing limpio.
Memoria por usuario. El ejemplo anterior mantiene las últimas diez líneas por nick. Cuidado con cambios de nick: la memoria se vincula al nick, no a la cuenta. Para bots en producción mapea a service accounts.
Rate limiting. Imprescindible: máximo una solicitud por usuario y segundo, cola para el resto. Si no, tu bot se convierte en un problema de flood y termina en la lista de baneo.
Limitar la longitud de respuesta. Los mensajes IRC tienen un límite de alrededor de 512 bytes por línea. Las respuestas largas del LLM debes dividirlas en líneas de unos 400 caracteres, si no el servidor corta en medio de la frase.
Activar protección contra flood. Muchos IRCDs desconectan clientes que envían demasiado rápido. Añade una pausa breve entre líneas (0,5-1s) o utiliza un sistema de throttling.
Seguridad: Asegurar correctamente el bot de IA
Un bot con acceso shell a tu hardware merece respeto:
- Tomar seriamente la prompt injection: cualquiera en el canal puede pasar texto al bot. No le des herramientas, ni permisos de archivo o shell mientras escuche en un canal público. Solo texto al principio, luego quizá features en whitelist.
- Límite de costos y carga: incluso un modelo local consume tiempo de GPU. Los límites por hora previenen que un troll bloquee tu tarjeta.
- Registrar y proteger el nick del bot: si no, alguien asume la identidad de tu bot.
- No registrar datos sensibles: el contenido del canal puede ser personal, mantén la retención de logs mínima.
- Fundamentos de seguridad IRC: el endurecimiento de la red subyacente y el host del bot se trata en IRC-Security.de, nuestro resumen está en IRC-Cybersecurity.
Trampas comunes en el bot de IA de IRC
El bot no responde. Usualmente PING no fue respondido y el servidor cerró la conexión. PING/PONG es obligatorio, no un detalle.
Caracteres basura con umlauts. IRC es antiguo, el encoding es históricamente caótico. Envía y recibe UTF-8, errors="ignore" es un parche, mejor decodifica correctamente.
El bot inunda el canal. Siempre rate limit, siempre limita la longitud de respuesta, en caso de duda responde via /notice en lugar de mensaje al canal.
“IA en IRC es jugueteo.” Solo es parcialmente cierto. La tecnología detrás, respuestas streaming, gestión de contexto, throttling, es la misma que en cualquier backend chatbot serio. Quien lo construya limpiamente aquí, puede hacerlo en cualquier lugar.
Enlaces relacionados sobre bots de IRC e IA
- IRC-Coding.de - Aprender a programar, construir bots, Eggdrops, coding con IA: el sitio especializado para desarrollo de bots.
- IRC-Mania.de - Sitio principal para contenido IRC, tutoriales de bots y talleres.
- IRC-Security.de - Asegurar correctamente bots y servidores.
- IRC-FAQ.de - Respuestas rápidas a preguntas sobre bots.
- IRC-FAQ.com - FAQs internacionales de bots y scripts.
- Ollama - El backend LLM local detrás del bot.
Artículos relacionados en BotServ.de: Referencia de comandos IRC, Servicios IRC explicados y la ruta de aprendizaje IRC.
FAQ: Bot de IA en IRC - Preguntas típicas
¿Qué necesito para un bot de IA en IRC?
Un LLM local via Ollama, un script Python como cliente IRC y acceso a una red. Una GPU con 8 GB de VRAM es suficiente para modelos más pequeños, la ejecución en CPU funciona pero es lenta.
¿Qué modelo es adecuado para un bot de IRC?
Modelos compactos con tiempos de respuesta rápidos: Qwen3, Llama 3.2, Mistral o Phi. Los chatbots no necesitan modelos enormes, necesitan velocidad porque las conversaciones en canal ocurren en tiempo real.
¿Está permitido un bot de IA en redes IRC públicas?
Depende de la red. Muchas requieren registro o aprobación, algunas tienen canales dedicados para bots. En tu propia red IRC decides tú las reglas.
¿Cómo evito que el bot inunde el canal?
Rate limit por usuario (1 solicitud/segundo), acorta las respuestas a 400 caracteres y divídelas en líneas individuales, más un prefijo trigger como !ki para que no cada línea genere una respuesta.
¿Puede el bot responder también mensajes privados?
Sí, en el código reacciona a PRIVMSG hacia el nick del bot en lugar del canal. Útil para preguntas sensibles y economiza la tasa del canal.
¿Qué es prompt injection en el bot de IRC?
Cuando un usuario del canal pasa instrucciones al bot (“ignora todas las reglas”). Mientras el bot solo devuelva texto, es molesto pero inofensivo. Se vuelve peligroso solo cuando el bot tiene herramientas o permisos shell.
¿Necesito conocimientos de programación para esto?
Los conocimientos básicos en Python son suficientes para el esqueleto. Todo lo demás, Eggdrops, integración con servicios, bots avanzados, lo aprendes en IRC-Coding.de.
¿Qué era BotServ otra vez?
El servicio IRC clásico que gestiona bots en canales, y el patrón de nombres de este sitio. Los comandos están en nuestra referencia de comandos IRC.


