AIHero
    11 / 16Vercel AI SDK 教程

    使用 Vercel AI SDK 生成数组

    学习如何使用 Vercel AI SDK 和 Zod schema 生成对象数组,以创建模拟用户数据。

    Matt Pocock
    Matt Pocock
    源代码下一课
    本页目录

    到目前为止,我们已经让 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(),
    });

    把 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 生成结构化对象数组的方法。

    登录以保存进度。