| name | AI SDK v6 Core |
| description | Build backend AI with Vercel AI SDK v5/v6. Agent abstraction, tool approval, error solutions.
Use when: implementing AI SDK v5/v6 or troubleshooting AI errors.
|
Skill: ai-sdk-core
Scope
- Applies to: Backend AI features with Vercel AI SDK v5/v6, server-side text generation, structured outputs, AI agents with tools, multi-provider integration
- Does NOT cover: React chat UIs (see ai-sdk-ui), frontend hooks, embeddings, image generation
Assumptions
- AI SDK v5.0.98+ (stable) or v6.0.0-beta.107+ (beta)
- Node.js 18+ or Cloudflare Workers
- Zod v3.23.8+ or v4.x for schema validation
- TypeScript v5+ with strict mode
Principles
- Use
generateText for simple text generation
- Use
generateObject for structured outputs with Zod schemas
- Use
streamText for streaming responses
- Use
ToolLoopAgent (v6) for agent workflows with tool calling
- Use tool execution approval for human-in-the-loop patterns
- Use
callOptions for dynamic runtime configuration
- Handle errors with specific error types (
AI_APICallError, AI_NoObjectGeneratedError, etc.)
- Use provider abstraction (
openai, anthropic, google) for multi-provider support
Constraints
MUST
- Handle
response.error for typed error responses
- Use Zod schemas for structured output validation
- Use
onError callback in streamText for error handling
- Validate API keys at startup
SHOULD
- Use
ToolLoopAgent (v6) for agent workflows instead of manual tool orchestration
- Implement retry logic with exponential backoff for rate limits
- Use
mode: 'json' when available for structured outputs
- Prefer GPT-4+ for complex structured output
AVOID
- Top-level imports in Cloudflare Workers (causes startup overhead)
- Skipping error handling for API calls
- Using
any types (use proper error types)
- Mixing v5 and v6 APIs without migration
Interactions
- Complements ai-sdk-ui for React chat interfaces
- Works with nextjs Server Components and API routes
- Uses Zod for schema validation (see typescript)
Patterns
Basic Text Generation
import { generateText } from 'ai'
import { openai } from '@ai-sdk/openai'
const result = await generateText({
model: openai('gpt-4'),
prompt: 'Hello, world!',
})
Structured Output
import { generateObject } from 'ai'
import { z } from 'zod'
const result = await generateObject({
model: openai('gpt-4'),
schema: z.object({
name: z.string(),
age: z.number(),
}),
prompt: 'Generate a person',
})
Agent with Tools (v6)
import { ToolLoopAgent } from 'ai'
import { openai } from '@ai-sdk/openai'
const agent = new ToolLoopAgent({
model: openai('gpt-4'),
tools: { },
})
const result = await agent.run({ prompt: 'Task' })
See Production Patterns and Templates for detailed examples.
References
Resources