3. Proyecto base

Observa la ejecución con una traza

Registra pasos, herramientas y tokens sin confundir observación con una evaluación del resultado.

15 min aprox.4 pasosPráctica + comprobación
Qué aprenderás
  • Observar los eventos de fin de paso.
  • Separar una traza de una evaluación de calidad.
  • Actualizar el callback de observación para AI SDK 7.
Índice de esta lección

Paso 1

Decide qué necesitas registrar

El helper createTracer de la base incrementa un contador de pasos, acumula tokens e imprime herramientas y resultados expuestos por la ejecución.

La traza permite entender qué ocurrió. No demuestra por sí sola que el modelo haya elegido bien ni revela todo su razonamiento interno. Para comparar resultados necesitas además un criterio de aceptación.

Datos de una traza
Paso 1 · text
steps → pasos completadostotalTokens → uso comunicadotoolCalls → herramientas solicitadastoolResults → resultados recibidostext → salida expuesta por el modelo

Qué deberías observar

Sabes qué responde cada dato y qué preguntas siguen necesitando una comprobación propia.

Paso 2

Usa el callback vigente

En el código local encontrarás onStepFinish. La documentación de AI SDK 7 lo conserva como alias deprecado y recomienda onStepEnd para código nuevo.

La función de observación recibe datos del paso. Este ejemplo muestra el cambio del nombre del callback sin convertir la llamada en un agente con herramientas.

Callback de generateText
Paso 2 · typescript
onStepEnd({ usage }) {  console.log("Tokens del paso:", usage.totalTokens ?? "No disponible");}

Qué deberías observar

La observación usa onStepEnd. Este fragmento se coloca dentro del objeto de opciones de generateText, no se ejecuta por separado.

Paso 3

Añade una variante observable

Añade esta función a tu archivo de acciones. Si conservas los imports de la lección anterior, no los dupliques.

El contador suma pasos y herramientas. Si un paso no informa tokens, el resumen indica que el total no está disponible. Registrar cero herramientas es esperable: esta prueba aún no declara ninguna.

src/actions/get-message-model.ts
Paso 3 · typescript
import { generateText } from 'ai';import { model } from '../helpers/selected-model.js'; export async function getMessageFromModelWithTrace() {  let steps = 0;  let totalTokens = 0;  let usageAvailable = true;   const { text } = await generateText({    model,    prompt: 'Responde solamente con: "OK, todo listo!"',    onStepEnd({ usage, toolCalls, toolResults }) {      steps += 1;      if (usage.totalTokens === undefined) usageAvailable = false;      totalTokens += usage.totalTokens ?? 0;      console.log('Paso:', steps);      console.log('Herramientas solicitadas:', toolCalls.length);      console.log('Resultados de herramientas:', toolResults.length);    },  });   const summary = {    steps,    totalTokens: usageAvailable ? totalTokens : 'No disponible',  };  console.log('Respuesta:', text.trim());  console.table(summary);  return summary;}

Qué deberías observar

La consola muestra los pasos y un resumen. Los números dependen de la ejecución; no hay un total de tokens fijo que debas obtener.

Paso 4

Selecciona la variante en main

Reemplaza el punto de entrada por esta variante y ejecuta npm run build y npm run dev.

Compara la respuesta con la llamada básica y guarda una observación: ¿cuántos pasos expuso?, ¿reportó tokens?, ¿hubo herramientas? Cambiar la función ejecutada no exige cambiar el proveedor.

src/main.ts
Paso 4 · typescript
import { getMessageFromModelWithTrace } from './actions/get-message-model.js'; await getMessageFromModelWithTrace();

Qué deberías observar

Se ejecuta la variante con traza y puedes explicar su resumen.

Ahora te toca

Prueba la idea por tu cuenta

Ejecuta la variante con traza y escribe dos cosas que puedes comprobar con ella y una que no demuestra.

Necesito una pista

Distingue datos de ejecución de exactitud del resultado.

Comparar con una solución

Puedes contar los pasos observados y leer el consumo reportado. La traza no garantiza que la respuesta sea correcta ni que un futuro patrón sea eficaz.

Antes de seguir

Comprueba lo que aprendiste

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

1. ¿Qué callback se recomienda para ejemplos nuevos con AI SDK 7?
2. ¿Qué indica una traza con cero herramientas en nuestra prueba básica?

¿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