Desarrollo de Agentes con OpenAI
Con esta formación aprenderás a desarrollar agentes dentro de OpenAI abordando temas muy relevantes como la generación de...

Los agentes eficaces combinan buen contexto, herramientas bien elegidas y límites claros. En este artículo construirás un agente con la API de OpenAI, aprenderás a darle memoria y a conectarlo con funciones externas, y cerrarás con pruebas controladas y guardrails. Todo con un enfoque práctico para que puedas iterar rápido en tu entorno y validar valor de negocio sin fricción.
Tabla de contenidos
Crear un agente con la API de OpenAI puede parecer algo complejo al principio, pero la realidad es que con una estructura clara y unos pocos pasos básicos es posible tenerlo funcionando en poco tiempo. Los agentes no son simples prompts: combinan un modelo con memoria, herramientas y un propósito definido que los hace más versátiles y eficaces.
En este artículo encontrarás una guía paso a paso para construir tu primer agente desde cero. Veremos cómo definir su rol, configurar el modelo, añadirle herramientas y memoria, y finalmente validarlo para asegurarnos de que responde de forma coherente y útil. Todo explicado de manera práctica y con ejemplos que puedes replicar en tu propio entorno.
Y si más adelante quieres profundizar en escenarios más complejos, te recomiendo revisar esta guía sobre la orquestación de múltiples agentes en OpenAI, donde exploramos cómo hacer que varios agentes trabajen juntos de forma coordinada.
Antes de ponernos a crear nuestro primer agente, conviene entender qué significa realmente este concepto dentro del ecosistema de OpenAI y qué lo diferencia de un simple modelo de lenguaje. Tener claras estas bases hará que los siguientes pasos resulten mucho más intuitivos.
Un agente en OpenAI es más que un modelo que responde a prompts: combina un modelo de lenguaje con un conjunto de herramientas, memoria y lógica de control que le permiten ejecutar tareas complejas de manera autónoma. Mientras que un prompt aislado solo devuelve una respuesta, un agente puede encadenar decisiones, consultar información externa y mantener coherencia en una interacción más larga.
La diferencia práctica es clara: un modelo responde a lo que le preguntes en ese momento, mientras que un agente puede actuar con propósito, recordar contexto y tomar decisiones sobre qué herramienta usar en cada caso. Esto lo convierte en un bloque mucho más cercano a una aplicación funcional que a un simple experimento.
Los agentes encuentran aplicación en múltiples escenarios. Por ejemplo, en soporte al cliente, un agente puede responder dudas frecuentes y escalar los casos complejos a un humano. En análisis de datos, puede consultar una base, aplicar filtros y devolver un resumen. Y en procesos internos, puede coordinar integraciones entre sistemas (como CRM, ERP o plataformas de marketing) sin intervención manual.
En mi experiencia, lo más valioso es que permiten reducir tareas repetitivas y liberar tiempo de los equipos para actividades de mayor valor. Cuando un agente está bien configurado, se convierte en un “colaborador digital” capaz de ejecutar procesos rutinarios con gran fiabilidad.
Usar agentes ofrece ventajas evidentes respecto a depender solo de prompts estáticos. La primera es la automatización: pueden encadenar acciones y acceder a múltiples fuentes de información sin que el usuario lo pida explícitamente. La segunda es la coherencia, ya que gracias a la memoria mantienen el hilo de la conversación y recuerdan decisiones pasadas. Y la tercera es la escalabilidad, porque al orquestar varios agentes se pueden cubrir procesos más amplios y complejos.
Esto significa que, mientras que los prompts sirven para experimentación rápida, los agentes representan el paso natural hacia aplicaciones de IA más robustas y adaptadas a entornos empresariales. Entender esta diferencia es clave para sacarles partido desde el primer prototipo.
Antes de comenzar a escribir código, es fundamental asegurarse de que el entorno está preparado y de que tenemos claros los aspectos básicos. Estos preparativos no solo facilitan el arranque, también evitan errores habituales que suelen frenar los primeros intentos con la API de OpenAI.
Para trabajar con la API de OpenAI necesitarás conocimientos básicos de Python o JavaScript, ya que son los lenguajes con librerías más maduras. También es importante contar con un entorno de desarrollo bien configurado, que puede ser desde un simple editor como VS Code hasta notebooks en la nube como Google Colab o Jupyter.
En mi experiencia, lo más recomendable al inicio es montar un entorno virtual en Python e instalar ahí las dependencias necesarias. Esto aísla tu proyecto y te evita conflictos con otras librerías que tengas instaladas en el sistema.
El acceso a la API se realiza mediante una clave privada que debes generar desde el panel de OpenAI. Esta clave es única para tu cuenta y debe gestionarse con cuidado. Una vez la tengas, puedes instalar el SDK oficial de OpenAI con un simple pip install openai
.
Existen además librerías complementarias que facilitan el desarrollo de agentes, como langchain
o llama-index
, aunque para este primer agente nos centraremos en las funcionalidades básicas del SDK oficial. Familiarizarte con la documentación de OpenAI API será clave para avanzar con seguridad.
Uno de los errores más comunes al empezar es exponer la clave de la API en repositorios públicos o en el propio código fuente. Para evitarlo, lo ideal es almacenarla en un archivo .env
y cargarla en tu aplicación mediante librerías como python-dotenv
. Otra práctica recomendable es generar claves separadas por entorno (desarrollo, pruebas, producción) y rotarlas periódicamente.
Además, en entornos corporativos, conviene integrarlas en un gestor de secretos (como Vault o AWS Secrets Manager). De este modo, evitas que credenciales sensibles queden expuestas y garantizas un uso más seguro y escalable en el tiempo.
El primer paso para crear un agente con OpenAI no es escribir código, sino definir con claridad qué rol cumplirá y qué objetivos tendrá dentro de tu organización o proyecto. Esta decisión inicial condiciona las herramientas que necesitará, la forma de interactuar y hasta los criterios de validación posteriores.
El rol actúa como la brújula del agente: determina cómo debe comportarse y qué tipo de tareas puede ejecutar. Un rol bien definido permite que el agente responda con consistencia y reduzca la ambigüedad en sus interacciones. En la práctica, he visto que los agentes con un rol difuso tienden a generar respuestas poco útiles o a perder foco rápidamente.
Definir el rol es, en esencia, escribir un contrato de comportamiento. Por ejemplo, un agente con rol de “asistente legal” sabrá priorizar exactitud y referencias normativas, mientras que uno con rol de “consultor de marketing” estará orientado a creatividad y propuestas estratégicas.
Los roles más comunes en la creación de agentes suelen ser:
Cada rol requiere un diseño distinto. Por ejemplo, en un proyecto real trabajé con un agente analista que debía generar reportes financieros semanales; su rol estaba limitado a consultas y resúmenes de datos, evitando divagaciones. Esto demostró que un rol bien acotado facilita resultados consistentes.
El rol no debe definirse en abstracto, sino en relación con un caso de negocio concreto. Pregúntate: ¿qué problema estoy intentando resolver? ¿qué proceso quiero mejorar? ¿qué tareas repetitivas podría asumir el agente?
En mi experiencia, la forma más eficaz de diseñar un rol es pensar en un caso de uso de alto impacto pero bajo riesgo. Por ejemplo, en vez de lanzar un agente directamente en atención al cliente externo, comenzar con un agente interno que asista al equipo de soporte revisando documentación o generando borradores de respuestas. Así reduces riesgos, validas el valor real y ajustas el comportamiento antes de escalar.
Una vez definido el rol del agente, el siguiente paso es elegir el modelo más adecuado y realizar la configuración inicial. Este punto es crucial porque cada modelo ofrece un equilibrio distinto entre coste, capacidad y velocidad de respuesta.
Actualmente, OpenAI ofrece varios modelos optimizados para diferentes casos. El más avanzado y versátil es GPT-5, que destaca por su capacidad de razonamiento complejo, velocidad y eficiencia en tareas diversas. También están disponibles modelos más ligeros y económicos, adecuados para agentes que realizan funciones acotadas o de bajo consumo de recursos.
La elección depende del caso de negocio: para un agente analista que debe procesar grandes volúmenes de información y dar respuestas precisas, GPT-5 es la opción recomendada. Para prototipos rápidos o tareas internas menos críticas, puede bastar con un modelo más económico.
Para elegir correctamente, conviene comparar las versiones actuales más utilizadas de OpenAI según su coste, velocidad y capacidades. La siguiente tabla resume los puntos clave:
Modelo | Capacidades principales | Cuándo usarlo | Coste relativo |
---|---|---|---|
GPT-5 | Razonamiento complejo, contexto amplio, integración fluida | Casos críticos de negocio, análisis complejos, agentes con memoria | Alto |
GPT-4.1-mini | Ligero, rápido, adecuado para prototipos o tareas simples | Agentes internos de bajo riesgo, prototipos, automatización básica | Bajo |
GPT-4.1 | Buen balance entre precisión y coste | Aplicaciones con carga media, proyectos donde importa la velocidad | Medio |
En mi experiencia, lo más eficaz es empezar con un modelo ligero para prototipos internos y, cuando el agente demuestre valor real, migrar a GPT-5 para producción. Este enfoque equilibra costes con resultados y permite iterar más rápido.
Además del modelo, hay parámetros que permiten afinar cómo se comporta el agente:
En la práctica, suelo comenzar con una configuración conservadora (temperature baja y límites razonables de tokens) y ajustar según las necesidades del caso real.
El clásico primer paso es probar que la API responde correctamente con una petición básica. Aquí dejamos el espacio para tu primer ejemplo de código:
# "Hola mundo" con la API de OpenAI (Python, Responses API)
# pip install openai python-dotenv
from openai import OpenAI
from dotenv import load_dotenv
import os
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
resp = client.responses.create(
model="gpt-5",
input=[{"role": "user", "content": [{"type": "text", "text": "Di 'hola mundo' en una sola línea."}]}]
)
print(resp.output_text)
Un agente no se limita a responder texto: su verdadero valor surge cuando puede usar herramientas externas o integradas para ejecutar acciones más allá de la conversación. Esto le permite consultar información en tiempo real, ejecutar código o interactuar con sistemas corporativos.
OpenAI ofrece herramientas internas que se pueden habilitar al configurar el agente. Entre ellas están la búsqueda en contexto, la ejecución de código o la navegación en web. Activarlas le da al agente la capacidad de ampliar sus respuestas con datos actualizados o cálculos dinámicos.
En la práctica, estas herramientas son muy útiles para agentes que deben resolver problemas técnicos, generar informes o validar información en tiempo real.
La función más potente es el function calling, que permite conectar el agente con APIs externas o servicios internos. Con esta técnica defines qué funciones tiene disponibles el agente y en qué formato debe invocarlas.
Ejemplo: puedes conectar el agente a la API de tu CRM para que consulte fichas de clientes, o a un servicio de facturación para emitir reportes de ventas.
# Function calling (tool calling) mínimo con Responses API
# Nota: Ejemplo abreviado; la lógica de parseo/ejecución se omite por brevedad.
from openai import OpenAI
client = OpenAI()
tools = [{
"type": "function",
"function": {
"name": "get_order_status",
"description": "Estado del pedido por ID",
"parameters": {
"type": "object",
"properties": {"order_id": {"type": "string"}},
"required": ["order_id"]
}
}
}]
# 1) Llamada inicial: el modelo puede pedir invocar la función
res = client.responses.create(
model="gpt-5",
input=[{"role": "user", "content": [{"type": "text", "text": "Estado del pedido ABC123"}]}],
tools=tools
)
# Aquí iría tu manejo de tool-calls (ejecución real de get_order_status)
# ...
# 2) (Opcional) Segunda llamada devolviendo resultados al modelo:
# final = client.responses.create(model="gpt-5", input=[...], tool_results=[...])
# print(final.output_text)
# Si no hubo tool-calls, simplemente:
print(res.output_text)
Imagina un agente de soporte que recibe una consulta sobre el estado de un pedido. Con function calling, el agente puede:
get_order_status(order_id)
.Este enfoque transforma al agente en un intermediario inteligente que no solo conversa, sino que resuelve acciones concretas.
Uno de los elementos que más diferencia a un agente de un simple prompt es su capacidad de mantener memoria. Esto le permite recordar información de interacciones previas y dar continuidad a las conversaciones, algo fundamental cuando queremos que el agente sea útil en procesos de negocio reales.
Existen varios enfoques de memoria según el caso:
En mi experiencia, la clave está en definir qué debe recordar y qué no. Por ejemplo, en un agente de soporte es útil que recuerde los datos del cliente durante una sesión, pero no tiene sentido que guarde todas las conversaciones para siempre. Limitar y gestionar bien la memoria evita ruido y mejora la coherencia.
Los modelos tienen un límite en la cantidad de tokens que pueden procesar. Para manejar contextos largos puedes usar estrategias como:
Con estas técnicas, los agentes mantienen la coherencia sin saturar la capacidad del modelo.
# Memoria sencilla con resumen corto (Python, Responses API)
# Idea: mantenemos un "summary" breve que viaja en cada petición.
# pip install openai python-dotenv
from openai import OpenAI
from dotenv import load_dotenv
import os
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# Estado de memoria (en producción: guarda/recupera por usuario/sesión desde BD)
memory_summary = "Aún no hay memoria relevante."
def chat_with_memory(user_text: str) -> str:
global memory_summary
# 1) Respuesta del agente usando la memoria actual
resp = client.responses.create(
model="gpt-5",
input=[
{"role": "system", "content": [
{"type": "text", "text": (
"Eres un agente útil y conciso. "
f"Memoria de contexto: {memory_summary}"
)}
]},
{"role": "user", "content": [{"type": "text", "text": user_text}]}
]
)
answer = resp.output_text
# 2) Actualizamos la memoria con un resumen ultracorto (1–2 frases)
updater = client.responses.create(
model="gpt-5",
input=[{
"role": "user",
"content": [{
"type": "text",
"text": (
"Resumena en 1–2 frases la información estable y útil para "
"futuras interacciones (ignora saludos o trivialidades). "
f"Memoria anterior: {memory_summary}\n\n"
f"Nueva interacción:\nUsuario: {user_text}\nAgente: {answer}"
)
}]
}]
)
memory_summary = updater.output_text.strip()
return answer
# Ejemplo rápido
print(chat_with_memory("Me llamo Ana y trabajo en marketing."))
print(chat_with_memory("Recuérdame qué te conté de mí."))
# Nota:
# - En producción, guarda `memory_summary` por usuario/sesión en tu base de datos.
# - Limita longitud y purga datos sensibles según tus políticas.
Llegados a este punto ya tienes un agente con rol definido, modelo configurado, herramientas y memoria. El siguiente paso es asegurarte de que funciona de manera consistente y fiable. Para ello conviene realizar pruebas sistemáticas y documentar los resultados.
Empieza con un conjunto de prompts de prueba que representen los casos de uso más frecuentes. Esto te permitirá comprobar si el agente responde con la coherencia esperada. Anota cualquier desviación o error y clasifícalo según su gravedad.
En mi experiencia, es útil crear una pequeña “batería de regresión”: un grupo de pruebas que repites cada vez que cambias parámetros o añades funciones nuevas. Así evitas introducir fallos sin darte cuenta.
Para entender qué ocurre dentro del agente, es fundamental activar trazas y logs. OpenAI ofrece herramientas para inspeccionar la interacción paso a paso: qué prompt se envió, qué tokens consumió y qué herramienta invocó. Registrar estos datos en tu aplicación te ayudará a depurar comportamientos inesperados.
Antes de desplegar un agente en un entorno real, conviene definir criterios claros de validación, como:
Con estos criterios validados, podrás avanzar con confianza hacia un despliegue controlado.
# Pruebas básicas y logging para validar un agente (Python)
# pip install openai python-dotenv
import os
import re
import time
import logging
from openai import OpenAI
from dotenv import load_dotenv
# Configuración de logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(message)s"
)
# Cliente OpenAI
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# Batería mínima de pruebas de regresión
TESTS = [
{
"name": "Respuesta factual breve",
"prompt": "Di 'hola mundo' y nada más.",
"expect_re": r"\bhola mundo\b"
},
{
"name": "Consistencia de rol",
"prompt": "Eres un asistente técnico. Explica en 1 frase qué es un agente.",
"expect_re": r"agente.+(herramientas|memoria|rol|tareas)",
},
{
"name": "Robustez ante entrada ambigua",
"prompt": "No entiendo nada, ¿puedes ayudar?",
"expect_re": r"(claro|ayudar|puedo|cómo|pasos)",
},
]
def call_agent(prompt: str) -> str:
"""Llamada mínima al agente vía Responses API."""
resp = client.responses.create(
model="gpt-5",
input=[{"role": "user", "content": [{"type": "text", "text": prompt}]}]
)
return resp.output_text
def run_test(test: dict) -> dict:
"""Ejecuta una prueba y devuelve métricas básicas."""
t0 = time.time()
error = None
text = ""
try:
text = call_agent(test["prompt"])
except Exception as e:
error = str(e)
latency_ms = round((time.time() - t0) * 1000)
passed = False
if error is None and text:
if "expect_re" in test and test["expect_re"]:
passed = re.search(test["expect_re"], text, flags=re.I) is not None
else:
passed = len(text.strip()) > 0
logging.info(
"Prueba: %s | ok=%s | latency=%dms | snippet=%s",
test["name"], passed, latency_ms, (text[:120] + "…") if text else "—"
)
return {
"name": test["name"],
"ok": passed and error is None,
"latency_ms": latency_ms,
"error": error,
"snippet": text[:200] if text else ""
}
def run_suite(tests: list[dict]) -> None:
results = [run_test(t) for t in tests]
oks = sum(1 for r in results if r["ok"])
fails = len(results) - oks
p95 = sorted(r["latency_ms"] for r in results)[int(len(results) * 0.95) - 1] if results else 0
print("\n=== Resumen de validación ===")
print(f"Total: {len(results)} | OK: {oks} | Fails: {fails}")
print(f"Latencia p95 aproximada: {p95} ms")
if fails:
print("\nFallos:")
for r in results:
if not r["ok"]:
print(f"- {r['name']} | error={r['error'] or 'patrón no encontrado'} | snippet={r['snippet']}")
if __name__ == "__main__":
run_suite(TESTS)
pip install --upgrade openai python-dotenv
..env
con la variable OPENAI_API_KEY
o en el entorno del sistema.gpt-5
salvo que quieras probar un modelo más ligero (gpt-4.1
, gpt-4.1-mini
).tool_results
).expect_re
) a tus prompts reales para que la validación sea útil.Estos códigos son ejemplos prácticos de referencia. Antes de usarlos en producción, adáptalos a la arquitectura de tu aplicación y aplica tus políticas de seguridad y costes.
Crear un agente funcional es solo el inicio. Para que resulte útil en entornos reales, conviene pensar en cómo escalar, integrarlo en sistemas corporativos y asegurar que se mantenga fiable en el tiempo. Aquí te comparto algunas buenas prácticas basadas en experiencia directa.
Un agente aislado puede ser muy útil, pero su verdadero potencial se multiplica cuando se coordina con otros. La orquestación de múltiples agentes permite dividir procesos complejos en tareas más pequeñas y especializadas, como si fueran distintos miembros de un equipo.
Ejemplo: un agente analista que prepara informes financieros puede trabajar en paralelo con un agente validador que revisa coherencia de datos antes de entregarlos.
El siguiente paso lógico tras un prototipo es integrar el agente en el ecosistema de la empresa. Esto implica conectarlo con bases de datos internas, APIs de CRM, ERP u otros sistemas críticos. Cuanto más fluida sea la integración, mayor será el retorno de inversión.
En mi experiencia, los despliegues más exitosos son aquellos que empezaron resolviendo una necesidad muy concreta y luego ampliaron integración paso a paso, validando en cada etapa.
Antes de dar el salto a producción, asegúrate de cumplir con estos puntos:
De mi experiencia, tres consejos marcan la diferencia:
Con estos pasos, tu agente pasará de ser un prototipo prometedor a una solución fiable en tu organización.
Crear tu primer agente con la API de OpenAI no es solo un ejercicio técnico, sino una forma de comprender cómo la inteligencia artificial puede integrarse en procesos reales. Desde la definición del rol hasta la validación final, cada paso suma para que el agente tenga un propósito claro y aporte valor tangible.
El recorrido que hemos seguido demuestra que no basta con lanzar prompts aislados: los agentes requieren memoria, herramientas y criterios de validación para ser realmente útiles. Esa combinación es la que convierte un experimento en una solución aplicable dentro de una organización.
Lo más importante es que la construcción de agentes es un proceso iterativo. Empieza con un prototipo sencillo, valida su impacto y añade complejidad solo cuando esté justificado. De esta forma, podrás avanzar con confianza hacia escenarios más ambiciosos, como la orquestación de múltiples agentes o la integración con sistemas corporativos.
También te puede interesar
Con esta formación aprenderás a desarrollar agentes dentro de OpenAI abordando temas muy relevantes como la generación de...
Esta formación está enfocada en el uso de agentes de IA para optimizar flujos de trabajo. Se aprenderá...
Esta formación está diseñada para brindar a los participantes un profundo conocimiento sobre el modelo GPT (Generative Pretraining...
¿Podría la IA automatizar procesos de forma autónoma y adaptativa? Con los agentes inteligentes, la respuesta es sí. A diferencia de los...