Inicio > Cursos > IA para Devs > Agentes de IA
IA para DevsIA Avanzada: RAG y AgentesLección 8 de 13

Agentes de IA

Un agente de IA es un LLM al que le das herramientas (funciones) que puede invocar por su cuenta para completar una tarea.

Imagina pedirle a un asistente que "investiga los mejores frameworks de React y me hace un resumen": el agente decide llamar a la herramienta de búsqueda, lee los resultados, llama de nuevo con términos refinados, y finalmente genera el resumen —todo sin que tú intervengas en cada paso. Esto es radicalmente diferente a un chatbot que solo genera texto.

El mecanismo técnico se llama Function Calling (OpenAI) o Tool Use (Anthropic). Defines las herramientas con nombre, descripción y parámetros; el modelo decide cuándo llamarlas, tú ejecutas la función real y devuelves el resultado al modelo, y el ciclo continúa hasta que el modelo considera la tarea completa.

Los peligros son reales: un agente con acceso a ejecutar código, enviar emails o modificar bases de datos puede causar daño si no tiene restricciones claras. Siempre limita qué pueden hacer tus agentes.

// Agente con Tools (Function Calling)
import OpenAI from "openai";

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

// Definir herramientas disponibles para el agente
const herramientas = [
  {
    type: "function",
    function: {
      name: "buscar_web",
      description: "Busca información actualizada en internet",
      parameters: {
        type: "object",
        properties: {
          query: { type: "string", description: "Búsqueda a realizar" }
        },
        required: ["query"]
      }
    }
  },
  {
    type: "function",
    function: {
      name: "ejecutar_codigo",
      description: "Ejecuta código JavaScript y devuelve el resultado",
      parameters: {
        type: "object",
        properties: {
          codigo: { type: "string", description: "Código JS a ejecutar" }
        },
        required: ["codigo"]
      }
    }
  }
];

// Ejecutores de herramientas
async function ejecutarHerramienta(nombre, args) {
  switch (nombre) {
    case "buscar_web":
      // Integra con API de búsqueda real
      return `Resultados de búsqueda para: ${args.query}`;
    case "ejecutar_codigo":
      try {
        return String(eval(args.codigo));
      } catch (e) {
        return `Error: ${e.message}`;
      }
    default:
      throw new Error(`Herramienta desconocida: ${nombre}`);
  }
}

async function agente(tarea) {
  const mensajes = [{ role: "user", content: tarea }];
  
  while (true) {
    const resp = await openai.chat.completions.create({
      model: "gpt-4o",
      messages: mensajes,
      tools: herramientas,
    });
    
    const mensaje = resp.choices[0].message;
    mensajes.push(mensaje);
    
    if (resp.choices[0].finish_reason === "stop") break;
    
    // Ejecutar tool calls
    for (const toolCall of mensaje.tool_calls || []) {
      const resultado = await ejecutarHerramienta(
        toolCall.function.name,
        JSON.parse(toolCall.function.arguments)
      );
      mensajes.push({
        role: "tool",
        tool_call_id: toolCall.id,
        content: resultado
      });
    }
  }
  
  return mensajes.at(-1).content;
}
Consejo🤖 Los agentes son poderosos pero impredecibles. Siempre valida y limita las herramientas disponibles, especialmente las que ejecutan código o acceden a sistemas externos.
← RAG: IA con tu propio conocimientoLangChain y LangGraph →

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