Sesión 4 · Tool Use

Comprueba la respuesta sin herramientas

Construye withoutTools, conecta la entrada y registra una respuesta que todavía no tiene acceso al catálogo.

25 min aprox.5 pasosPráctica + comprobación
Qué aprenderás
  • Enviar una petición del negocio con generateText sin aportar el catálogo.
  • Conectar toolUseMain con main.ts y observar la ejecución.
  • Interpretar el tracer sin confundir trazas con razonamiento interno.

Referencias de código

Índice de esta lección

Paso 1

Prepara el primer patrón

Crea src/patterns/01-tool-use/tool-use.ts dentro de la práctica de la sesión 3. Usa el proveedor que ya configuraste; abrir otra terminal es opcional.

La introducción usó TypeScript y Node como ejemplo. Estas clases siguen el enunciado de las transcripciones y del código de referencia: TypeScript y Docker. Conservaremos esa misma petición en la comparación.

src/patterns/01-tool-use/tool-use.ts
Paso 1 · typescript
const QUESTION =  "¿Cuánto costarían juntos el curso de TypeScript y el de Docker " +  "con un 20% de descuento? Dame también las horas totales.";

Qué deberías observar

Tienes una petición fija sobre dos cursos y el descuento del 20 %.

Paso 2

Genera texto sin acceso al catálogo

Importa generateText desde ai y model y createTracer desde ../../helpers/index.js. Las extensiones .js corresponden a los imports ESM del proyecto TypeScript.

La petición no incluye los cursos ni herramientas. El modelo puede pedir información o dar cifras sin respaldo. Tener el catálogo en otro archivo no lo transmite automáticamente al modelo.

src/patterns/01-tool-use/tool-use.ts
Paso 2 · typescript
import { generateText } from "ai";import { createTracer, model } from "../../helpers/index.js"; async function withoutTools() {  const tracer = createTracer("sin-herramientas");  const { text } = await generateText({    model,    prompt: QUESTION,    onStepEnd: tracer.onStepFinish,  });  console.log("Sin herramientas:", text);  return tracer.summary();}

Qué deberías observar

La llamada devuelve texto y el resumen de pasos de la ejecución.

Paso 3

Llama al patrón desde main.ts

Durante esta primera clase exporta una entrada que llame solo a withoutTools. Sustituye la llamada de prueba anterior en main.ts por esta entrada.

No borres las acciones anteriores: basta con cambiar qué función invocas. El laboratorio completo de la última clase también permite ejecutar una comparación.

src/patterns/01-tool-use/tool-use.ts
Paso 3 · typescript
export async function toolUseMain() {  const resultA = await withoutTools();  console.table({ "Sin herramientas": resultA });} // En src/main.ts:// import { toolUseMain } from "./patterns/01-tool-use/tool-use.js";// await toolUseMain();

Qué deberías observar

La entrada ejecuta la petición del patrón, sin una segunda llamada.

Paso 4

Registra pasos, resultados y consumo

npm run dev realiza una llamada real al proveedor seleccionado; ejecútalo en tu entorno cuando quieras probar la clase.

El callback del SDK 7 se llama onStepEnd. El helper del proyecto conserva el nombre onStepFinish: onStepEnd: tracer.onStepFinish conecta ambos sin cambiar el helper.

El tracer imprime llamadas a herramientas, resultados y texto. Su slice(0, 150) limita la vista de consola. No demuestra acceso al pensamiento interno completo del modelo. La cantidad de tokens de una grabación no es un valor fijo para tu ejecución.

Terminal de la práctica
Paso 4 · bash
npm run buildnpm run dev

Qué deberías observar

Puedes distinguir una respuesta que pide datos de una afirmación sin fuente.

Paso 5

Guarda la evidencia de la prueba inicial

Anota proveedor, modelo, respuesta, pasos y tokens informados. Mantén la pregunta y el catálogo de referencia para la siguiente prueba.

Una respuesta que reconoce los datos ausentes es adecuada en este punto. Si aparecen precios, verifica su origen antes de considerarlos correctos. El gist contiene datos didácticos, no precios comerciales vigentes.

Registro de la prueba
Paso 5 · text
Modelo: ______Pregunta: TypeScript + Docker, 20 %, horasRespuesta: ______Pasos / tokens: ______Datos consultados: ninguno

Qué deberías observar

Tienes una línea base para comparar con la ejecución con herramientas.

Ahora te toca

Prueba la idea por tu cuenta

Ejecuta o inspecciona withoutTools. Si la respuesta incluye precios, explica de dónde deberían proceder. Anota cómo reconocerías una respuesta responsable cuando falta el catálogo.

Necesito una pista

Distingue lo que aparece en el prompt de lo que solo existe en un archivo local.

Comparar con una solución

Sin tools ni catálogo en el prompt no hay una consulta verificable. Pedir los precios y horas es adecuado; unas cifras plausibles no prueban acceso al catálogo.

Antes de seguir

Comprueba lo que aprendiste

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

1. ¿Recibe el modelo un catálogo solo porque existe en el proyecto?
2. ¿Qué evidencia ofrece el tracer de esta práctica?
3. ¿Qué conservas para una comparación útil?

¿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