Genkit Go 1.0 および AI を活用した開発の強化に関するお知らせ

2025年9月9日
Chris Gill Product Manager
Cameron Balahan Group Product Manager

Google はこの度、Genkit Go 1.0 をリリースいたします。これは、Go エコシステム向けに Google が提供する、オープンソース AI 開発フレームワークの初の安定版かつプロダクション レディなリリースです。また、これに合わせ、AI を活用した開発ワークフローを大幅に強化する genkit init:ai-tools コマンドも新たにリリースいたします。

Genkit は、フルスタックの AI 搭載アプリケーションを構築するためのオープンソース フレームワークです。複数のモデル プロバイダに対応する統合インターフェースや、マルチモーダル コンテンツ、構造化出力、ツールの呼び出し、検索拡張生成(RAG)、エージェント ワークフロー向けの効率的な API を提供します。Genkit Go により、Go のスピードや安全性、信頼性を活かしながら、プロダクション レディな AI アプリケーションを構築、デプロイできるようになります。

TL;DR

Genkit Go が安定版となり、本番環境で利用可能になりました。

主な機能:

  • Go の構造体と JSON スキーマ検証によるタイプセーフな AI フロー
  • Google AI、Vertex AI、OpenAI、Ollama などをサポートする統合モデル インターフェース
  • ツールの呼び出し、RAG、マルチモーダルのサポート
  • スタンドアロンの CLI バイナリとデベロッパー UI を備えた充実のローカル開発ツール
  • genkit init:ai-tools コマンドを利用した、AI コーディング アシスタントの統合Gemini CLI などのツールに対応)

さあコーディングを始めましょう。スタートガイドをご覧ください。

Genkit Go 1.0 の新機能

プロダクション レディ

Genkit Go 1.0 は、Go で AI 搭載アプリケーションを構築するための信頼性の高い安定した基盤を提供するという、Google の取り組みを体現するものです。本リリースにより、API が安定しており、十分にテスト済みであるという安心感を持って、Genkit を使い、本番環境に AI 搭載アプリケーションをデプロイできるようになります。

また、Go 自体と同様に、Genkit 1.* で作成されたプログラムは、今後 Genkit の「ポイント」リリース(Genkit 1.1、Genkit 1.2 など)が登場しても、変わることなく正常に、コンパイルおよび動作することが想定されています。

タイプセーフな AI フロー

Genkit の最も強力な機能のひとつがフローです。これは AI ユースケース向けの関数で、オブザーバビリティや簡易なテスト、簡素化されたデプロイを実現します。以下は、構造化されたレシピを Go で生成するためのフローを定義する方法です。

package main
 
import (
    "context"
    "encoding/json"
    "fmt"
    "log"
 
    "github.com/firebase/genkit/go/ai"
    "github.com/firebase/genkit/go/genkit"
    "github.com/firebase/genkit/go/plugins/googlegenai"
)
 
// Define your data structures
type RecipeInput struct {
    Ingredient          string `json:"ingredient" jsonschema:"description=Main ingredient or cuisine type"`
    DietaryRestrictions string `json:"dietaryRestrictions,omitempty" jsonschema:"description=Any dietary restrictions"`
}
 
type Recipe struct {
    Title        string   `json:"title"`
    Description  string   `json:"description"`
    PrepTime     string   `json:"prepTime"`
    CookTime     string   `json:"cookTime"`
    Servings     int      `json:"servings"`
    Ingredients  []string `json:"ingredients"`
    Instructions []string `json:"instructions"`
    Tips         []string `json:"tips,omitempty"`
}
 
