本页目录
到目前为止,我们已经让 LLM 返回对象或枚举值,而不只是普通文本。
如果希望返回多个对象,也就是对象数组,该怎么办?
例如,你可能希望 LLM 生成大量模拟数据。
Zod Schema
滚动式代码讲解
1
首先创建一个 Zod Schema;我们在结构化输出示例中已经见过它。
如果不熟悉这部分,可以学习我的 免费 Zod 课程 ,课程位于姐妹站点 Total TypeScript。
2
还应该为 Schema 字段添加描述,给 AI 提供更多上下文。与之前一样,可以使用 .describe 。
import { z } from "zod";const schema = z.object({name: z.string(),age: z.number(),email: z.string().email(),});
想继续深入: 加入“面向真正工程师的 AI 编码”候补名单
把 Schema 传给 generateObject
然后把这个 Schema 传给 generateObject 函数,同时把 output 设置为 array。
import { generateObject } from "ai";export const createFakeUsers = async (input: string,) => {const { object } = await generateObject({model,prompt: input,system: `You are generating fake user data.`,output: "array",schema,});return object;};
现在,从 generateObject 返回的对象就是这个用户数组。
强大之处在于,可以预先指定用户的各种信息。在这个例子中,他们会和我一样来自英国。
运行看看。我们将生成一些模拟用户:
const fakeUsers = await createFakeUsers("Generate 5 fake users from the UK.",);console.dir(fakeUsers, { depth: null });
就这样,用户数组生成出来了。
与 streamObject 结合时尤其有用,可以在用户对象创建过程中逐个流式接收。
这就是使用 AI SDK 生成结构化对象数组的方法。
登录以保存进度。