Workers AI 可用于 JavaScript 和 TypeScript 代码库的 Vercel AI SDK ↗。
安装 workers-ai-provider
提供程序 ↗:
npm i workers-ai-provider
yarn add workers-ai-provider
pnpm add workers-ai-provider
然后,在您的 Workers 项目 Wrangler 文件中添加一个 AI 绑定:
[ai]binding = "AI"
AI SDK 可以配置为与任何 AI 模型一起使用。
import { createWorkersAI } from "workers-ai-provider";
const workersai = createWorkersAI({ binding: env.AI });
// 选择任何模型:https://developers.cloudflare.com/workers-ai/models/const model = workersai("@cf/meta/llama-3.1-8b-instruct", {});
选择模型后,您可以从给定的提示生成文本。
import { createWorkersAI } from 'workers-ai-provider';import { generateText } from 'ai';
type Env = { AI: Ai;};
export default { async fetch(_: Request, env: Env) { const workersai = createWorkersAI({ binding: env.AI }); const result = await generateText({ model: workersai('@cf/meta/llama-2-7b-chat-int8'), prompt: '写一篇关于 hello world 的 50 字短文。', });
return new Response(result.text); },};
对于较长的响应,请考虑在生成完成时流式传输响应。
import { createWorkersAI } from 'workers-ai-provider';import { streamText } from 'ai';
type Env = { AI: Ai;};
export default { async fetch(_: Request, env: Env) { const workersai = createWorkersAI({ binding: env.AI }); const result = streamText({ model: workersai('@cf/meta/llama-2-7b-chat-int8'), prompt: '写一篇关于 hello world 的 50 字短文。', });
return result.toTextStreamResponse({ headers: { // 添加这些标头以确保 // 响应是分块和流式的 'Content-Type': 'text/x-unknown', 'content-encoding': 'identity', 'transfer-encoding': 'chunked', }, }); },};
您可以提供一个 Zod 模式来生成结构化的 JSON 响应。
import { createWorkersAI } from 'workers-ai-provider';import { generateObject } from 'ai';import { z } from 'zod';
type Env = { AI: Ai;};
export default { async fetch(_: Request, env: Env) { const workersai = createWorkersAI({ binding: env.AI }); const result = await generateObject({ model: workersai('@cf/meta/llama-3.1-8b-instruct'), prompt: '生成一份千层面食谱', schema: z.object({ recipe: z.object({ ingredients: z.array(z.string()), description: z.string(), }), }), });
return Response.json(result.object); },};
- @2025 Cloudflare Ubitools
- Cf Repo