本页介绍了如何在 Next.js 应用中将 Genkit flow 用作服务器操作。
准备工作
您应熟悉 Genkit 的流程概念以及如何编写流程。
创建 Next.js 项目
如果您还没有要添加生成式 AI 功能的 Next.js 项目,可以创建一个项目,以便按照本页中的说明操作:
npx create-next-app@latest
安装 Genkit 依赖项
将 Genkit 依赖项安装到 Next.js 应用中,方法与任何 Genkit 项目相同:
安装核心 Genkit 库:
npm i --save genkit
安装至少一个模型插件。
例如,如需使用 Google AI,请执行以下操作:
npm i --save @genkit-ai/googleai
或者,如需使用 Vertex AI,请执行以下操作:
npm i --save @genkit-ai/vertexai
如果您未全局安装 Genkit CLI,可以将其作为开发依赖项进行安装。我们还建议使用 tsx 工具,因为它可以让您更方便地测试代码。不过,这两个依赖项都是可选的。
npm i --save-dev genkit-cli tsx
定义 Genkit 流
在 Next.js 项目中创建一个新文件来包含 Genkit 流程,例如 src/app/genkit.ts
。此文件可以包含您的流程,无需进行修改;但是,由于您只能从服务器后端运行流程,因此必须将 'use server'
指令添加到文件顶部。
例如:
'use server';
import { gemini15Flash, googleAI } from "@genkit-ai/googleai";
import { genkit, z } from "genkit";
const ai = genkit({
plugins: [googleAI()],
model: gemini15Flash,
});
export const menuSuggestionFlow = ai.defineFlow(
{
name: "menuSuggestionFlow",
inputSchema: z.string(),
outputSchema: z.string(),
},
async (restaurantTheme) => {
const { text } = await ai.generate({
model: gemini15Flash,
prompt: `Invent a menu item for a ${restaurantTheme} themed restaurant.`,
});
return text;
}
);
调用流程
现在,您可以在前端代码中导入流程,并将其作为服务器操作调用。
例如:
'use client';
import { menuSuggestionFlow } from './genkit';
import { useState } from 'react';
export default function Home() {
const [menuItem, setMenuItem] = useState<string>('');
async function getMenuItem(formData: FormData) {
const theme = formData.get('theme')?.toString() ?? '';
const suggestion = await menuSuggestionFlow(theme);
setMenuItem(suggestion);
}
return (
<main>
<form action={getMenuItem}>
<label htmlFor="theme">
Suggest a menu item for a restaurant with this theme:{' '}
</label>
<input type="text" name="theme" id="theme" />
<br />
<br />
<button type="submit">Generate</button>
</form>
<br />
<pre>{menuItem}</pre>
</main>
);
}
在本地测试应用
如果您想在本地运行应用,则需要提供您选择的模型 API 服务的凭据。
Gemini (Google AI)
使用 Google AI Studio 为 Gemini API 生成 API 密钥。
将
GOOGLE_GENAI_API_KEY
环境变量设置为您的密钥:export GOOGLE_GENAI_API_KEY=<your API key>
Gemini (Vertex AI)
在 Cloud 控制台中,为您的项目启用 Vertex AI API。
设置一些环境变量,然后使用
gcloud
工具设置应用默认凭据:export GCLOUD_PROJECT=<your project ID>
export GCLOUD_LOCATION=us-central1
gcloud auth application-default login
然后,照常在本地运行应用:
npm run dev
Genkit 的所有开发工具都将继续正常运行。例如,如需在开发者界面中加载您的流程,请执行以下操作:
npx genkit start -- npx tsx --watch src/app/genkit.ts
部署应用
在部署应用时,您需要确保您使用的所有外部服务(例如您选择的模型 API 服务)的凭据可供部署的应用使用。请参阅以下页面,了解特定于您所选部署平台的信息: