Skip to main content
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.