MÓDULO 3 · ARQUITECTURA DE SISTEMAS CONVERSACIONALES · AGENTES DE IA 3/5 · 40 MIN

Tool Use en LLMs

Nivel intermedio — diseño de herramientas efectivas: nombres, descripciones y schemas que maximizan la precisión del agente.

Idea central El LLM no "entiende" las herramientas como un programador — las interpreta a partir de sus descripciones textuales y schemas. La calidad del diseño de herramientas determina directamente la confiabilidad del agente.

El problema

Situación típica: tienes dos herramientas similares — get_user(id) obtiene usuario por ID numérico, find_user(email) busca por email. El agente recibe "busca al usuario juan@empresa.com" y llama a get_user("juan@empresa.com"), causando un error porque esperaba un número. // una herramienta mal diseñada causa errores en cascada: el agente recibe el error, intenta recuperarse, y a veces empeora la situación

El diseño de herramientas es donde el desarrollador tiene mayor control sobre el comportamiento del agente.

Los 3 elementos de una herramienta

El LLM decide qué herramienta usar basándose en: Nombre (descriptivo y distinguible), Descripción (explica cuándo y para qué usarla), y Schema (define exactamente qué parámetros acepta).

PrincipioMal ejemploBuen ejemplo
Nombres únicosget(), fetch()get_user_by_id()
Descripciones específicas"Obtiene datos""Obtiene el perfil completo de un usuario dado su ID numérico"
Un propósitomanage_user(action, ...)create_user(), update_user(), delete_user()
Parámetros tipadosid: anyuser_id: integer, minimum: 1
Ejemplos en descripción(ninguno)"Formato: ORD-12345"

5 tipos de herramientas

TipoEjemplosCaracterísticas
Lecturasearch, get_user, query_dbSin efectos secundarios, seguras de reintentar
Escrituracreate_order, send_emailEfectos secundarios, requieren confirmación
Cálculocalculator, convert_currencyDeterministas, rápidas
Externasweb_search, call_apiLatencia variable, pueden fallar
Sistemaread_file, execute_codePrivilegiadas, requieren sandboxing
El manejo de errores es parte del diseño, no un extra

El troubleshooting de esta lección lo deja claro: un error no manejado en execute_tool puede tumbar todo el agente, y un mensaje de error puramente técnico deja al LLM sin poder recuperarse de forma útil. Diseñar una herramienta no termina en el schema — el mensaje de error que devuelve cuando algo falla es, para el modelo, información tan importante como el resultado exitoso.

Checklist de diseño

Nombre: get_user_by_email ✓ (acción clara, específica el método) — no get_user ✗ (ambiguo, ¿por qué campo?) ni user ✗ (no indica acción).

Descripción: "Busca un usuario por su dirección de email. Usa esta herramienta cuando el usuario proporcione un email. Para buscar por ID numérico, usa get_user_by_id." ✓ — no "Obtiene usuario" ✗ (vago) ni mezclar idiomas en la descripción ✗.

Schema: usa pattern, enum y format para acotar qué valores son válidos, con descripciones que incluyan un ejemplo concreto (ej. formato de email o de código de pedido).

Practica: herramientas para un agente de e-commerce

Construye un sistema de herramientas para un agente que pueda consultar productos, verificar inventario, y calcular costos de envío. Implementa 4 herramientas con características distintas: lectura simple, lectura con filtros, cálculo, y una que demuestre manejo de errores robusto (try/except con mensajes descriptivos para el LLM, no técnicos).