宣布推出 Genkit Go 1.0 和增强型 AI 辅助开发

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

我们很高兴宣布推出 Genkit Go 1.0,这是 Google 面向 Go 生态系统开源 AI 开发框架提供的首个生产就绪型稳定版本。在发布此版本的同时,我们还将引入 genkit init:ai-tools 命令,为您的 AI 辅助开发工作流提供强大助力。

Genkit 是用于构建 AI 驱动的全栈应用的开源框架。它为多个模型提供程序提供统一的接口,并为多模态内容、结构化输出、工具调用、检索增强生成 (RAG) 和代理工作流提供了简化的 API。有了 Genkit Go,您现在能以 Go 的速度、安全性和可靠性构建和部署生产就绪型 AI 应用。

TL;DR

Genkit Go 现已推出稳定版并可用于生产环境!

关键功能:

  • 使用 Go 结构体和 JSON 架构验证的类型安全 AI 工作流
  • 支持 Google AI、Vertex AI、OpenAI、Ollama 等平台的统一模型界面
  • 工具调用、RAG 和多模态支持
  • 丰富的本地开发工具,具有独立的 CLI 二进制文件和开发者界面
  • 通过 genkit init:ai-tools 命令集成 AI 编码助理,用于 Gemini CLI 等工具

准备好开始编码了吗?请查看我们的入门指南

Genkit Go 1.0 新功能

生产就绪

我们曾承诺为在 Go 中构建 AI 应用提供稳定、可靠的基础,而 Genkit Go 1.0 具象化了这一承诺。借助此版本,您可以放心使用 Genkit 将 AI 驱动的应用部署到生产环境中,因为您知道相关 API 足够稳定且经过良好测试。

我们预计使用 Genkit 1.* 编写的程序将像 Go 本身一样继续正确编译和运行,且不加改变,即使将来出现 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

统一模型界面

若您与多个 AI 模型提供商(包括 Google AI、Vertex AI、OpenAI、Anthropic 和 Ollama)合作,Genkit Go 可提供一致的单一界面。了解有关使用 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 可以让您的 AI 模型轻松访问外部函数和 API。请参阅完整的工具调用指南

// 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 应用,并为您提供几个便捷的命令来快速开展测试和迭代,例如运行和评估工作流。

交互式开发者界面

此开发者界面是测试和调试 AI 应用的可视化界面:

  • 交互式测试工作流:使用不同的输入运行工作流,并查看清楚呈现的结果
  • 通过细致的跟踪进行调试:准确可视化 AI 工作流正在分步执行的操作
  • 监控性能:跟踪延迟、Token 使用情况和成本
  • 测试不同提示:测试不同的提示和模型配置

通过 CLI 在 Go 应用旁边启动开发者界面:

genkit start -- go run .
Shell

以下是运行和检查上述 recipeGenerator 工作流时的体验:

隆重推出 genkit init:ai-tools

我们还很高兴推出 genkit init:ai-tools 命令,该命令对于在开发过程中与 AI 助理合作的方式来说,是一项重大革新。此功能现在可供 JavaScript 和 Go 开发者使用,可自动配置热门 AI 编码助理,使其与 Genkit 框架和工具无缝配合。了解有关 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. 创建一个 GENKIT.md 文件,其中包含关于 AI 助理且针对不同语言的全面说明

支持的 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. 启动开发者界面:

genkit start -- go run .
Shell

如需查看更多详细演示,请参阅入门指南

了解详情

Genkit Go 1.0 将 Go 的高性能和可靠性与 Genkit 的生产就绪型 AI 框架和工具相结合。我们真想赶快看到您构建的成果!

乐享编码!🚀