Granularidad de herramientas en agentes LLM: lo que nos enseñaron 20 configuraciones de flujo de trabajo

Ingeniería · 9 min de lectura

La sabiduría popular en torno a las herramientas de los agentes LLM tiende a converger en uno de dos lemas: "dale al modelo menos herramientas para que no se confunda", o "expón cada operación como una herramienta para que el modelo pueda componer con libertad". Ambos están equivocados de maneras interesantes. Construimos AgentDoc –un editor de documentos impulsado por MCP– en parte para disponer de un banco de pruebas creíble para esta cuestión, y ejecutamos 20 configuraciones de flujo de trabajo (A–T) en 13 escenarios de referencia para ver qué marca realmente la diferencia.

Esta entrada recoge lo que encontramos; aquí nos centramos en las conclusiones prácticas para cualquiera que diseñe herramientas para agentes LLM, ya sea para un servidor MCP, una API de llamada a funciones o un orquestador personalizado.

El montaje, en breve

Cada configuración es una combinación distinta de (a) superficie de herramientas –atómica frente a compuesta frente a mixta–; (b) control del flujo de trabajo –prompting ReAct puro frente a FSM ReAct restringido por estado–; y (c) política de verificación –opcional frente a obligatoria de get_document_context después de cada mutación. Las configuraciones van desde una línea base monolítica de cero ejemplos (una única herramienta gigante edit_document, sin FSM) hasta un FSM estrechamente controlado con 35 primitivas atómicas.

La puntuación usa la distancia de Levenshtein sobre el documento final, además del consumo de tokens y recuentos explícitos de alucinaciones (llamadas a herramientas que hacen referencia a índices que no existen).

Hallazgo 1: "menos herramientas" gana en tokens, pierde en precisión

La línea base monolítica de edit_document es, con diferencia, la más barata en tokens: el modelo emite una única llamada grande y listo. Pero sus puntuaciones de Levenshtein son aproximadamente 3 veces peores que las de las configuraciones de herramientas atómicas en tareas de varios pasos, porque el modelo tiene que planificar la mutación entera en una sola pasada hacia adelante, sin oportunidad de verificar el estado intermedio.

En documentos largos, este régimen falla por completo: el modelo emite una edición que hace referencia a un encabezado que ya no existe en el desplazamiento supuesto (porque ediciones hipotéticas anteriores "dentro del mismo plan" desplazaron los índices), y el resultado es un documento corrupto sobre el que es difícil razonar incluso para el siguiente turno del agente.

Hallazgo 2: "cada operación como una herramienta" gana en precisión, pierde en tokens... y en precipicios

Las herramientas puramente atómicas (find, delete_substring, insert_string, etc. por separado) empujan la verificación al bucle de razonamiento del modelo. Con modelos de frontera ajustados por instrucciones, la precisión es alta, pero los recuentos de tokens se disparan, y observamos un precipicio abrupto en torno a superficies de 25 herramientas: por encima de eso, el modelo empieza a seleccionar mal entre herramientas casi sinónimas (insert_paragraph frente a insert_text frente a append_text), lo cual es su propio modo de fallo que no aparece en las configuraciones de 8 herramientas.

El número de herramientas interactúa con la entropía de los nombres. Veinte herramientas cuyos nombres se agrupan semánticamente (insert_*, append_*, prepend_*) son más difíciles para el modelo que treinta herramientas que abarcan verbos obviamente distintos.

Hallazgo 3: un conjunto pequeño de macros bien nombradas es el punto óptimo

Las configuraciones que obtuvieron la puntuación más alta en el equilibrio conjunto precisión/tokens comparten una estructura: primitivas atómicas para la cola larga, más de tres a cinco macros bien nombradas para las rutas comunes evidentes (replace_all, format_all_matches, convert_paragraph_to_heading). Las macros eliminan las secuencias de varios pasos más habituales –reduciendo 4 idas y vueltas a 1– sin forzar al modelo a componerlas desde cero.

El truco no es el número de macros; es que cada macro debe corresponder a una petición en lenguaje natural que los usuarios realmente hacen. Las macros inventadas por elegancia de código ("composeFormatBatch") son ignoradas por el modelo en favor de las primitivas atómicas. Las macros nombradas según peticiones comunes ("reemplazar todos los X por Y") se usan de inmediato y correctamente.

Hallazgo 4: la verificación estructural vence a la verificación por prompt

Decirle al modelo "vuelve siempre a leer el documento antes de mutar" funciona parte del tiempo. Un FSM ReAct restringido por estado que bloquea las herramientas de escritura hasta que se completa una llamada a get_document_context funciona todo el tiempo. Las configuraciones con FSM redujeron los errores de índice alucinado del ~14 % en la condición solo con prompt a menos del 2 %, y el coste es una única ida y vuelta adicional cada pocos turnos, algo barato frente a una edición corrupta.

Esta es la conclusión práctica más fuerte de todo el estudio: si tu agente opera sobre estado sensible a índices (un documento, un búfer, un árbol de sintaxis), no confíes en los prompts por sí solos. Haz que la verificación sea estructuralmente inevitable en la propia superficie de herramientas.

Hallazgo 5: la deriva de índices es un fallo de diseño de herramientas, no del modelo

Vimos repetidamente que las configuraciones con peor rendimiento no eran "débiles" según ninguna métrica de capacidad: simplemente exponían herramientas cuyos contratos permitían al modelo tener éxito localmente y fallar globalmente. Una herramienta que toma un índice de carácter y devuelve éxito sin avisar al modelo de que todo lo posterior a ese índice se ha desplazado es el fallo. Los modelos de frontera acabarán aprendiendo a compensarlo. Tu superficie de herramientas no debería obligarlos a ello.

En concreto: cada herramienta de mutación en AgentDoc devuelve una carga útil estructurada que incluye un descriptor de rango modificado ({shifted_after: 412, delta: -23}). La siguiente llamada a herramienta lo ve, y el FSM controla una relectura. Como resultado, las alucinaciones cayeron casi hasta el suelo.

Qué significa esto si estás construyendo un agente

Tres reglas generales que valen más que cualquier cifra concreta de arriba:

La siguiente entrada de esta serie trata sobre la arquitectura centrada en la voz –incluyendo por qué decidimos conectar Gemini Live directamente a la superficie MCP en lugar de hacerlo a través de un proxy de transcripción. La decisión deriva precisamente de los hallazgos anteriores.

← Notas de versión – abril de 2026 Siguiente: Edición de documentos centrada en la voz →