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

Go 版 Firebase Genkit 库现已推出预览版!由于 Go 库目前处于 Alpha 版阶段,因此随着开发的推进,您可能会看到 API 和功能发生变化。我们建议仅将其用于原型设计和探索。

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

如需开始使用 Genkit,请安装 Genkit CLI 并在 Go 项目中运行 genkit init。本页面的其余部分将介绍如何执行此操作。

要求

  • Go 1.22 或更高版本。请参阅官方 Go 文档中的下载并安装部分。

  • Node.js 20 或更高版本(适用于 Genkit CLI 和界面)。请参阅下一部分,了解有关安装 Node 的简要指南。

安装 Genkit

  1. 如果您的系统上尚未安装 Node 20 或更高版本,请立即安装。

    建议:如果您的系统上尚未安装特定版本的 Node,可使用 nvmnvm-windows 工具轻松进行安装。这些工具会按用户安装 Node,因此您无需进行系统范围的更改。

    如需安装 nvm,请执行以下步骤:

    Linux、macOS 等

    运行以下命令:

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

    Windows

    按照 nvm-windows 文档中的说明下载并运行安装程序。

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

    nvm install 20
    
  2. 运行以下命令来安装 Genkit CLI:

    npm i -g genkit
    

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

创建和探索示例项目

  1. 创建新的项目目录:

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

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

    2. 选择模型:

      Gemini (Google AI)

      最简单的入门方法是使用 Google AI Gemini API。请确保您所在的区域提供 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,它还提供 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 包含一个 flow menuSuggestionFlow,该 flow 会提示 LLM 为具有指定主题的餐厅推荐菜品。

    该文件类似于以下内容(如果您选择了 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] 等)的 flow。

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

    genkit start
    

    欢迎使用 Genkit 开发者界面

    Genkit 开发者界面现已在您的机器上运行。当您在下一步中运行模型或 flow 时,您的机器将执行使 flow 的各个步骤协同工作所需的编排任务;对外部服务(例如 Gemini API)的调用将继续针对实时服务器进行。

    此外,由于您处于开发环境,因此 Genkit 会将跟踪记录和 fllow 状态存储在本地文件中。

  4. 当您运行 genkit start 命令时,Genkit 开发者界面会自动下载并打开。

    借助开发者界面,您可以查看已定义的 flow 和已配置的模型,运行这些 flow 和模型,并检查之前运行的跟踪记录。您可以尝试以下部分功能:

    • 运行标签页上,您会看到一个包含您定义的所有 flow 以及已由插件配置的所有模型的列表。

      点击 menuSuggestionFlow,并尝试使用一些输入文本(例如 "cat")运行它。如果一切顺利,您会获得一个猫主题餐厅的菜单建议。

    • 检查标签页中,您会看到 flow 执行历史记录。对于每个 flow,您可以查看传递给 flow 的参数以及每个步骤运行时的跟踪记录。