Estrategias y patrones de diseño para que los agentes de IA seleccionen, invoquen y combinen herramientas externas de forma efectiva para completar tareas complejas.
Los patrones de uso de herramientas definen cómo los agentes de IA seleccionan, invocan y combinan herramientas externas para resolver tareas. Mientras que function calling es el mecanismo técnico y MCP es el protocolo de descubrimiento, los patrones de uso de herramientas son las estrategias de nivel superior que determinan cuándo, cómo y en qué orden invocar herramientas.
La calidad de la definición determina si el modelo selecciona la herramienta correcta. Una definición incluye nombre, descripción y esquema de entrada tipado.
{
"type": "function",
"function": {
"name": "search_knowledge",
"description": "Search the knowledge base by query. Returns matching concepts with titles, summaries, and relevance scores. Use when the user asks about a topic.",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search query — use specific terms, not full sentences"
},
"limit": {
"type": "integer",
"description": "Max results to return (default: 5)",
"default": 5
}
},
"required": ["query"]
}
}
}server.tool("search_knowledge", {
description: "Search the knowledge base by query. Returns matching concepts with titles, summaries, and relevance scores.",
inputSchema: {
type: "object",
properties: {
query: { type: "string", description: "Search query" },
limit: { type: "integer", description: "Max results", default: 5 }
},
required: ["query"]
}
}, async ({ query, limit }) => {
const results = await searchIndex(query, limit);
return { content: [{ type: "text", text: JSON.stringify(results) }] };
});La diferencia clave: en function calling, el host ejecuta la función y devuelve el resultado al modelo. En MCP, el servidor ejecuta la herramienta y el protocolo maneja el transporte. El esquema de definición es casi idéntico — lo que cambia es quién ejecuta y cómo se descubre.
El caso más simple — el agente identifica una herramienta y la invoca una vez:
Cuando las herramientas son independientes, el agente las invoca simultáneamente. Reduce latencia significativamente:
El resultado de una herramienta alimenta la entrada de la siguiente. Es el patrón más común en flujos agénticos:
El agente decide qué herramienta usar según el contexto de la pregunta:
La calidad de las descripciones de herramientas es lo que permite al modelo hacer esta selección correctamente. Descripciones ambiguas producen selecciones incorrectas.
Cuando un agente tiene acceso a muchas herramientas (10+), la selección se vuelve un problema de ingeniería de prompts:
| Estrategia | Cómo funciona | Cuándo usarla |
|---|---|---|
| Todas disponibles | Todas las herramientas en el contexto del modelo | Menos de 10 herramientas |
| Filtrado por categoría | Agrupar herramientas por dominio, cargar solo las relevantes | 10-50 herramientas |
| Dos pasos | Primer LLM call selecciona herramientas, segundo las usa | 50+ herramientas |
| Descripción jerárquica | Herramientas «meta» que exponen sub-herramientas | Sistemas complejos con múltiples dominios |
El filtrado por categoría es el más práctico para la mayoría de sistemas. Ejemplo: un agente de soporte técnico carga herramientas de «base de datos» solo cuando detecta una pregunta sobre datos, y herramientas de «deployment» solo para preguntas de infraestructura.
Los errores de herramientas son inevitables. El agente necesita estrategias para manejarlos sin fallar silenciosamente:
Los patrones más avanzados combinan múltiples herramientas en flujos complejos:
Secuencia lineal donde cada paso transforma el resultado del anterior:
Distribuir trabajo en paralelo y agregar resultados:
El agente itera hasta cumplir un criterio:
Este patrón es la base del «agent loop» en frameworks como Strands Agents — el modelo razona, invoca herramientas, evalúa resultados y decide si necesita más información.
| Aspecto | Function calling | MCP |
|---|---|---|
| Definición | En el prompt o API del modelo | En el servidor MCP |
| Descubrimiento | Estático — definido por el desarrollador | Dinámico — tools/list al conectar |
| Ejecución | El host ejecuta la función | El servidor MCP ejecuta |
| Portabilidad | Específico por proveedor (OpenAI, Bedrock, etc.) | Universal — cualquier cliente MCP |
| Estado | Sin estado entre llamadas | Puede mantener estado en el servidor |
| Caso de uso | Herramientas simples, integradas en la app | Herramientas compartidas entre múltiples clientes |
En la práctica, function calling es suficiente para herramientas internas de una aplicación. MCP es necesario cuando las herramientas deben ser accesibles desde múltiples clientes de IA o cuando el descubrimiento dinámico es importante.
Los patrones de uso de herramientas son lo que convierte a un LLM en un agente capaz de actuar en el mundo real. Sin herramientas, un modelo solo puede generar texto. Con herramientas bien diseñadas y patrones de invocación correctos, puede consultar bases de datos, ejecutar código, interactuar con APIs y orquestar flujos complejos.
La diferencia entre un agente confiable y uno frágil está en los detalles: descripciones precisas que guían la selección, esquemas tipados que previenen errores de entrada, manejo de errores que degrada elegantemente, y composición que permite resolver tareas que ninguna herramienta individual puede completar. Estos patrones son transferibles entre proveedores — ya sea function calling de Bedrock, la API de Anthropic, o un servidor MCP.
Sistemas autónomos que combinan modelos de lenguaje con razonamiento, memoria y uso de herramientas para ejecutar tareas complejas de múltiples pasos con mínima intervención humana.
Protocolo abierto creado por Anthropic que estandariza cómo las aplicaciones de IA se conectan con herramientas, datos y servicios externos mediante una interfaz universal.
Capacidad de los LLMs para generar llamadas estructuradas a funciones externas basándose en lenguaje natural, habilitando la integración con APIs, bases de datos y herramientas del mundo real.
Patrones de diseño donde agentes de IA ejecutan tareas complejas de múltiples pasos de forma autónoma, combinando razonamiento, uso de herramientas y toma de decisiones iterativa.
Disciplina de diseñar instrucciones efectivas para modelos de lenguaje, combinando claridad, estructura y ejemplos para obtener respuestas consistentes y de alta calidad.