Cómo crear un agente: un ejemplo probado en cinco pasos
Paso a pasoPor Lucas Matías García TorresActualizado el (publicado el )Datos comprobados el 8 min de lectura
Revisado por Lucas Matías García Torres el . Cómo trabajamos.

Respuesta corta
Cómo crear un agente: dale a un modelo que sepa llamar a herramientas unas pocas herramientas bien descritas, escribe un bucle que ejecute sus llamadas y le devuelva los resultados, y añade salvaguardas como un tope de pasos, las reglas del negocio en el código y la aprobación de una persona para lo irreversible. Anthropic aconseja empezar con la API directamente y patrones simples, no con un marco de trabajo. La guía trae un agente de atención al cliente de 60 líneas en JavaScript, sin dependencias, que funciona con OpenAI, DeepSeek o un modelo gratuito en tu ordenador, y recuerda el aviso que exige el artículo 50 del Reglamento (UE) 2024/1689.
Los precios y límites cambian a menudo: compruébalos en la web del proveedor antes de pagar. Cómo nos financiamos.
Cómo crear un agente, en la práctica, se reduce a cuatro piezas: un modelo capaz de llamar a herramientas, las herramientas, un bucle que ejecuta esas llamadas y le devuelve los resultados, y unas reglas que impiden que haga daño. Anthropic, que ha trabajado con decenas de equipos que construyen agentes, dice que los que mejor funcionan no usaban marcos de trabajo complejos ni bibliotecas especiales, sino patrones simples que se combinan, y que un agente suele ser solo un modelo de lenguaje usando herramientas en bucle según lo que le devuelve el entorno. Esta guía construye exactamente eso: un agente de atención al cliente en unas 60 líneas de JavaScript, sin dependencias, que funciona con OpenAI, DeepSeek o un modelo gratuito en tu ordenador, más las salvaguardas, el coste y lo que exige la ley europea si habla con clientes.
Paso 1: decide si de verdad necesitas un agente
Anthropic distingue dos tipos de sistema. Los flujos de trabajo combinan modelos y herramientas siguiendo caminos fijados en el código; los agentes dejan que el modelo decida sus propios pasos y qué herramientas usar. Su consejo es buscar la solución más sencilla posible, y recuerda que los sistemas con agentes suelen cambiar velocidad y coste por mejores resultados. Para muchas aplicaciones, dice, basta con una sola llamada al modelo bien preparada, con búsqueda en tus documentos y ejemplos.
Una prueba rápida antes de construir:
- Los pasos son siempre los mismos (resumir, traducir, archivar): monta un flujo, una cadena fija de llamadas. Es más barato y más fácil de probar.
- Los pasos dependen de lo que encuentre el modelo (buscar al cliente, mirar el pedido, decidir si toca reembolso): un agente tiene sentido.
- La tarea es abierta y no sabes cuántos pasos llevará: un agente, con un tope de pasos y una persona que apruebe lo arriesgado.
Si dudas de qué cuenta como agente, lo explicamos en qué es un agente, y n8n vs Zapier vs Make compara la vía sin código para los flujos.
Paso 2: elige el modelo y define las herramientas
Sirve cualquier modelo con llamada a herramientas (también llamada llamada a funciones). La documentación de OpenAI describe el proceso en cinco pasos: envías la petición con las herramientas que puede usar, recibes una llamada a herramienta, ejecutas tu propio código con sus argumentos, devuelves el resultado y recibes la respuesta final o más llamadas. Ese mismo formato de mensajes lo aceptan la API de DeepSeek y, en local, Ollama y llama.cpp, y por eso el ejemplo de abajo funciona con todos.
De las herramientas sale buena parte de la calidad. OpenAI recomienda nombres, descripciones de parámetros e instrucciones claros y detallados, usar las instrucciones del sistema para decir cuándo usar cada una y pasar la «prueba del becario»: ¿podría una persona usar la función bien solo con su descripción? También recomienda el modo estricto, para que las llamadas respeten siempre el esquema. Anthropic lo llama la interfaz entre el agente y el ordenador y pide cuidarla con buena documentación de las herramientas y pruebas.
Si tus herramientas ya existen como servidores MCP (el estándar abierto para conectar aplicaciones de modelos de lenguaje con herramientas y datos), tu agente puede usarlas con un cliente MCP en vez de funciones propias; mira qué es MCP.
Paso 3: escribe el bucle
El ejemplo es el agente de atención al cliente de una tienda pequeña con dos herramientas: una busca los pedidos de un cliente y otra reembolsa un pedido. Guárdalo como agente.mjs y ejecútalo con Node 18 o posterior; no necesita paquetes.
// agente.mjs: un agente mínimo con herramientas (Node 18 o posterior, sin dependencias)
import readline from "node:readline/promises";
const BASE_URL = process.env.BASE_URL ?? "https://api.openai.com/v1";
const MODEL = process.env.MODEL ?? "gpt-6-luna";
const API_KEY = process.env.API_KEY ?? "";
const MAX_PASOS = 8;
// Sustituto de tu base de datos real
const pedidos = { "ana@example.com": [{ id: "A-1001", producto: "Auriculares", total: 79, estado: "entregado", diasDesdeEntrega: 9 }] };
const tools = [
{ type: "function", function: { name: "buscar_pedidos", description: "Lista los pedidos de un cliente a partir de su correo.",
parameters: { type: "object", properties: { email: { type: "string" } }, required: ["email"], additionalProperties: false } } },
{ type: "function", function: { name: "reembolsar_pedido", description: "Reembolsa un pedido por su id. Solo pedidos entregados hace 14 días o menos; una persona debe aprobarlo.",
parameters: { type: "object", properties: { pedido_id: { type: "string" } }, required: ["pedido_id"], additionalProperties: false } } },
];
async function aprobar(pregunta) {
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
const respuesta = await rl.question(`${pregunta} [s/N] `);
rl.close();
return respuesta.trim().toLowerCase() === "s";
}
const ejecutar = {
buscar_pedidos: ({ email }) => pedidos[email] ?? [],
reembolsar_pedido: async ({ pedido_id }) => {
const pedido = Object.values(pedidos).flat().find((p) => p.id === pedido_id);
// La regla vive en el código, no solo en las instrucciones
if (!pedido || pedido.estado !== "entregado" || pedido.diasDesdeEntrega > 14) return { rechazado: "No cumple la política de reembolsos." };
return (await aprobar(`¿Reembolsar ${pedido.id} (${pedido.total} EUR)?`)) ? { reembolsado: pedido.id } : { rechazado: "Una persona ha denegado el reembolso." };
},
};
async function chat(messages) {
const res = await fetch(`${BASE_URL}/chat/completions`, {
method: "POST",
headers: { "Content-Type": "application/json", Authorization: `Bearer ${API_KEY}` },
body: JSON.stringify({ model: MODEL, messages, tools }),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
return (await res.json()).choices[0].message;
}
const messages = [
{ role: "system", content: "Eres el agente de atención al cliente de una tienda pequeña. Usa las herramientas y no inventes datos de pedidos. Si se rechaza un reembolso, explica por qué." },
{ role: "user", content: process.argv[2] ?? "Soy ana@example.com y los auriculares llegaron rotos. ¿Me devolvéis el dinero?" },
];
for (let paso = 1; paso <= MAX_PASOS; paso++) {
const msg = await chat(messages);
messages.push(msg);
if (!msg.tool_calls?.length) {
console.log(msg.content);
process.exit(0);
}
for (const llamada of msg.tool_calls) {
const args = JSON.parse(llamada.function.arguments || "{}");
const herramienta = ejecutar[llamada.function.name];
const resultado = herramienta ? await herramienta(args) : { error: `Herramienta desconocida: ${llamada.function.name}` };
console.log(`[paso ${paso}] ${llamada.function.name}(${JSON.stringify(args)}) => ${JSON.stringify(resultado)}`);
messages.push({ role: "tool", tool_call_id: llamada.id, content: JSON.stringify(resultado) });
}
}
console.log(`Parado tras ${MAX_PASOS} pasos sin respuesta final.`);
Para ejecutarlo, pon tu clave en API_KEY y lanza node agente.mjs. Con DeepSeek, añade BASE_URL=https://api.deepseek.com y MODEL=deepseek-flash. Para probarlo gratis en tu ordenador con Ollama, descarga un modelo que admita herramientas, como qwen3, y usa BASE_URL=http://localhost:11434/v1 y MODEL=qwen3; la instalación está en cómo instalar Ollama.
Cómo lo hemos probado. Ejecutamos el archivo contra un servidor de pruebas local que responde con el formato documentado de Chat Completions: un sustituto con guion fijo, no un modelo real. Pasó las cuatro comprobaciones: el recorrido completo con una persona que aprueba el reembolso, una persona que lo deniega, un pedido que no cumple la política y que el código rechaza antes de preguntar a nadie, y una herramienta desconocida junto a un modelo que no para nunca, cortado a los 8 pasos. Con un modelo real la redacción cambiará, y los modelos locales pequeños llaman a las herramientas con menos acierto que los grandes en la nube.
Paso 4: pon las salvaguardas antes que nada
Anthropic avisa de que la autonomía de los agentes supone más coste y errores que se acumulan, y recomienda probarlos a fondo en entornos aislados y con las salvaguardas adecuadas. El ejemplo trae cuatro:
- Un tope de pasos. Anthropic sugiere condiciones de parada como un número máximo de iteraciones. Aquí son 8.
- Las reglas del negocio, en el código. La regla de los 14 días la comprueba la función, así que un modelo confundido o manipulado no puede saltársela.
- Una persona aprueba lo irreversible. No se reembolsa nada sin una «s» en el teclado; en producción, eso se convierte en una aprobación en tu panel de gestión.
- Se rechazan las herramientas desconocidas, y el modelo solo recibe los datos que devuelven sus herramientas.
De los diez riesgos de OWASP para aplicaciones con modelos de lenguaje (edición 2025), aquí pesan dos: la inyección de instrucciones (LLM01), cuando el texto de un cliente o de una página web intenta darle órdenes nuevas al modelo, y la autonomía excesiva (LLM06), cuando un agente tiene más permisos de los que necesita. La defensa es la misma: el mínimo permiso para cada herramienta y las reglas y aprobaciones fuera del modelo.
Si el agente habla con clientes, avisa de que es una máquina. El artículo 50 del Reglamento (UE) 2024/1689 se aplica desde el 2 de agosto de 2026, y las preguntas y respuestas de la Comisión ponen los chatbots y los agentes como ejemplos de sistemas que interactúan directamente con personas, que deben saber que hablan con una máquina. Las multas llegan a 15 millones de euros o el 3 % del volumen de negocio mundial. Lo explicamos en el artículo 50 del Reglamento.
Paso 5: prueba, calcula el coste y solo después añade un marco de trabajo
Evalúa con casos reales. Reúne de 30 a 50 peticiones reales, incluidas las raras, y revisa la respuesta final del agente y las herramientas que llamó. El resumen de Anthropic es empezar con instrucciones sencillas, mejorarlas con una evaluación completa y añadir sistemas de varios pasos solo cuando lo simple se quede corto.
Calcula el coste por conversación. Cada paso es una llamada completa al modelo, y cada llamada vuelve a enviar toda la conversación. Supón que una conversación media lleva tres llamadas de unos 1.000 tokens de entrada y 100 de salida cada una, y que atiendes 10.000 conversaciones al mes: 30 millones de tokens de entrada y 3 millones de salida. Con los precios de lista del 10 de octubre de 2026, son unos 4,50 dólares al mes con GPT-6 Luna o Claude Haiku 5.5, 12,60 con DeepSeek V4.1 Flash en hora punta y 90 con Claude Sonnet 5.5 o GPT-6.1 Sol, sin contar el razonamiento, que se cobra como salida. Todas cobran en dólares, así que el importe en euros depende del cambio de tu banco. El detalle por proveedor está en nuestra comparativa de precios de las API de modelos y en el precio de la API de DeepSeek.
Añade un marco de trabajo cuando el bucle se complique. Anthropic cita marcos como el Claude Agent SDK y Strands Agents de AWS, y avisa de que suelen añadir capas que esconden las instrucciones y las respuestas y complican la depuración; su consejo es empezar con la API directamente y, si adoptas un marco, entender el código que hay debajo. El Agents SDK de OpenAI tiene muy pocas piezas: agentes con instrucciones y herramientas, traspasos entre agentes, salvaguardas que validan entradas y salidas, y trazas integradas. Pásate a uno de ellos cuando necesites varios agentes, trazas o ejecuciones que se reanudan, no para que funcione el primero.
Qué hemos comprobado
- Building effective agents (Anthropic, 19 de diciembre de 2024): las implementaciones con más éxito usaban patrones simples y combinables, no marcos complejos; los flujos de trabajo orquestan modelos y herramientas por caminos predefinidos y los agentes dirigen sus propios procesos y herramientas; buscar la solución más simple; los sistemas con agentes cambian velocidad y coste por resultados; una sola llamada con búsqueda y ejemplos suele bastar; marcos como el Claude Agent SDK y Strands Agents SDK de AWS pueden añadir capas que esconden instrucciones y respuestas; empezar con las API y entender el código de debajo; los agentes suelen ser modelos usando herramientas en bucle según lo que devuelve el entorno; condiciones de parada como un máximo de iteraciones; más coste y errores acumulados, pruebas en entornos aislados y salvaguardas; cuidar la interfaz agente-ordenador con documentación y pruebas de las herramientas. (Anthropic, )
- Guía de llamada a funciones de OpenAI: proceso en cinco pasos (petición con herramientas, llamada a herramienta, ejecutar código, devolver el resultado, respuesta final o más llamadas); Chat Completions devuelve tool_calls con id, nombre de función y argumentos en JSON, y los resultados vuelven como mensajes role tool con tool_call_id; nombres, descripciones e instrucciones claros, usar las instrucciones del sistema para decir cuándo usar cada función, prueba del becario; el modo estricto hace que las llamadas respeten el esquema y se recomienda. (OpenAI, )
- Agents SDK de OpenAI: muy pocas piezas (agentes con instrucciones y herramientas, agentes como herramientas y traspasos, salvaguardas que validan entradas y salidas), un bucle integrado hasta completar la tarea y trazas integradas. (OpenAI, )
- La ruta /v1/chat/completions de Ollama, compatible con OpenAI, admite herramientas. (Ollama, )
- La familia qwen3 de la biblioteca de Ollama lleva las etiquetas de capacidad tools y thinking, en tamaños de 0.6b a 235b. (Ollama, )
- llama-server admite llamadas a funciones con casi cualquier modelo mediante su API compatible con OpenAI. (ggml-org / llama.cpp, )
- La dirección de DeepSeek en formato OpenAI es https://api.deepseek.com; deepseek-flash admite llamadas a herramientas; V4.1 Flash cuesta 0,30 $ de entrada y 1,20 $ de salida por millón de tokens en hora punta. (DeepSeek, )
- Precios Standard de OpenAI por millón de tokens: GPT-6 Luna 0,10 $ de entrada y 0,50 $ de salida; GPT-6.1 Sol 2 $ y 10 $. (OpenAI, )
- Claude Haiku 5.5 cuesta 0,10 $ de entrada y 0,50 $ de salida por millón de tokens hasta 100.000 tokens de petición; Claude Sonnet 5.5, 2 $ y 10 $. (Anthropic, )
- MCP es un estándar abierto para conectar aplicaciones de modelos de lenguaje con herramientas y datos. (Model Context Protocol, )
- OWASP 2025, diez riesgos para aplicaciones con modelos de lenguaje: inyección de instrucciones (LLM01) y autonomía excesiva (LLM06). (OWASP GenAI Security Project, )
- Preguntas y respuestas de la Comisión sobre el artículo 50 (actualizadas el 24 de julio de 2026): la obligación de los chatbots se aplica cuando hay un sistema del Reglamento, intercambio real en los dos sentidos, interacción directa y personas físicas; los chatbots, los agentes y los avatares son ejemplos; el artículo 50 se aplica desde el 2 de agosto de 2026; multas de hasta 15 millones de euros o el 3 % del volumen de negocio mundial. (Comisión Europea, )
Qué puede cambiar
- Los nombres de modelos, los precios y las funciones de los SDK cambian a menudo; el bucle del ejemplo sigue el formato de llamada a herramientas de Chat Completions, que copian varios proveedores. Revisamos esta página cada trimestre.
- El ejemplo se probó contra un sustituto con guion de la API, no contra un modelo de pago; los modelos reales redactan distinto y los locales pequeños llaman a las herramientas con menos acierto.
Preguntas frecuentes
¿Hace falta un marco de trabajo para crear un agente?
No. Anthropic recomienda empezar con las API de los modelos directamente, porque muchos patrones caben en unas pocas líneas y los marcos pueden esconder las instrucciones y respuestas que necesitas depurar. Un agente que funciona es un modelo con llamada a herramientas, tus herramientas y un bucle.
¿Qué diferencia hay entre un flujo de trabajo y un agente?
Según Anthropic, un flujo de trabajo combina modelos y herramientas siguiendo caminos fijados en el código, y un agente deja que el modelo decida sus propios pasos y herramientas. Los flujos son más baratos y previsibles para tareas fijas; los agentes encajan cuando los pasos dependen de lo que encuentra el modelo.
¿Cuánto cuesta tener un agente funcionando?
Depende del modelo y de los pasos. Para 10.000 conversaciones al mes de tres llamadas, con unos 1.000 tokens de entrada y 100 de salida por llamada, los precios del 10 de octubre de 2026 dan unos 4,50 dólares con GPT-6 Luna o Claude Haiku 5.5 y 90 con Claude Sonnet 5.5, sin contar el razonamiento.
¿Cómo evito que un agente haga algo peligroso?
Pon un tope de pasos, comprueba las reglas del negocio dentro del código de cada herramienta y no solo en las instrucciones, pide aprobación humana para lo irreversible, da a cada herramienta el mínimo permiso y rechaza las herramientas desconocidas. OWASP sitúa la inyección de instrucciones y la autonomía excesiva entre los riesgos principales.
¿Puedo crear un agente gratis?
Sí, para probar. El ejemplo de esta guía funciona con Ollama en tu propio ordenador y un modelo que admita herramientas, como qwen3, a través de su dirección compatible con OpenAI, sin clave ni pago. Los modelos locales pequeños llaman a las herramientas con menos acierto que los grandes en la nube.
¿Qué exige el Reglamento (UE) 2024/1689 a un agente que habla con clientes?
El artículo 50 del Reglamento (UE) 2024/1689, aplicable desde el 2 de agosto de 2026, exige que las personas sepan que interactúan con una máquina; la Comisión pone los chatbots y los agentes como ejemplos. Las multas llegan a 15 millones de euros o el 3 % del volumen de negocio mundial.
Fuentes
- Building effective agents (December 19, 2024): workflows vs agents, patterns, frameworks and guardrails, Anthropic. Consultado el 10 de octubre de 2026.
- Function calling (OpenAI API guide): tool calling flow, handling tool calls, best practices and strict mode, OpenAI. Consultado el 10 de octubre de 2026.
- OpenAI Agents SDK (Python): primitives, agent loop, guardrails and tracing, OpenAI. Consultado el 10 de octubre de 2026.
- Ollama: OpenAI compatibility (chat completions, responses, embeddings, models), Ollama. Consultado el 10 de octubre de 2026.
- Ollama library: qwen3 (capabilities tools and thinking, sizes), Ollama. Consultado el 10 de octubre de 2026.
- llama.cpp HTTP server: features, defaults (context, port, slots, GPU layers) and router mode, ggml-org / llama.cpp. Consultado el 10 de octubre de 2026.
- DeepSeek API: models and pricing (V4.1 Flash and V4 Pro, cache hit and miss, peak and off-peak, concurrency, deduction rules), DeepSeek. Consultado el 10 de octubre de 2026.
- OpenAI API pricing: Standard, Batch, Flex and priority tables for GPT-6 models, OpenAI. Consultado el 10 de octubre de 2026.
- Claude API pricing: models (Sonnet 5.5 cache reads at 0.05x, Haiku 5.5 with its 100K-token tier), prompt caching, batch, long context and tokenizer note, Anthropic. Consultado el 10 de octubre de 2026.
- What is the Model Context Protocol (MCP)?, Model Context Protocol. Consultado el 6 de octubre de 2026.
- OWASP Top 10 for LLM Applications 2025, OWASP GenAI Security Project. Consultado el 6 de octubre de 2026.
- Obligaciones de transparencia del artículo 50 del Reglamento (UE) 2024/1689: preguntas y respuestas (versión en español, última actualización 24 de julio de 2026), Comisión Europea. Consultado el 6 de octubre de 2026.
¿Has visto un error o un dato desactualizado? Avísanos y lo corregimos.
Historial de cambios
- : Redacción revisada; no cambia ninguna cifra, fecha ni fuente.
- : Primera publicación. Recomendaciones comprobadas en la guía de agentes de Anthropic, la documentación de llamada a funciones y del Agents SDK de OpenAI y la página de compatibilidad de Ollama el 10 de octubre de 2026; código de ejemplo probado ese día contra un sustituto local de la API de Chat Completions (4 de 4 comprobaciones).
Próxima revisión: .
Más guías de Agentes y automatización.
Sigue leyendo
- Qué es un agente y para qué sirve en una empresa
Qué es un agente, en qué se diferencia de un chatbot, cómo trabaja paso a paso, ejemplos útiles en una empresa y qué riesgos tiene antes de ponerlo en marcha.
- Qué es MCP (Model Context Protocol)
Qué es el Model Context Protocol, cómo funcionan hosts, clientes y servidores, qué son herramientas, recursos y prompts y qué reglas de seguridad fija.
- n8n vs Make vs Zapier: cuál sale más barato para tus automatizaciones
n8n vs Make vs Zapier: ejecuciones, tareas y créditos explicados, precios de cada plan, el mismo flujo con tres precios, agentes, MCP y servidor propio.
- Precios de las API de modelos comparados, con calculadora de costes
Precios de las API de OpenAI, Anthropic, Google y DeepSeek por millón de tokens, más una calculadora con caché, descuentos por lotes y tokenizadores.
- Precio de la API de DeepSeek: cuánto cuestan V4.1 Flash y V4 Pro, y cuándo a mitad de precio
Precios por millón de tokens de DeepSeek V4.1 Flash y V4 Pro, con caché, hora valle en horario de España, razonamiento y un ejemplo de coste mensual.
- Transparencia del artículo 50: reglas para chatbots, contenido generado y deepfakes
Qué exige la transparencia del artículo 50 del Reglamento (UE) 2024/1689: avisar de que habla una máquina, marcar lo generado y etiquetar deepfakes.
Otros temas

Asistentes y chatbots
16 guías

APIs de modelos y costes
11 guías

Modelos en local
11 guías

Modelos explicados
14 guías