GenkitでGoogleがAIアプリ開発に秩序をもたらそうとする理由
Firebaseチームの開発者がGenkitをオープンソースとして公開しましたmdash;AI機能を構築するためのフレームワークです。Gemini、OpenAI、Ollamaを1つのプロジェクトでスパゲティコードなしに組み合わせられるのかを確認してみましょう。
なぜ別のAIフレームワークが必要なのか
バックエンドにLLM呼び出しを追加しようとしたことがあるなら、おそらくこのような道をたどったことがあるでしょう。まずOpenAI APIへのシンプルなfetch呼び出しを書きます。次に、モデルからのレスポンスから厳密に有効なJSONを解析する必要があり、正規表現を使った回避策に頼ることになります。その後、ビジネス側からGeminiへの切り替えやテスト用のローカルOllamaの接続を依頼されますが、それぞれ異なるSDKを持っています。結果は、カスタムラッパー、プロンプトテンプレートシステム、散在するログ記録が入り混じったプロジェクトになります。
PythonコミュニティではLangChainやLlamaIndexでこれに対処しています。しかし、主要なスタックがTypeScriptやGoの場合、最近まで代替手段は限られていました。FirebaseチームのGoogleエンジニアも社内で同じ問題に遭遇し、Genkitを構築しました。現在、このプロジェクトはオープンソースとして公開されています。

このフレームワークできること
Genkitのコンセプトはシンプルですmdash;異なるニューラルネットワークプロバイダへの統一インターフェースを提供し、定型作業を処理します。各サービスの特定のSDKを学ぶ代わりに、 универсальный APIで作業できます。
現在サポートされている言語は次のとおりです:
- JavaScriptとTypeScriptは本番対応
- Goは本番対応
- PythonはBeta版
- DartはPreview版
標準でサポートされているプロバイダには、Google Gemini、OpenAI、Anthropic、Ollamaが含まれます。モデル間の切り替えは、多くの場合、1行の設定変更だけで済みます。
TypeScriptでモデルを初期化して呼び出す最小限の例を見てみましょう:
import { genkit } from 'genkit';
import { googleAI } from '@genkit-ai/google-genai';
const ai = genkit({ plugins: [googleAI()] });
const { text } = await ai.generate({
model: googleAI.model('gemini-flash-latest'),
prompt: 'What is the meaning of life?'
});
コードはクリーンで、バックエンドを低レベルのHTTPリクエストに結びつけません。
型付き出力とツール呼び出し
AIサービス開発における最も一般的なタスクの1つは、モデルにテキストだけでなくデータ構造を返させることです。GenkitはTypeScriptでZodスキーマと連動し、他の言語でも同様の仕組みを使用します。レスポンススキーマを記述してモデルに渡すと、有効なオブジェクトが返ってきます。
2番目の有用な機能は、外部関数の呼び出し,也就是ツール呼び出しです。モデルが現在の天気を確認したりデータベースにクエリを実行したりする必要がある場合、入力引数の説明とともにツールを登録します。Genkitは自動的に関数説明をLLMに渡 し、呼び出しの決定を受け取り、必要なコードを実行します。
フレームワークには次のものも含まれています:
- Dotprompt形式によるプロンプトテンプレート
- ストリーミングレスポンス
- ナレッジベース操作用のベクトル検索とRAG
- Flowsメカニズムによる呼び出しチェーンとエージェント
Developer UIによるローカルデバッグ
複雑なAI機能を開発している場合、最も難しいのは呼び出しチェーンがどこで壊れたかを正確に理解することです。モデルが間違ったフォーマットを返しましたか?ツールがエラーでクラッシュしましたか?プロンプトが長すぎましたか?
Genkitの開発者は、デバッグ用のローカルCLIユーティリティとGUIを作成しました。コマンドを実行すると、ブラウザでダッシュボードが開きます。

このUIでは、いくつかのことを実行できます:
- インタラクティブなサンドボックスでプロンプトとチェーンを手動で実行
- 同じプロンプトで異なるモデルの結果を比較
- 各ステージのタイムスタンプ、ステップバイステップの分解、詳細な入出力を含む詳細なトレースを表示
ローカルUIがあると、イテレーションが大幅に高速化されます。テスト環境にデプロイしたり、毎回ログ記録の足場を書いたりする必要がありません。
デプロイ先と監視方法
GenkitはGoogle内で作成され、Firebase Cloud FunctionsおよびGoogle Cloud Runと統合されていますが、Google Cloudインフラストラクチャにロックインされるわけではありません。Node.jsまたはGoで任意のDockerコンテナ、Vercel、AWS、または独自のサーバーにアプリケーションをデプロイできます。
本番環境では、フレームワークはメトリクスとトレースを監視システムに送信できます。FirebaseコンソールまたはOpenTelemetryベースのサードパーティソリューションを通じて、リクエスト数、レイテンシ、エラー、トークンコストを直接確認できます。
誰が試すべきか
Genkitはバランスの取れたツールであることが判明しました。すべてを無理にやろうとする一部のオープンソースライブラリとは異なり、慎重なエンジニアリングアプローチを示しています。
このプロジェクトは、次の場合に便利です:
- TypeScriptまたはGoでAIサービスを書いており、Pythonに移行したくない
- OpenAI、Gemini、ローカルモデルに対する統一された抽象化レイヤーが必要
- 明確なトレースなしに複雑なAIエージェントをデバッグすることに疲れている
PythonサポートはまだBeta版で、Dartはまだ開発中です。しかし、Node.jsバージョンはすでに本番サービスに十分対応しています。公式のgenkit.devウェブサイトまたはgenkit-ai/genkit GitHubリポジトリでサンプルを試したり、ドキュメントを読んだりできます。
関連プロジェクト