func main() {
    ctx := context.Background()
 
    // Initialize Genkit with plugins
    g := genkit.Init(ctx,
        genkit.WithPlugins(&googlegenai.GoogleAI{}),
        genkit.WithDefaultModel("googleai/gemini-2.5-flash"),
    )
 
    // Define a type-safe flow
    recipeFlow := genkit.DefineFlow(g, "recipeGeneratorFlow", 
        func(ctx context.Context, input *RecipeInput) (*Recipe, error) {
            dietaryRestrictions := input.DietaryRestrictions
            if dietaryRestrictions == "" {
                dietaryRestrictions = "none"
            }
 
            prompt := fmt.Sprintf(`Create a recipe with the following requirements:
                Main ingredient: %s
                Dietary restrictions: %s`, input.Ingredient, dietaryRestrictions)
 
            // Generate structured data with type safety
            recipe, _, err := genkit.GenerateData[Recipe](ctx, g,
                ai.WithPrompt(prompt),
            )
            if err != nil {
                return nil, fmt.Errorf("failed to generate recipe: %w", err)
            }
 
            return recipe, nil
        })
 
    // Run the flow
    recipe, err := recipeFlow.Run(ctx, &RecipeInput{
        Ingredient:          "avocado",
        DietaryRestrictions: "vegetarian",
    })
    if err != nil {
        log.Fatalf("could not generate recipe: %v", err)
    }
 
    // Print the structured recipe
    recipeJSON, _ := json.MarshalIndent(recipe, "", "  ")
    fmt.Println("Sample recipe generated:")
    fmt.Println(string(recipeJSON))
 
    <-ctx.Done() // Used for local testing only
}
Go

統合モデル インターフェース

Genkit Go は、Google AI、Vertex AI、OpenAI、Anthropic、Ollama など、複数の AI モデル プロバイダを扱うための一貫性のある単一のインターフェースを提供します。詳しくは、AI モデルを使ったコンテンツの生成についてご覧ください。

// Use Google AI models
resp, err := genkit.Generate(ctx, g,
    ai.WithModelName("googleai/gemini-2.5-flash"),
    ai.WithPrompt("What is the weather like today?"),
)
 
// Use OpenAI models
resp, err := genkit.Generate(ctx, g,
    ai.WithModelName("openai/gpt-4o"),
    ai.WithPrompt("How are you today?"),
)
 
// Switch to Ollama for local models
resp, err := genkit.Generate(ctx, g,
    ai.WithModelName("ollama/llama3"),
    ai.WithPrompt("What is the meaning of life?"),
)
Go

ツールの呼び出し

Genkit Go を使えば、外部の関数や API へのアクセスを AI モデルに簡単に付与できます。詳しくは、ツールの呼び出しに関する完全ガイドをご覧ください。

// Define a tool
type WeatherInput struct {
    Location string `json:"location" jsonschema_description:"Location to get weather for"`
}
 
getWeatherTool := genkit.DefineTool(g, "getWeather", 
    "Gets the current weather in a given location",
    func(ctx *ai.ToolContext, input WeatherInput) (string, error) {
        // Your weather API logic here
        return fmt.Sprintf("The current weather in %s is 72°F and sunny.", input.Location), nil
    })
 
// Use the tool in generation
resp, err := genkit.Generate(ctx, g,
    ai.WithPrompt("What's the weather in San Francisco?"),
    ai.WithTools(getWeatherTool),
)
Go

簡単なデプロイ

最小限の設定で、HTTP エンドポイントとしてフローをデプロイできます。その他のオプションについては、デプロイガイドをご覧ください。

// Create HTTP handlers for your flows
mux := http.NewServeMux()
mux.HandleFunc("POST /recipeGeneratorFlow", genkit.Handler(recipeFlow))
 
// Start the server
log.Fatal(server.Start(ctx, "127.0.0.1:3400", mux))
Go

充実したデベロッパー ツール

Genkit Go には、AI アプリケーションを迅速かつ直感的に構築することを可能にする、包括的な開発ツールのセットが搭載されています。Go の開発ワークフローとシームレスに連携する単一の CLI を通じて、このローカル ツールチェーン全体を利用できます。

スタンドアロン CLI のインストール

スタンドアロン CLI バイナリで、すぐに利用を開始できます。他のランタイムのインストールは不要です。

MacOS および Linux の場合:

curl -sL cli.genkit.dev | bash
Shell

Windows の場合: cli.genkit.dev から直接ダウンロードします

