SuperPenguin Docs
SDKsTypeScript

Vercel AI SDK

Track generateText and streamText with SuperPenguin helpers for the Vercel AI SDK.

Use trackGenerateText and trackStreamText when you call the Vercel AI SDK instead of a native provider client.

generateText

import { init, trackGenerateText } from "@superpenguin/js";
import { generateText } from "ai";

init({ apiKey: process.env.SP_API_KEY });

const trackedGenerateText = trackGenerateText(generateText, {
  provider: "vercel_ai_gateway",
  functionId: "support-reply",
  metadata: {
    environment: "production",
    feature: "support_agent",
  },
});

const result = await trackedGenerateText({
  model: "openai/gpt-4o",
  prompt: "Write a concise reply.",
  metadata: { customer_id: "cust_acme_123" },
  telemetry: { functionId: "support-reply" },
});

streamText

import { init, trackStreamText } from "@superpenguin/js";
import { streamText } from "ai";

init({ apiKey: process.env.SP_API_KEY });

const trackedStreamText = trackStreamText(streamText, {
  provider: "vercel_ai_gateway",
  functionId: "chat-stream",
});

const result = trackedStreamText({
  model: "openai/gpt-4o",
  messages,
  metadata: { customer_id: "cust_acme_123", feature: "chat" },
});

The wrapper waits for the Vercel AI SDK usage promise in the background and submits one attribution event when usage is available. For Vercel AI Gateway, SuperPenguin captures billed cost on the call. You do not pass region or deploymentType.

For Vercel AI Gateway, set AI_GATEWAY_API_KEY in the same server environment. telemetry.functionId and related telemetry metadata become custom_tags such as function_id.

Multi-step agents (0.11.0 and later)

Version 0.11.0 emits one event per result step when step details are available. For agents, use the model middleware and dynamic metadata scope to capture each invocation, including models selected during the loop. Use a single capture path per model call to prevent duplicate spend. These APIs are not available in 0.9.1 or 0.10.0.