通过 Go 开始使用 Genkit(Alpha 版)

Go 版 Firebase Genkit 库现已发布预览版!由于 Go 库目前处于 Alpha 版测试阶段,您可能会看到 API 和功能更改, 开发进度。我们建议仅将其用于原型设计和 。

如果您发现这些库或本文档存在问题,请向我们报告 放在我们的 GitHub 代码库

如需开始使用 Genkit,请安装 Genkit CLI 并运行 在 Go 项目中使用 genkit init。本页的其余部分将介绍具体方法。

要求

  • Go 1.22 或更高版本

  • Node.js 20 或更高版本(适用于 Genkit CLI 和界面)

    建议:nvmnvm-windows 工具是 安装特定版本的 Node(如果尚未安装)的便捷方法 。这些工具按用户安装 Node,因此您可以 无需在系统范围内进行更改

    如需在类似 Unix 的系统(例如 macOS 或 Linux)上安装 nvm,请运行以下命令: 命令:

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    

    然后,如需使用 nvm 安装 Node,请打开一个新的 shell 并运行以下命令 命令:

    nvm install 20
    

过程

  1. 运行以下命令来安装 Genkit CLI:

    npm i -g genkit
    

    此命令会将 Genkit CLI 安装到您的 Node 安装目录中 以便在 Node 项目外部使用。

  2. 创建新的项目目录:

    mkdir genkit-intro && cd genkit-intro
    
  3. 初始化 Genkit 项目:

    genkit init
    
    1. 选择 Go 作为运行时环境。

    2. 选择您的模型:

      Gemini (Google AI)

      最简单的入门方法是使用 Google AI Gemini API。请确保 是

      生成 API 密钥,以便 Gemini 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 价格

    3. 为模块名称指定任何内容。例如:example/genkit-intro

    4. 选择其余问题的默认答案 使用一些示例代码初始化您的项目文件夹。

    genkit init 命令会创建一个示例 Go 模块,并安装 所需的依赖项文件 main.go 包含一个数据流, menuSuggestionFlow 来提示 LLM 针对 特定主题的餐馆

    该文件应如下所示(插件配置步骤 可能有所不同):

    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 := m.Generate(ctx,
                ai.NewGenerateRequest(
                    &ai.GenerationCommonConfig{Temperature: 1},
                    ai.NewUserTextMessage(fmt.Sprintf(`Suggest an item for the menu of a %s themed restaurant`, input))),
                nil)
            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, err := resp.Text()
            if err != nil {
                return "", fmt.Errorf("menuSuggestionFlow: %v", err)
            }
            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) 等工作负载。

  4. 现在,您可以在本地运行和探索 Genkit 功能和示例项目 。下载并启动 Genkit 开发者界面:

    genkit start
    

    欢迎使用
Genkit 开发者界面

    Genkit Developer UI 现在正在您的机器上运行。运行模型时 或数据流,您的机器将执行编排任务, 将流程的各个步骤协同工作所需的资源;外部调用 Gemini API 等服务 服务器

    此外,由于你处于开发环境中,Genkit 会存储跟踪记录和 流状态。

  5. Genkit Developer UI 会在您运行 genkit start 命令。

    在开发者界面中,您可以查看已定义的流以及 配置、运行这些命令,以及检查之前运行的轨迹。尝试 这些功能:

    • 运行 (Run) 标签页上,您会看到已配置的所有流的列表。 以及通过插件配置的任何模型。

      点击 menuSuggestionFlow,然后尝试使用一些输入文本( 示例 "cat")。如果一切进展顺利,您将获得一份菜单奖励 给出了一个关于猫咪主题餐馆的建议。

    • Inspect 标签页中,您将看到流执行的历史记录。对于每个 您可以看到传递到流的参数和跟踪记录 每个步骤的运行情况