この CLI は、JavaScript、Go、Python といったサポート対象の言語で作成された Genkit アプリケーションに対応しており、フローの実行や評価など、迅速なテストや反復処理を可能にする便利なコマンドを複数提供しています。

インタラクティブなデベロッパー UI

デベロッパー UI は、AI アプリケーションのテストやデバッグのためのビジュアル インターフェースを提供します。

  • フローのインタラクティブなテスト: 異なる入力でフローを実行し、きれいにレンダリングされた結果を確認できます
  • 詳細なトレースによるデバッグ: AI フローが実行している内容をステップごとに正確に可視化できます
  • パフォーマンスの監視: レイテンシ、トークン使用量、コストを追跡できます
  • プロンプトのテスト: さまざまなプロンプトやモデル構成をテストできます

CLI を通じて、Go アプリケーションと並行してデベロッパー UI を起動できます。

genkit start -- go run .
Shell

以下は、先ほどの recipeGenerator フローを実行、確認した際の様子です。

genkit init:ai-tools のご紹介

Google では、この度、開発時における AI アシスタントとの連携方法に革新をもたらす、genkit init:ai-tools コマンドもリリースいたしました。これは、主要な AI コーディング アシスタントを自動的に設定し、Genkit フレームワークやツールとシームレスに連携できるようにする機能で、JavaScript および Go デベロッパー向けに提供が開始されています。詳しくは、Genkit における AI を活用した開発をご覧ください。

このコマンドを使用するには、Genkit CLI をインストールし、以下を実行します。

genkit init:ai-tools
Shell

このコマンドを実行すると、以下が行われます。

  1. 既存の AI アシスタントの設定が検出され、現在の設定が維持される
  2. 強力な開発ツールを備えた Genkit MCP サーバーがインストールされる
    • lookup_genkit_docs: genkit.dev から Genkit ドキュメントを検索する
    • list_flows: 現在の Genkit アプリ内のすべてのフローを一覧表示する
    • run_flow: テスト入力でフローを実行する
    • get_trace: デバッグや分析のための実行トレースを取得する
  1. AI アシスタント向けの言語別の包括的な指示を含んだ GENKIT.md ファイルが作成される

サポートされている AI ツール

このコマンドには、以下のサポートが組み込まれています。

  • Gemini CLI - Google が提供する CLI ベースの AI コーディング アシスタント
  • Firebase Studio - Firebase が提供するクラウドベースのエージェント開発環境
  • Claude Code - Anthropic が提供するコーディング アシスタント
  • Cursor - AI 搭載のコードエディタ

その他のツールについては、「汎用」オプションを選択すると、手動で統合可能な GENKIT.md ファイルを取得できます。

強化された開発エクスペリエンス

AI アシスタントの統合により、次のことが可能になります。

  • Genkit Go API について質問し、正確かつ最新の回答を得る
  • ベスト プラクティスに沿った Go 固有の Genkit コードを生成する
  • AI アシスタントにトレースを分析させ、フローをデバッグする
  • AI が生成した入力でアプリケーションをテストする
  • Go 固有のパターンや慣用的なコードについてサポートを受ける

クイック スタート

1. 新しいプロジェクトを作成します。

mkdir my-genkit-app && cd my-genkit-app
go mod init example/my-genkit-app
Shell

2. Genkit と CLI をインストールします。

go get github.com/firebase/genkit/go
curl -sL cli.genkit.dev | bash
Shell

3. AI アシスタントの統合を設定します。

genkit init:ai-tools
Shell

4. 最初のフローを作成します(上記の例を使用)。

5. デベロッパー UI を開始します。

genkit start -- go run .
Shell

より詳細なチュートリアルについては、スタートガイドをご覧ください。

詳細を見る

Genkit Go 1.0 は、Go が誇る高い性能と信頼性を、Genkit のプロダクション レディな AI フレームワークおよびツールと融合させたものです。Genkit Go 1.0 を利用して、皆様が開発されるアプリを楽しみにしております。

それでは、コーディングをお楽しみください。