skills/blockmatic/basilic/AI SDK v6 Core

AI SDK v6 Core

SKILL.md

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: { /* tool definitions */ },
})

const result = await agent.run({ prompt: 'Task' })

See Production Patterns and Templates for detailed examples.

References

Resources

Weekly Installs
0
GitHub Stars
88
First Seen
Jan 1, 1970