The Vercel AI SDK integration is available for TypeScript only.
Installation
npm install @zespan/sdk ai
Usage
Call instrumentVercelAI() once at startup. It returns a telemetry settings object to pass to Vercel AI functions.
import { instrumentVercelAI, zespan } from "@zespan/sdk";
import { generateText } from "ai";
import { openai } from "@ai-sdk/openai";
zespan.init({ apiKey: process.env.ZESPAN_API_KEY! });
const { telemetry } = instrumentVercelAI();
const result = await generateText({
model: openai("gpt-4o"),
prompt: "Explain how LLMs work.",
experimental_telemetry: telemetry,
});
console.log(result.text);
Streaming
Pass the same telemetry object to streamText:
import { streamText } from "ai";
import { anthropic } from "@ai-sdk/anthropic";
const { telemetry } = instrumentVercelAI();
const result = await streamText({
model: anthropic("claude-sonnet-4-6"),
prompt: "Write a short story.",
experimental_telemetry: telemetry,
});
for await (const chunk of result.textStream) {
process.stdout.write(chunk);
}
Structured output
import { generateObject } from "ai";
import { openai } from "@ai-sdk/openai";
import { z } from "zod";
const { telemetry } = instrumentVercelAI();
const result = await generateObject({
model: openai("gpt-4o"),
schema: z.object({ title: z.string(), summary: z.string() }),
prompt: "Summarize the history of the internet.",
experimental_telemetry: telemetry,
});
console.log(result.object);
Using getLumiqVercelTelemetry
If you prefer to get the telemetry settings without calling instrumentVercelAI, use getLumiqVercelTelemetry directly:
import { getLumiqVercelTelemetry, zespan } from "@zespan/sdk";
zespan.init({ apiKey: process.env.ZESPAN_API_KEY! });
const telemetry = getLumiqVercelTelemetry();
const result = await generateText({
model: openai("gpt-4o"),
prompt: "Hello!",
experimental_telemetry: telemetry,
});
Zespan captures: generateText, streamText, generateObject, streamObject, tool calls, embed, and embedMany operations.