【Firebase Genkit】AI ワークフローの楽々開発 & テストを体験する
こんにちは。tmassh です。
Google Developers Group Kwansai Advent Calendar 2024 9日目になります。
今回も昨日に引き続き Genkit の記事です。
スルーしてたのがもったいないと後悔するほど便利です。
Lang chain も触っていたのですが、Vertex AI、Google Cloud をメインに開発するならこんな便利なものはないと思えるくらい楽です。
今回はフロー作成機能を使ってみます。単なる定義のやり方だけでなく、デバッグを含め周辺のツールも充実しているらしいので楽しみです。
フローの作成
以下が作ってみたフローです。
export const makeScenerioFlow = ai.defineFlow(
{
name: "makeScenerioFlow",
inputSchema: z.string(),
outputSchema: DraftSchema,
},
async (scenerioTheme: string): Promise<z.infer<typeof DraftSchema>> => {
const prompt = await createPrompt(scenerioTheme);
console.log(prompt);
if (!prompt) {
throw new Error("Response doesn't satisfy schema.");
}
const draft = await createScenerio(prompt.prompt);
console.log(draft);
if (!draft) {
throw new Error("No data generated.");
}
printScenerioObject(draft!!);
return draft;
}
);
フローの input と output のスキーマを定義できるところも良いです。
スキーマは、z.object()
を使って定義することができます。
import { z } from "genkit";
const scenerioSchema = z.object({
title: z.string(),
description: z.string(),
});
const lineSchema = z.object({
name: z.string(),
line: z.string(),
});
const storySchema = z.object({
scenery: z.string(),
lines: z.array(lineSchema),
});
export const DraftSchema = z.object({
scenerio: z.array(scenerioSchema),
firstStory: z.array(storySchema),
});
デバッグ
Genkit を使うメリットは単にフローを作成するだけではありません。デバッグがものすごく楽なのが Genkit を使う大きなメリットだと思います。周辺ツールも充実しているのはさすが Firebase だと思いました。
コマンドを実行すると local にデバッグツールが立ち上がります。
npx genkit start -- tsx --watch src/flow/sample-flow.ts
この UI が本当に使いやすいです。[Traces] ページでは各モデルへの入力値やその出力を見ることができます。また、生成にかかった時間も同時に出してくれているのが地味に嬉しいところ。フロー全体でどれくらいの時間がかかっているのかを一度に把握することができます。
また、失敗していた際もモデルからどんな出力がでているかを把握できるため、各モデルの微調整のためのヒントをすぐに得ることができます。
デプロイ
開発したフローは作って終わりでなく、すぐに使えるものにしたいですよね。作成したワークフローは Firebase もしくは Cloud Run にコマンド一つでデプロイできるのもまた嬉しいところです。
私は Cloud Run が好きなので Cloud Run へのデプロイを試してみました。
認証情報も簡単につけることができます。これも組織で開発されてるかたには嬉しいところではないでしょうか?
おわりに
今回は、Firebase Genkit の AI ワークフロー開発を試してみました。やはりデバッグツールが優秀なのがすばらしかったです。Cloud Run へのデプロイが簡単なのと、楽に認証機能をつけることができるのもポイント高いですね!Firebase Genkit で良い AI 開発ライフを!
明日はモデルの評価についてみていこうと思います。
Discussion