---
name: ai-sdk-handler
description: Integrate Vercel AI SDK for LLMs, Chatbots, Generative UI, and Agentic Workflows.
deps: ["auth-handler", "inngest-handler"]
---
# AI SDK Handler
This skill defines how to implement Large Language Model (LLM) features using the Vercel AI SDK. It covers streaming chat, structured object generation, generative UI, and background agents.
**Note**: For Image/Video generation (Replicate, Fal.ai), continue to use `ai-handler`. Use `ai-sdk-handler` specifically for text, chat, and agentic text/JSON workflows.
## When to Use
- **Chatbots**: Building interactive chat interfaces (`useChat`, `streamText`).
- **Structured Data**: Extracting JSON from text (`generateObject`).
- **Generative UI**: Streaming React components directly from the server (`streamUI`).
- **Agents**: Complex, multi-step reasoning tasks (often combined with Inngest).
- **Multimodal**: Handling image inputs with text.
## Capabilities
### 1. Streaming Chat
- **Tool**: `streamText` (Server), `useChat` (Client).
- **Pattern**: Create a route handler at `src/app/api/chat/route.ts`.
- **Auth**: Wrap with `withAuthRequired` to protect the route.
- **UI**: Use `src/components/chat-ui/` for chat components.
### 2. Generative UI (RSC)
- **Tool**: `streamUI` (Server).
- **Pattern**: Return React components based on tool calls.
- **Use Case**: Dashboards that build themselves, dynamic reports.
### 3. Structured Object Generation
- **Tool**: `generateObject`.
- **Pattern**: Define a Zod schema and get strictly typed JSON back.
- **Use Case**: Populating database forms, extracting itinerary details, categorizing content.
### 4. Background Agents (with Inngest)
- **Tool**: `generateText` / `generateObject` inside Inngest steps.
- **Why**: Next.js Server Actions/Routes have timeouts (max 60s usually). Agents taking longer must run in the background.
- **Pattern**:
1. Trigger Inngest event from UI.
2. Inngest function runs the LLM logic (loops, multi-step).
3. Store result in DB or notify user.
4. **Docs**: [AI SDK Agents](https://ai-sdk.dev/docs/agents/overview).
## Best Practices
1. **Streaming**: Always prefer streaming for text generation > 2 seconds to improve perceived latency.
2. **Auth**: Never expose open AI routes. Always verify `session.user.id`.
3. **Providers**: Use `@ai-sdk/openai` or `@ai-sdk/anthropic`. Abstract the provider configuration in `src/lib/ai/index.ts`.
4. **Backpressure**: The AI SDK handles this automatically in `streamText`.
5. **Caching**: Use `unstable_cache` or KV stores if queries are repetitive.
6. **Prompt Engineering**: Keep prompts in a dedicated folder or constant file if they are complex.
## Documentation & Examples
- **`reference.md`**: Core setup and essential code snippets.
- **`examples.md`**: Exhaustive examples covering:
1. Basic Chat
2. Generative UI
3. Structured Object Generation
4. Agents & Workflows (Loop Control)
5. Caching
6. Streaming Data
7. Reading UI Streams
8. Handling Backpressure
9. Multimodal Chat