docs(integrations): rewrite Vercel AI SDK guide as cookbook style (DEV-1485)

Reshapes the guide to cookbook formula, adds Full Script section, fixes
maxSteps → stopWhen for ai-sdk v5, renames package, and prunes stale notes.
See PR for full decision log.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
lowyelling 2026-04-30 18:32:31 -04:00
parent 94874ae94c
commit b086e0edaa
1 changed files with 11 additions and 21 deletions

View File

@ -20,11 +20,7 @@ We'll wire Honcho into a Vercel AI SDK app so the model automatically receives c
- **Honcho** stores messages and retrieves user context before each generation
- **Your model provider** can be Anthropic, OpenAI, Google, etc.
The key benefit: you don't manually manage conversation history across sessions. Honcho handles persistence and context injection — the model always has a rich picture of who it's talking to.
<Note>
Before proceeding, it helps to understand Honcho's core concepts (`Peers` and `Sessions`). Review the [Honcho Architecture](/v3/documentation/core-concepts/architecture) to familiarize yourself with these primitives.
</Note>
The key benefit: you don't manually manage conversation history across sessions. Honcho handles persistence and context injection — the model always has a rich picture of who it's talking to. (New to Honcho's primitives? See [peers and sessions](/v3/documentation/core-concepts/architecture).)
## Setup
@ -48,17 +44,13 @@ bun add @honcho-ai/vercel-ai-sdk
```
</CodeGroup>
Set your API key and workspace ID:
Get your API key at [app.honcho.dev](https://app.honcho.dev).
```bash
HONCHO_API_KEY=your-api-key
HONCHO_WORKSPACE_ID=your-workspace-id
```
<Note>
Get your API key and workspace ID at [app.honcho.dev](https://app.honcho.dev). For local development, pass `environment: "local"` to `createHoncho()`.
</Note>
## Create a Provider Instance
`createHoncho()` is the entry point. It reads your API key and workspace from environment variables and returns a provider object with `middleware()`, `tools()`, and `send()`.
@ -107,10 +99,6 @@ const { text } = await generateText({
Pass `userId` and `sessionId` per request — no session handles to construct. Both default to lazily generated IDs if omitted, which is fine for local scripts but not for multi-user server traffic.
<Note>
The first turn returns empty context — there's nothing stored yet. Every turn after that, the model receives the user's representation, derived conclusions, and session history automatically.
</Note>
## Add Tools
`honcho.tools()` gives the model six tools it can call mid-generation to query or update what it knows about the user:
@ -127,13 +115,15 @@ The first turn returns empty context — there's nothing stored yet. Every turn
Pass the same `userId` and `sessionId` to `honcho.tools()` so tool calls bind to the same peers as the middleware:
```typescript
import { generateText, stepCountIs } from 'ai';
const { text } = await generateText({
model,
tools: honcho.tools({
userId: 'user-abc',
sessionId: 'session-123',
}),
maxSteps: 3,
stopWhen: stepCountIs(3),
prompt: 'Based on our conversations, what do I care about most?',
});
```
@ -144,7 +134,7 @@ Here's a full working example combining middleware and tools:
```typescript
import { createHoncho } from '@honcho-ai/vercel-ai-sdk';
import { wrapLanguageModel, generateText } from 'ai';
import { wrapLanguageModel, generateText, stepCountIs } from 'ai';
import { anthropic } from '@ai-sdk/anthropic';
const honcho = createHoncho({
@ -162,7 +152,7 @@ const model = wrapLanguageModel({
const { text } = await generateText({
model,
tools: honcho.tools({ userId, sessionId }),
maxSteps: 3,
stopWhen: stepCountIs(3),
prompt: 'What should we work on today?',
});
@ -211,7 +201,7 @@ honcho.middleware({
})
```
Honcho still injects the user's representation and peer card into the system prompt, and still persists messages after generation.
Honcho still injects the user's representation and peer card into the system prompt, and still persists messages after generation. With `injectHistory: false` you must pass a `messages` array — without either `messages` or `prompt`, the Vercel AI SDK throws `Invalid prompt: prompt or messages must be defined`.
## Verifying the Integration
@ -275,7 +265,7 @@ If the model calls the tool and returns a synthesized answer, the full tool pipe
import 'dotenv/config';
import { createHoncho } from '@honcho-ai/vercel-ai-sdk';
import { wrapLanguageModel, generateText } from 'ai';
import { wrapLanguageModel, generateText, stepCountIs } from 'ai';
import { anthropic } from '@ai-sdk/anthropic';
import * as readline from 'node:readline/promises';
import { stdin as input, stdout as output } from 'node:process';
@ -296,7 +286,7 @@ async function chat(prompt: string): Promise<string> {
const { text } = await generateText({
model,
tools: honcho.tools({ userId, sessionId }),
maxSteps: 3,
stopWhen: stepCountIs(3),
prompt,
});
return text;
@ -327,7 +317,7 @@ main().catch((err) => {
## Next Steps
<CardGroup cols={2}>
<Card title="Package Source" icon="github" href="https://github.com/plastic-labs/vercel-ai-sdk-package">
<Card title="Github Repository" icon="github" href="https://github.com/plastic-labs/vercel-ai-sdk-package">
Source, tests, and full API reference for @honcho-ai/vercel-ai-sdk.
</Card>