Inicio

Tools — Dándole Manos al Modelo

Capítulo 6: Tools — Dándole Manos al Modelo

En el capítulo anterior aprendiste a obtener datos estructurados del modelo. Pero hay un límite: solo puede generar información que ya "conoce".

¿Qué pasa cuando necesitas que consulte tu base de datos? ¿Que busque productos en tu inventario? ¿Que procese una devolución?

Necesitas tools — herramientas que el modelo puede ejecutar.

Código Primero

Un tool tiene tres partes:

  • description: Le dice al modelo cuándo usarlo
  • inputSchema: Parámetros tipados con Zod
  • execute: La función que corre cuando el modelo lo llama

Cambios en AI SDK v6

v4/v5v6
parameters: z.object({...})inputSchema: z.object({...})
maxSteps: 5stopWhen: stepCountIs(5)
Aprobación manualneedsApproval: true built-in
Sin control de outputtoModelOutput para reducir tokens

El Comportamiento por Defecto

Por defecto, streamText hace UNA sola generación. Si el modelo llama un tool, el flujo termina ahí:

El cliente recibe el tool output, pero no hay respuesta textual.

stopWhen: Habilitando Multi-Step

Para que el modelo use el resultado y genere respuesta, necesitas stopWhen:

stepCountIs(3) significa: "continúa hasta 3 pasos máximo". Ahora el flujo es:

Renderizando Tools en el Cliente

Los tool calls aparecen en message.parts:

Estados de un tool call:

  • input-streaming: Recibiendo parámetros
  • output-available: Tool terminó, resultado listo
  • approval-requested: Esperando aprobación humana

Human-in-the-Loop: needsApproval

needsApproval sirve para confirmar antes de ejecutar acciones sensibles:

En el cliente, manejas la aprobación:

Optimización: toModelOutput

Cuando un tool retorna mucha data, el modelo consume tokens innecesarios:

  • execute retorna data completa → El cliente muestra cards con imágenes
  • toModelOutput retorna resumen → El modelo genera respuesta sin gastar tokens extra

Preview: ToolLoopAgent

En el próximo capítulo veremos agentes en detalle. La diferencia clave:

streamText + toolsToolLoopAgent
1 paso por defecto20 pasos por defecto
Necesitas stopWhen siempreContinúa automático
Chat interactivoTareas autónomas

El agente se detiene cuando:

  1. La tarea está completada
  2. Un tool requiere aprobación
  3. Se alcanza el límite de pasos

Callbacks y Monitoreo

Resumen

ConceptoQué aprendiste
tool()Función que define una herramienta ejecutable
inputSchemaParámetros tipados con Zod (antes parameters)
executeLa función que corre cuando el modelo llama el tool
stopWhenCRÍTICO — sin esto, no hay respuesta después del tool
stepCountIs(n)Helper para limitar pasos (reemplaza maxSteps)
needsApprovalRequiere confirmación humana antes de ejecutar
toModelOutputReduce tokens enviados al modelo
part.stateEstados: input-streaming, output-available, approval-requested

Tools vs Structured Output

Usar Tools cuando...Usar Structured Output cuando...
Necesitas ejecutar accionesSolo necesitas datos tipados
Consultas externas (DB, API)Parsear o clasificar texto
El modelo decide qué hacerTú sabes qué estructura quieres
Flujo conversacionalRespuesta única estructurada

En el próximo capítulo veremos Agentes: cuando el modelo toma el control completo del loop, decide autónomamente qué herramientas usar, y resuelve tareas complejas sin intervención.

¿Ya compraste el libro?

Si compraste el libro y no encuentras tu email de descarga, ingresa tu email y te enviamos un nuevo enlace.