>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
TypeScript

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 logo

このフレームワークできること

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を作成しました。コマンドを実行すると、ブラウザでダッシュボードが開きます。

Genkit Developer UI screenshot

この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リポジトリでサンプルを試したり、ドキュメントを読んだりできます。

関連プロジェクト