Go 版 Firebase Genkit 库现已推出预览版!由于 Go 库目前处于 Alpha 版阶段,因此随着开发的推进,您可能会看到 API 和功能发生变化。我们建议仅将其用于原型设计和探索。
如果您发现库或本文档存在问题,请在我们的 GitHub 代码库中报告这些问题。
如需开始使用 Genkit,请安装 Genkit CLI 并在 Go 项目中运行 genkit init
。本页面的其余部分将介绍如何执行此操作。
要求
Go 1.22 或更高版本。请参阅官方 Go 文档中的下载并安装部分。
Node.js 20 或更高版本(适用于 Genkit CLI 和界面)。请参阅下一部分,了解有关安装 Node 的简要指南。
安装 Genkit
如果您的系统上尚未安装 Node 20 或更高版本,请立即安装。
建议:如果您的系统上尚未安装特定版本的 Node,可使用
nvm
和nvm-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
运行以下命令来安装 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 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 价格。
为模块名称指定任何值。例如:
example/genkit-intro
选择其余问题的默认答案,系统会使用一些示例代码初始化您的项目文件夹。
genkit init
命令会创建一个示例 Go 模块并安装所需的依赖项。文件main.go
包含一个 flowmenuSuggestionFlow
,该 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。
现在,您可以在机器上本地运行和探索 Genkit 功能和示例项目。下载并启动 Genkit 开发者界面:
genkit start
Genkit 开发者界面现已在您的机器上运行。当您在下一步中运行模型或 flow 时,您的机器将执行使 flow 的各个步骤协同工作所需的编排任务;对外部服务(例如 Gemini API)的调用将继续针对实时服务器进行。
此外,由于您处于开发环境,因此 Genkit 会将跟踪记录和 fllow 状态存储在本地文件中。
当您运行
genkit start
命令时,Genkit 开发者界面会自动下载并打开。借助开发者界面,您可以查看已定义的 flow 和已配置的模型,运行这些 flow 和模型,并检查之前运行的跟踪记录。您可以尝试以下部分功能:
在运行标签页上,您会看到一个包含您定义的所有 flow 以及已由插件配置的所有模型的列表。
点击 menuSuggestionFlow,并尝试使用一些输入文本(例如
"cat"
)运行它。如果一切顺利,您会获得一个猫主题餐厅的菜单建议。在检查标签页中,您会看到 flow 执行历史记录。对于每个 flow,您可以查看传递给 flow 的参数以及每个步骤运行时的跟踪记录。