本頁面說明如何在 Angular 應用程式中使用 Genkit 流程。
事前準備
您應該熟悉 Genkit 的流程概念,並瞭解如何編寫流程。
建立 Angular 專案
本指南將使用 Angular 應用程式,並搭配SSR 和伺服器路由。
您可以使用 Angular CLI 建立含有伺服器端路由的新專案:
ng new --ssr --server-routing
您也可以使用 ng add
指令,將伺服器端路由新增至現有專案:
ng add @angular/ssr --server-routing
安裝 Genkit 依附元件
將 Genkit 依附元件安裝到 Angular 應用程式中,方法與任何 Genkit 專案相同:
安裝核心 Genkit 程式庫:
npm i --save genkit
安裝至少一個模型外掛程式。
舉例來說,如要使用 Google AI:
npm i --save @genkit-ai/googleai
或使用 Vertex AI:
npm i --save @genkit-ai/vertexai
安裝 Genkit Express 程式庫:
npm i --save @genkit-ai/express
安裝 Zod:
npm i --save zod
如果您未全域安裝 Genkit CLI,可以將其做為開發依附元件安裝。我們也建議使用 tsx 工具,因為這麼做可以更方便測試程式碼。不過,這兩種依附元件都是選用項目。
npm i --save-dev genkit-cli tsx
定義 Genkit 流程
在 Angular 專案中建立新的檔案,用於包含 Genkit 流程,例如 src/genkit.ts
。這個檔案可包含未經修改的流程。
例如:
import { gemini20Flash, googleAI } from "@genkit-ai/googleai";
import { genkit } from "genkit";
import { z } from "zod";
const ai = genkit({
plugins: [googleAI()],
model: gemini20Flash,
});
export const menuSuggestionFlow = ai.defineFlow(
{
name: "menuSuggestionFlow",
inputSchema: z.string(),
outputSchema: z.string(),
},
async (restaurantTheme) => {
const { text } = await ai.generate(
`Invent a menu item for a ${restaurantTheme} themed restaurant.`
);
return text;
}
);
新增伺服器路徑
將以下匯入項目新增至 src/server.ts
:
import { expressHandler } from '@genkit-ai/express';
import { menuSuggestionFlow } from './genkit';
在 app
變數初始化後方加入以下程式碼行:
app.use(express.json());
接著,請新增路徑來提供流程:
app.post('/menu', expressHandler(menuSuggestionFlow));
呼叫流程
您現在可以透過用戶端應用程式執行流程。
例如,您可以將 src/app/app.component.ts
的內容替換為以下內容:
import { Component, resource, signal } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { runFlow } from 'genkit/beta/client';
@Component({
selector: 'app-root',
imports: [FormsModule],
templateUrl: './app.component.html',
})
export class AppComponent {
menuInput = '';
theme = signal('');
menuResource = resource({
request: () => this.theme(),
loader: ({request}) => runFlow({ url: 'menu', input: request })
});
}
對 src/app/app.component.html
進行相應更新:
<h3>Generate a custom menu item</h3>
<input type="text" [(ngModel)]="menuInput" />
<button (click)="this.theme.set(menuInput)">Generate</button>
<br />
@if (menuResource.isLoading()) {
Loading...
} @else {
<pre>{{menuResource.value()}}</pre>
}
在本機測試應用程式
如果您想在本機執行應用程式,請為所選的模型 API 服務提供可用的憑證。
Gemini (Google AI)
請確認 Google AI 在您所在的地區可用。
使用 Google AI Studio 產生 Gemini API 的 API 金鑰。
將
GEMINI_API_KEY
環境變數設為金鑰:export GEMINI_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
接著,照常在本機上執行應用程式:
ng serve
Genkit 的所有開發工具仍可照常運作。舉例來說,如要在開發人員 UI 中載入流程:
npx genkit start -- ng serve
部署應用程式
部署應用程式時,請確認所用外部服務 (例如所選模型 API 服務) 的憑證可供已部署的應用程式使用。如需所選部署平台的相關資訊,請參閱下列頁面:
後續步驟
- 在已部署的 Angular 應用程式中探索 Genkit:逐步操作,瞭解如何參考實作多個 Genkit 流程,為 Angular 應用程式提供動力,然後直接進入 Firebase Studio 中的程式碼。