Cómo crear un agente de IA con Python desde cero
TL;DR
Aprende a crear un agente de IA con Python desde cero: entorno con venv e instalación de la API de OpenAI, el bucle de agente con tool calling, funciones como herramientas, memoria simple en contexto y cuándo conviene migrar a frameworks como el Agents SDK. Sin frameworks ocultos: código real, paso a paso, listo para extender.

Por qué importa
Esta nota se enfoca en la decisión práctica para builders: qué cambia, qué riesgo agrega y cómo aplicarlo sin romper operación.
Un agente de IA no es un chatbot con mejor tono: es un programa que decide qué hacer para completar una tarea. La diferencia práctica está en el bucle: el modelo recibe una petición, decide si necesita llamar una herramienta (consultar una base, calcular, buscar), ejecuta esa llamada, recibe el resultado y vuelve a razonar hasta terminar. Esa mecánica se puede escribir en Python con unas cuantas líneas, sin frameworks. Esta guía te lleva desde pip install hasta un agente con tool calling, memoria simple y criterios claros para saber cuándo conviene pasar a un framework.
Qué es un agente (y qué no es)
Un chatbot responde: recibe un mensaje y devuelve texto. Un agente actúa: tiene herramientas, las elige según la tarea y encadena pasos hasta producir un resultado. La pieza central es el agente loop: enviar el mensaje, inspeccionar la respuesta, ejecutar las herramientas que el modelo pidió y repetir hasta que el modelo decida terminar.
Sin ese bucle tienes un chat bonito. Con el bucle tienes algo que resuelve tareas: responder con datos reales de tu base, enviar correos, generar reportes. La buena noticia: el bucle son unas veinte líneas.
Paso 1: entorno y dependencias
Usa un entorno virtual para no contaminar tu Python del sistema y una API que soporte tool calling (OpenAI, Anthropic, Gemini; este ejemplo usa OpenAI).
python3 -m venv .venv
source .venv/bin/activate
pip install openai
Guarda tu clave como variable de entorno, nunca en el código:
export OPENAI_API_KEY="tu-clave"
Paso 2: la primera llamada
from openai import OpenAI
client = OpenAI()
respuesta = client.responses.create(
model="gpt-4.1-mini",
input="Escribe una frase de bienvenida para un agente de soporte.",
)
print(respuesta.output_text)
Si esto corre, tienes el 30% del camino. El resto es darle al modelo la capacidad de hacer cosas, no solo de hablar.
Paso 3: el bucle del agente con tool calling
Defines una función de Python y se la describes al modelo con un schema JSON: nombre, descripción y argumentos. Cuando la tarea lo requiera, el modelo devuelve una llamada estructurada a esa herramienta en lugar de texto; tu código la ejecuta y devuelve el resultado al modelo.
import json
from openai import OpenAI
client = OpenAI()
def consultar_stock(sku: str) -> str:
# En producción esto consulta tu base o tu ERP
stock = {"A-100": 23, "B-200": 4, "C-300": 0}
return json.dumps({"sku": sku, "stock": stock.get(sku, 0)})
tools = [{
"type": "function",
"name": "consultar_stock",
"description": "Consulta el stock disponible de un producto por su SKU",
"parameters": {
"type": "object",
"properties": {"sku": {"type": "string"}},
"required": ["sku"],
},
}]
mensajes = [{"role": "user", "content": "¿Cuántas unidades hay del A-100?"}]
while True:
respuesta = client.responses.create(
model="gpt-4.1-mini",
input=mensajes,
tools=tools,
)
if respuesta.output:
llamadas = [o for o in respuesta.output if o.type == "function_call"]
if llamadas:
for llamada in llamadas:
argumentos = json.loads(llamada.arguments)
resultado = consultar_stock(argumentos["sku"])
mensajes.append({
"role": "user",
"content": [
{
"type": "function_call_output",
"call_id": llamada.call_id,
"output": resultado,
}
],
})
continue
print(respuesta.output_text)
break
Eso es el agente. Observa el patrón: el modelo no ejecuta nada, solo pide; tu código ejecuta y devuelve. Por eso las herramientas son seguras: tú controlas qué se ejecuta, con qué permisos y qué se registra.

Paso 4: memoria simple
La memoria mínima es el historial de mensajes: cada turno envía todo lo anterior para que el modelo tenga contexto. Funciona hasta que el historial crece y el costo y la latencia suben. Dos técnicas para controlarlo:
- Poda: conservar los últimos N mensajes y resumir los antiguos en un párrafo que se reinyecta como contexto.
- Memoria por tarea: guardar en un archivo o base los hechos relevantes (preferencias, IDs, decisiones) y cargarlos solo cuando la tarea los necesita, en lugar de arrastrar toda la conversación.
Para un primer agente, la poda simple es suficiente: si el historial supera un límite, resumir con el mismo modelo y seguir. Más adelante puedes migrar a memoria vectorial o a una base real cuando el volumen lo justifique.
Cuándo pasar a un framework
Tu bucle manual está bien para aprender y para agentes simples. Cuando empieces a necesitar paralelismo, herramientas que se llaman entre sí, reintentos, guardado de estado o supervisión, un framework te ahorra reescribir lo que ya está resuelto:
- OpenAI Agents SDK: el mismo stack de OpenAI con agentes declarativos, handoffs y guardrails; natural si ya usas la API de OpenAI.
- LangChain/LangGraph: ecosistema amplio de integraciones y grafos de agentes.
- n8n o Make: si no quieres mantener código, el agente vive en un flujo visual con el mismo concepto de herramientas.
La regla práctica: empieza manual para entender el bucle, migra al framework cuando el segundo agente del proyecto llegue, no antes. El curso gratuito de instalación te deja el primer agente funcionando con el framework de OpenAI para comparar ambos estilos, y la guía de function calling para agentes confiables cubre los errores de diseño de herramientas que debes evitar desde el día uno.
Verificación de tu agente

- El agente responde con datos reales de la herramienta, no inventados.
- El bucle termina: el modelo deja de llamar herramientas cuando la tarea está completa.
- Los errores de la herramienta se devuelven al modelo como texto (así puede corregirse o pedir datos faltantes).
- El historial no crece sin límite: poda o resumen funcionando.
- La clave de API vive en el entorno, nunca en el repositorio.
Con eso tienes un agente real en Python, sin magia ni frameworks ocultos. El siguiente paso natural es conectarle más herramientas vía MCP: la guía de MCP con Python para conectar APIs y bases de datos muestra cómo exponer tus sistemas existentes como herramientas sin reescribirlos. Y para el resto del camino hacia producción, el hub de guías de construcción de agentes reúne arquitectura, memoria, RAG y despliegue en un solo lugar.
Artículos relacionados
Sigue explorando Frameworks y otras lecturas para builders.

Google mete Agents API en Genkit: el cambio útil es dejar de reconstruir chat, tools y estado en cada app

Mejores agentes de código IA en 2026: cómo elegir sin copiar un ranking

Qué es un agente de IA: guía práctica para builders
