Go 用 Firebase Genkit ライブラリのプレビュー版がリリースされました。この Go ライブラリは現在アルファ版であるため、開発が進むにつれて API や機能が変更される可能性があります。プロトタイピングと探索でのみ使用することをおすすめします。
このライブラリやドキュメントに関する問題を発見した場合は、GitHub リポジトリで報告してください。
Genkit の使用を開始するには、Genkit CLI をインストールし、Go プロジェクトで genkit init
を実行します。このページの残りの部分では、その方法について説明します。
要件
Go 1.22 以降。Go の公式ドキュメントのダウンロードとインストールをご覧ください。
Node.js 20 以降(Genkit CLI と UI 用)。Node のインストールに関する簡単なガイドについては、次のセクションをご覧ください。
Genkit をインストールする
システムに Node 20 以降がインストールされていない場合は、今すぐインストールしてください。
推奨:
nvm
ツールとnvm-windows
ツールは、まだシステムにインストールされていない場合に、Node の特定のバージョンをインストールする便利な方法です。これらのツールはユーザーごとに Node をインストールするため、システム全体に変更を加える必要はありません。nvm
をインストールするには:Linux、macOS など
次のコマンドを実行します。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
Windows
nvm-windows ドキュメントに記載されている手順に沿って、インストーラをダウンロードして実行します。
Node と
npm
をインストールするには、新しいシェルを開いて次のコマンドを実行します。nvm install 20
次のコマンドを実行して、Genkit CLI をインストールします。
npm i -g genkit
このコマンドは、Genkit CLI を Node インストール ディレクトリにインストールし、Node プロジェクトの外部で使用できるようにします。
サンプル プロジェクトを作成して確認する
新しいプロジェクト ディレクトリを作成します。
mkdir genkit-intro && cd genkit-intro
Genkit プロジェクトを初期化します。
genkit init
ランタイム環境として
Go
を選択します。モデルを選択します。
Gemini(Google AI)
開始する最も簡単な方法は、Google AI Gemini API を使用することです。お住まいの地域で利用可能であることを確認してください。
Google AI Studio を使用して Gemini API の API キーを生成します。次に、そのキーを
GOOGLE_GENAI_API_KEY
環境変数に設定します。export GOOGLE_GENAI_API_KEY=<your API key>
Gemini(Vertex AI)
お住まいの地域で Google AI Gemini API が利用できない場合は、Vertex AI API の使用を検討してください。Vertex AI API では、Gemini 以外のモデルも提供されています。課金が有効になっている Google Cloud プロジェクトがあり、AI Platform API を有効にし、いくつかの環境変数を設定する必要があります。
gcloud services enable aiplatform.googleapis.com
export GCLOUD_PROJECT=<your project ID>
export GCLOUD_LOCATION=us-central1
Vertex AI の料金をご覧ください。
モジュール名には任意の名前を指定します。例:
example/genkit-intro
残りの質問に対してデフォルトの回答を選択します。これにより、サンプルコードを使用するプロジェクト フォルダが初期化されます。
genkit init
コマンドは、サンプルの Go モジュールを作成し、必要な依存関係をインストールします。ファイルmain.go
には、LLM に、特定のテーマに対してレストランのメニューを提案させる単一のフローmenuSuggestionFlow
が含まれています。このファイルは次のようになります(Vertex AI を選択した場合、プラグインの構成手順は異なる場合があります)。
package main import ( "context" "errors" "fmt" "log" // Import Genkit and the Google AI plugin "github.com/firebase/genkit/go/ai" "github.com/firebase/genkit/go/genkit" "github.com/firebase/genkit/go/plugins/googleai" ) func main() { ctx := context.Background() // Initialize the Google AI plugin. When you pass nil for the // Config parameter, the Google AI plugin will get the API key from the // GOOGLE_GENAI_API_KEY environment variable, which is the recommended // practice. if err := googleai.Init(ctx, nil); err != nil { log.Fatal(err) } // Define a simple flow that prompts an LLM to generate menu suggestions. genkit.DefineFlow("menuSuggestionFlow", func(ctx context.Context, input string) (string, error) { // The Google AI API provides access to several generative models. Here, // we specify gemini-1.5-flash. m := googleai.Model("gemini-1.5-flash") if m == nil { return "", errors.New("menuSuggestionFlow: failed to find model") } // Construct a request and send it to the model API (Google AI). resp, err := ai.Generate(ctx, m, ai.WithConfig(&ai.GenerationCommonConfig{Temperature: 1}), ai.WithTextPrompt(fmt.Sprintf(`Suggest an item for the menu of a %s themed restaurant`, input))) if err != nil { return "", err } // Handle the response from the model API. In this sample, we just // convert it to a string. but more complicated flows might coerce the // response into structured output or chain the response into another // LLM call. text := resp.Text() return text, nil }) // Initialize Genkit and start a flow server. This call must come last, // after all of your plug-in configuration and flow definitions. When you // pass a nil configuration to Init, Genkit starts a local flow server, // which you can interact with using the developer UI. if err := genkit.Init(ctx, nil); err != nil { log.Fatal(err) } }
Genkit でアプリの AI 機能を構築する際は、入力前処理、より高度なプロンプト作成、検索拡張生成(RAG)のための外部情報ソースの統合など、複数のステップを含むフローを作成する場合が多いでしょう。
これで、Genkit の機能とサンプル プロジェクトをローカルマシンで実行して確認できるようになりました。Genkit デベロッパー UI をダウンロードして起動します。
genkit start
これで、Genkit デベロッパー UI がお使いのマシンで実行されるようになりました。次のステップでモデルやフローを実行すると、マシンはフローの各ステップを連携させるために必要なオーケストレーション タスクを実行します。Gemini API などの外部サービスへの呼び出しは、引き続きライブサーバーに対して行われます。
また、開発環境であるため、Genkit はトレースやフロー状態をローカル ファイルに保存します。
Genkit デベロッパー UI は、
genkit start
コマンドを実行すると自動的にダウンロードされ、開かれます。デベロッパー UI を使用すると、定義したフローや構成したモデルを確認したり、実行したり、以前の実行のトレースを調べたりできます。一部の機能を試してみましょう。
[実行] タブには、定義したすべてのフローと、プラグインによって構成されたモデルのリストが表示されます。
menuSuggestionFlow をクリックし、入力テキスト(例:
"cat"
)を与えて実行してみてください。正常に動作すれば、猫をテーマにしたレストランのメニュー候補が表示されます。[検査] タブに、フローの実行履歴が表示されます。フローごとに、フローに渡されたパラメータと、実行時の各ステップのトレースを確認できます。