Agentes de IA con Uso de Herramientas
Construye agentes de IA autónomos que pueden usar herramientas y APIs externas para completar tareas complejas.
Nota para desarrolladores hispanohablantes: Esta guía incluye ejemplos y convenciones de nomenclatura adaptadas a equipos que trabajan en español. Cuando existen diferencias significativas en terminología técnica entre el inglés y el español, se indican explícitamente para facilitar la comunicación en equipos multiculturales.
Visión General
Los agentes de IA son sistemas autónomos que utilizan modelos de lenguaje para razonar, planificar y ejecutar tareas llamando herramientas externas. A diferencia de simples chatbots, los agentes pueden buscar en la web, consultar bases de datos, ejecutar código e interactuar con APIs para cumplir objetivos complejos de múltiples pasos.
Cuándo Usar
Usa este recurso cuando:
- Construyes asistentes autónomos que necesitan datos en tiempo real
- Creas flujos de trabajo que requieren múltiples llamadas a APIs encadenadas
- Implementas razonamiento sobre fuentes de conocimiento externas
- Diseñas sistemas autocorrectivos que pueden reintentar operaciones fallidas
Solución
Agente con Patrón ReAct (Python)
import openai
import json
from typing import Callable
def agente_react(query: str, tools: dict[str, Callable]) -> str:
messages = [
{"role": "system", "content": "Eres un asistente útil. Usa herramientas cuando sea necesario."},
{"role": "user", "content": query}
]
for _ in range(5): # Máximo de iteraciones
response = openai.chat.completions.create(
model="gpt-4",
messages=messages,
tools=[
{"type": "function", "function": {"name": n, "parameters": {}}}
for n in tools.keys()
]
)
msg = response.choices[0].message
if not msg.tool_calls:
return msg.content
messages.append(msg)
for call in msg.tool_calls:
result = tools[call.function.name](**json.loads(call.function.arguments))
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": str(result)
})
return "Máximo de iteraciones alcanzado"
Ejemplo de Definición de Herramienta
def buscar_wikipedia(query: str) -> str:
"""Buscar en Wikipedia por un tema."""
# Implementación omitida
return f"Resultados para {query}"
tools = {"buscar_wikipedia": buscar_wikipedia}
resultado = agente_react("¿Quién ganó el Mundial de FIFA 2022?", tools)
Explicación
El patrón ReAct (Razonamiento + Acción) alterna entre:
- Pensamiento: El LLM razona sobre qué hacer a continuación
- Acción: El LLM llama una herramienta con argumentos estructurados
- Observación: El resultado de la herramienta se devuelve como contexto
- Repetir: Hasta que la tarea esté completa
Decisiones clave de diseño:
- Esquemas de herramientas: Usa el formato de function calling de OpenAI para seguridad de tipos
- Límites de iteración: Previene bucles infinitos con un conteo máximo de pasos
- Manejo de errores: Las herramientas deben devolver errores gracefully, no crashear
- Ventana de contexto: Resume salidas largas de herramientas para ajustarse a los límites de tokens
Variantes
| Framework | Patrón | Ideal Para |
|---|---|---|
| LangChain | ReAct, Plan-and-Execute | Prototipado rápido |
| AutoGen | Conversación multi-agente | Tareas colaborativas |
| CrewAI | Agentes basados en roles | Flujos de trabajo de negocio |
| Custom | ReAct con registro de herramientas | Sistemas de producción |
Mejores Prácticas
- Define interfaces claras de herramientas: Cada herramienta necesita nombre, descripción y esquema JSON
- Limita la cantidad de herramientas: 3-5 herramientas bien diseñadas superan a 20 vagas
- Agrega validación: Verifica argumentos de herramientas antes de ejecutar
- Registra todos los pasos: El razonamiento del agente es opaco; el logging ayuda a depurar
- Implementa timeouts: Las herramientas externas pueden colgarse; establece timeouts generosos
Errores Comunes
- Dar demasiadas herramientas a un agente: Aumenta confusión y tasa de errores
- Faltar manejo de errores: Una llamada a herramienta fallida sin recuperación crashea el loop
- Ignorar límites de tokens: Historiales largos de observaciones agotan la ventana de contexto
- No validar salidas: Los agentes pueden alucinar argumentos de herramientas
- Omitir revisión humana: Los agentes autónomos deben tener interruptores de emergencia
Preguntas Frecuentes
P: ¿Cuál es la diferencia entre RAG y un agente? R: RAG recupera documentos y responde una vez. Los agentes pueden tomar múltiples acciones, usar herramientas e iterar hasta cumplir una meta.
P: ¿Cuántas herramientas debería tener un agente? R: Comienza con 2-3. La investigación muestra que la precisión cae significativamente más allá de 5-7 herramientas.
P: ¿Los agentes pueden funcionar sin OpenAI? R: Sí. Modelos locales (Llama, Mistral) soportan llamado de herramientas vía formatos de salida estructurada como JSON mode.
Recursos Relacionados
Build Autonomous AI Agents with Tool Use and Reasoning
How to design AI agents that autonomously plan, execute tools, and iterate toward goals using ReAct, function calling, and memory architectures.
RecipeImplement Semantic Search with Embeddings
How to implement semantic search using text embeddings and vector similarity search for intelligent document retrieval
RecipeBuild a Slack Bot with OpenAI GPT-4
How to build a conversational Slack bot powered by OpenAI GPT-4 that responds to mentions and direct messages
RecipeCreate a Chatbot with OpenAI Assistants API
How to create an AI chatbot using the OpenAI Assistants API with function calling and file retrieval
RecipeGenerate Images Programmatically with AI Models
How to create, edit, and optimize images using DALL-E, Stable Diffusion, and Midjourney APIs with prompt engineering, batch processing, and content moderation.