Vercel AI SDK
XeroML integrates with the Vercel AI SDK through OpenTelemetry. Enable experimental_telemetry on your AI SDK calls and XeroML captures all model interactions automatically.
Installation
npm install ai @ai-sdk/openai @xeroml/tracing @xeroml/otel @opentelemetry/sdk-nodeSetup
-
Initialize OpenTelemetry:
import { NodeSDK } from "@opentelemetry/sdk-node";import { XeroMLSpanProcessor } from "@xeroml/otel";const sdk = new NodeSDK({spanProcessors: [new XeroMLSpanProcessor()],});sdk.start(); -
Enable telemetry on AI SDK calls:
import { generateText } from "ai";import { openai } from "@ai-sdk/openai";const { text } = await generateText({model: openai("gpt-4o"),prompt: "Explain XeroML in one sentence.",experimental_telemetry: { isEnabled: true },});
With streamText
import { streamText } from "ai";import { openai } from "@ai-sdk/openai";
const result = await streamText({ model: openai("gpt-4o"), prompt: "Write a poem about observability.", experimental_telemetry: { isEnabled: true },});
for await (const chunk of result.textStream) { process.stdout.write(chunk);}Adding Context
Wrap the AI SDK call in propagateAttributes() to attach user and session context:
import { propagateAttributes } from "@xeroml/tracing";import { generateText } from "ai";import { openai } from "@ai-sdk/openai";
async function handleRequest(prompt: string, userId: string, sessionId: string) { return await propagateAttributes({ userId, sessionId }, async () => { return await generateText({ model: openai("gpt-4o"), prompt, experimental_telemetry: { isEnabled: true }, }); });}Next.js Integration
For Next.js App Router, set up XeroML in instrumentation.ts:
export async function register() { if (process.env.NEXT_RUNTIME === "nodejs") { const { NodeSDK } = await import("@opentelemetry/sdk-node"); const { XeroMLSpanProcessor } = await import("@xeroml/otel");
const sdk = new NodeSDK({ spanProcessors: [new XeroMLSpanProcessor()], }); sdk.start(); }}Then add experimental_telemetry: { isEnabled: true } to your AI SDK calls in route handlers or server actions.