Sesión 4 · Tool Use

Conecta las herramientas con el modelo

Registra findCourses, añade instrucciones y permite varios pasos para consultar el catálogo y redactar la respuesta.

30 min aprox.5 pasosPráctica + comprobación
Qué aprenderás
  • Registrar herramientas en un objeto de generateText.
  • Usar instrucciones y un límite de pasos de AI SDK 7.
  • Diagnosticar el proveedor y comparar respuestas con evidencia.

Referencias de código

Índice de esta lección

Paso 1

Pasa findCourses al modelo

Importa findCourses desde tools.js y crea withTools a partir de withoutTools. tools es un objeto cuyas claves identifican operaciones disponibles.

Definir una herramienta en un archivo no permite usarla por sí solo: hay que pasarla a la llamada. El modelo decide si propone una consulta; valida lo ocurrido en las trazas.

src/patterns/01-tool-use/tool-use.ts
Paso 1 · typescript
import { generateText, isStepCount } from "ai";import { createTracer, model } from "../../helpers/index.js";import { findCourses } from "./tools.js"; async function withTools() {  const tracer = createTracer("con-herramientas");  const { text } = await generateText({    model,    prompt: QUESTION,    instructions: "Eres un asistente del catálogo. No inventes cursos, precios ni horas. Consulta las herramientas. Si hay varias coincidencias, pide el ID antes de calcular.",    tools: { findCourses },    stopWhen: isStepCount(6),    onStepEnd: tracer.onStepFinish,  });  console.log("Con herramientas:", text);  return tracer.summary();}

Qué deberías observar

La llamada puede buscar cursos, recibir sus resultados y elaborar una respuesta.

Paso 3

Permite la continuación y limita los pasos

Con herramientas, una generación puede terminar en una llamada pendiente de ejecutar. La ejecución en varios pasos permite incorporar el resultado y volver al modelo.

stopWhen: isStepCount(6) limita el número de pasos del SDK. No equivale a un circuit breaker completo, no es un límite de tiempo y no garantiza seis pasos ni una respuesta final correcta.

Revisa llamadas y resultados, no solo el texto final. Un límite demasiado pequeño puede detener la tarea antes de la explicación.

Opciones dentro de generateText
Paso 3 · typescript
stopWhen: isStepCount(6),onStepEnd: tracer.onStepFinish,

Qué deberías observar

Ves cuándo consulta el catálogo y si llega a redactar una respuesta.

Paso 4

Comprueba modelo y adaptador

El proveedor, el adaptador y el modelo deben admitir la llamada a herramientas. Un aviso de reasoning no demuestra por sí solo que el modelo no pueda razonar ni identifica toda la causa del fallo.

Razonamiento y tool calling son capacidades distintas. Si la práctica falla, lee el error, confirma la versión del adaptador y prueba un modelo con soporte de herramientas documentado.

No es necesario cambiar de proveedor si tu configuración ya funciona. Los tokens, pasos y tiempos dependen de la ejecución; las cifras de la grabación no son un benchmark general.

Comprobación de compatibilidad
Paso 4 · text
Revisa → proveedor + adaptador + modeloVerifica → soporte de herramientasObserva → llamadas, resultados, respuestaCompara → tokens y tiempo reales

Qué deberías observar

Diagnosticas el fallo concreto antes de atribuirlo a la inteligencia del modelo.

Paso 5

Compara y comprueba los datos

Invoca ambas funciones una vez para observar la diferencia. La comparación hace dos peticiones y puede consumir cuota: para futuras ejecuciones conserva solo la prueba con herramientas.

TypeScript desde cero cuesta 19.99 USD y Docker 17.99 USD en este catálogo: 37.98 USD antes del descuento y 36 horas. TypeScript también tiene otra coincidencia; pide el ID o precisa el título.

El modelo todavía calcula el descuento en esta clase. En la siguiente trasladaremos esa operación a una función verificable. Las herramientas aportan datos; no garantizan un resultado infalible.

src/patterns/01-tool-use/tool-use.ts
Paso 5 · typescript
export async function toolUseMain() {  const resultA = await withoutTools();  const resultB = await withTools();  console.table({    "Sin herramientas": resultA,    "Con herramientas": resultB,  });}

Qué deberías observar

Puedes justificar cada cifra con el resultado del catálogo.

Ahora te toca

Prueba la idea por tu cuenta

Inspecciona o ejecuta withTools. Verifica si findCourses fue llamado, qué IDs devolvió y cómo se resolvió la ambigüedad de TypeScript. Explica qué limita isStepCount(6).

Necesito una pista

Las trazas contienen argumentos y resultados; el texto final por sí solo no demuestra una consulta.

Comparar con una solución

La evidencia es la llamada a findCourses y sus cursos. Antes de cotizar precisa ts-01 frente a agt-04. isStepCount(6) limita pasos del SDK; no fija tiempo, coste ni exactitud.

Antes de seguir

Comprueba lo que aprendiste

No es una nota. Es una pausa para comprobar que la idea quedó clara.

1. ¿Cómo se registran las herramientas?
2. ¿Qué controla isStepCount(6)?
3. ¿Qué debes comprobar ante un fallo de herramientas?

¿Terminaste la práctica?

Haz el ejercicio y comprueba tus respuestas antes de marcar la lección como completada.

Apuntes y código de esta lección