Inicio > Cursos > IA para Devs > Construye tu Chatbot con IA
IA para DevsAPIs de IA para DesarrolladoresLección 6 de 13

Construye tu Chatbot con IA

Un chatbot con IA tiene una ilusión de memoria, pero en realidad los LLMs son "sin estado" —no recuerdan nada entre llamadas. La memoria se simula enviando el historial completo de conversación en cada request: imagina que cada vez que hablas con alguien, tienes que mostrarle toda la conversación anterior como recordatorio.

Esto funciona bien, pero tiene un límite: la ventana de contexto del modelo. Por eso debes mantener el historial acotado.

Este patrón —clase con historial + system prompt + limit de mensajes— es literalmente la base de ChatGPT, Claude.ai, y cualquier chatbot de IA que hayas usado. El system prompt define la personalidad del bot: si dices "eres un asistente amable de soporte técnico que responde en español con paciencia", el modelo actuará así consistentemente. Cuanto más específico sea el system prompt (tono, restricciones, formato), más predecible y útil será el chatbot.

// Chatbot con memoria de conversación
import OpenAI from "openai";

const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

class ChatbotIA {
  constructor(sistemaPrompt, maxHistorial = 20) {
    this.sistemaPrompt = sistemaPrompt;
    this.historial = [];
    this.maxHistorial = maxHistorial;
  }
  
  async enviar(mensajeUsuario) {
    // Agregar al historial
    this.historial.push({
      role: "user",
      content: mensajeUsuario
    });
    
    // Mantener historial acotado (evita exceder contexto)
    if (this.historial.length > this.maxHistorial) {
      this.historial = this.historial.slice(-this.maxHistorial);
    }
    
    const respuesta = await openai.chat.completions.create({
      model: "gpt-4o-mini",
      messages: [
        { role: "system", content: this.sistemaPrompt },
        ...this.historial
      ],
      temperature: 0.7,
    });
    
    const respuestaIA = respuesta.choices[0].message.content;
    this.historial.push({ role: "assistant", content: respuestaIA });
    return respuestaIA;
  }
  
  limpiar() { this.historial = []; }
}

// Chatbot de soporte técnico
const soporte = new ChatbotIA(`
  Eres un asistente de soporte técnico de una app de aprendizaje.
  Ayudas con: errores de código, conceptos de programación, y problemas técnicos.
  Eres amable, paciente y explicas con ejemplos.
  Si no sabes algo, lo dices honestamente.
  Responde SIEMPRE en español.
`);

async function main() {
  const r1 = await soporte.enviar("¿Cómo funciona async/await en JavaScript?");
  console.log("Bot:", r1);
  
  const r2 = await soporte.enviar("Dame un ejemplo práctico"); // Recuerda el contexto
  console.log("Bot:", r2);
}
Consejo🗃️ La "memoria" del chatbot es simplemente el historial de mensajes enviado en cada request. Los LLMs son stateless: no recuerdan nada entre llamadas.
← Anthropic Claude APIRAG: IA con tu propio conocimiento →

Practica esta lección

Resuelve los ejercicios del curso de IA para Devs en la app, gratis y con corrección automática.

Empezar a practicar