@avanor/sdk-vercel-ai
v0.1.2
Published
Avanor SDK — Vercel AI SDK auto-instrumentation
Maintainers
Readme
@avanor/sdk-vercel-ai
Avanor SDK — Vercel AI SDK auto-instrumentation.
Wraps Vercel AI SDK's generateText, streamText, and generateObject with
llm.call spans carrying OTel GenAI semconv attributes.
Install
npm install @avanor/sdk @avanor/sdk-vercel-aiAdd ai to your dependencies if it isn't already.
Quickstart
import { openai } from '@ai-sdk/openai';
import { Avanor } from '@avanor/sdk';
import { instrumentVercelAI } from '@avanor/sdk-vercel-ai';
Avanor.init({
apiKey: process.env.AVANOR_API_KEY!,
environment: process.env.NODE_ENV ?? 'dev',
service: 'broker-portal',
});
// Drop-in replacement for the bare `ai` functions:
const { generateText, streamText, generateObject } = instrumentVercelAI();
const result = await generateText({
model: openai('gpt-4o'),
prompt: 'Hi',
});Attributes captured per call
| Attribute | Value |
|---|---|
| gen_ai.provider.name | 'vercel-ai' |
| gen_ai.operation.name | 'generateText', 'streamText', 'generateObject' |
| gen_ai.request.model | The model spec (model id when extractable) |
| gen_ai.usage.input_tokens | From the result's usage (non-stream paths) |
| gen_ai.usage.output_tokens | From the result's usage (non-stream paths) |
Streaming limitations (v0)
For streamText, the span closes when the wrapped function returns the
stream handle, not when the stream completes. The wrapped result is still the
exact Vercel AI SDK return value, so you can await result.text,
await result.usage, etc., as normal.
Note: token-usage attributes are not captured for streamText in v0.
The span carries provider/operation/model attributes only. Full
streaming-completion capture (token usage, finish reason, etc.) lands in
v0.5.
Zero false-positive guarantee
Each wrapped function returns the exact same value as the underlying
ai function. No wrapping, no transformation, no extra fields.
Docs
https://docs.avanor.ai/sdk/recipes/vercel-ai
License
Avanor Source License v1 (BSL-modeled, 4-year Apache 2.0 sunset) — see LICENSE.
