generateText 和 streamText 两个核心函数,开发者使用相同的代码即可切换不同模型提供商openai/gpt-5.5、anthropic/claude-sonnet-4-6,无需安装各提供商的独立 SDKstreamText 函数支持逐 token 输出,实现实时打字机效果textStream、dataStream 等多种消费方式,适配不同 UI 框架generateObject 函数支持基于 Zod Schema 生成类型安全的结构化数据tool 函数定义可被模型调用的外部工具generateImage 支持文生图,generateSpeech 支持文本转语音ToolLoopAgent 类实现自主多步推理的 AgentgenerateText 返回完整的生成结果对象,包含 text、toolCalls、usage 等属性streamText 返回流式结果对象,包含 textStream、dataStream、fullStream 等可迭代流generateText 适用于需要完整结果的场景,如后台任务处理、数据提取、批量生成streamText 适用于需要实时反馈的场景,如聊天对话、长文本生成、进度展示generateText 的结果通过 await 一次性获取,代码结构更简洁streamText 的结果通过 for await 循环逐块消费,需要处理流式生命周期generateText 的错误在 await 时抛出,可用 try-catch 捕获streamText 的错误可能在流式过程中异步抛出,需要在消费循环中处理import { streamText } from 'ai';
const result = streamText({
model: 'openai/gpt-5.5',
prompt: '写一个关于机器人的短篇故事',
});
for await (const textPart of result.textStream) {
process.stdout.write(textPart);
}result.toDataStreamResponse() 生成可被前端消费的响应useChat Hook 自动处理流式更新textStream:纯文本 token 流,适合简单展示dataStream:包含元数据的数据流,可携带工具调用信息fullStream:完整事件流,包含开始、增量、结束等所有事件for await 循环中使用 try-catch 捕获流式错误AbortController 支持用户主动中断生成import { generateObject } from 'ai';
import { z } from 'zod';
const { object } = await generateObject({
model: 'anthropic/claude-sonnet-4-6',
schema: z.object({
name: z.string(),
age: z.number(),
city: z.string(),
}),
prompt: '提取信息:张三今年 25 岁,住在北京',
});
console.log(object); // { name: '张三', age: 25, city: '北京' }object 自动通过 TypeScript 类型推断import { generateText, tool } from 'ai';
import { z } from 'zod';
const result = await generateText({
model: 'openai/gpt-5.5',
tools: {
getWeather: tool({
description: '获取指定城市的当前天气',
parameters: z.object({
city: z.string().describe('城市名称,如"北京"'),
}),
execute: async ({ city }) => {
// 调用天气 API
return { city, temperature: 25, condition: '晴' };
},
}),
},
prompt: '北京今天天气怎么样?',
});
console.log(result.toolResults); // 包含工具调用结果contextSchema 为工具定义专属上下文结构toolsContext 传入每个工具所需的配置(如 API Key)generateImage 函数实现文生图generateSpeech 函数支持文本转语音(v7 已稳定)transcribe 函数支持语音转文本(v7 已稳定)uploadFile 函数支持上传文件到模型提供商@ai-sdk/react 包,包含 useChat、useCompletion 等 HookuseChat 自动处理流式消息更新、工具调用 UI、错误状态@ai-sdk/vue 包,包含对应的 Composable 函数@ai-sdk/svelte 包AI Elements 组件库,可适配任意前端框架npm install ai @ai-sdk/openai @ai-sdk/react.env.local 文件OPENAI_API_KEY=your-key// app/api/chat/route.ts
import { openai } from '@ai-sdk/openai';
import { streamText } from 'ai';
export async function POST(request: Request) {
const { messages } = await request.json();
const result = streamText({
model: openai('gpt-5.5'),
messages,
});
return result.toDataStreamResponse();
}'use client';
import { useChat } from '@ai-sdk/react';
export default function Chat() {
const { messages, input, handleInputChange, handleSubmit } = useChat();
return (
<div>
{messages.map(m => (
<div key={m.id}>{m.content}</div>
))}
<form onSubmit={handleSubmit}>
<input value={input} onChange={handleInputChange} />
</form>
</div>
);
}import { ToolLoopAgent } from 'ai';
const agent = new ToolLoopAgent({
model: 'openai/gpt-5.5',
instructions: '你是一个旅行助手,帮助用户规划行程',
tools: {
searchFlights: tool({ /* ... */ }),
bookHotel: tool({ /* ... */ }),
},
});
const result = await agent.generate({
prompt: '帮我规划一次从北京到上海的三天旅行',
});runtimeContext 定义 Agent 运行时的共享状态prepareStep 函数中访问和修改上下文@ai-sdk/workflow 包导入,用于需要持久化的场景stopWhen 参数控制停止条件,如最大步数、特定结果reasoning 参数控制模型推理深度,可选 low、medium、highprepareStep 函数在每步执行前调用registerTelemetry 全局注册遥测配置onStart、onStep、onEnd 等生命周期钩子import { readFile } from 'node:fs/promises';
import { openai } from '@ai-sdk/openai';
import { uploadFile } from 'ai';
const { providerReference } = await uploadFile({
api: openai.files(),
data: await readFile('./document.pdf'),
filename: 'document.pdf',
});uploadSkill 函数,用于上传 Agent 技能定义