Go 版 Firebase Genkit 库现已发布预览版!由于 Go 库目前处于 Alpha 版测试阶段,您可能会看到 API 和功能更改, 开发进度。我们建议仅将其用于原型设计和 。
如果您发现这些库或本文档存在问题,请向我们报告 放在我们的 GitHub 代码库中
如需开始使用 Genkit,请安装 Genkit CLI 并运行
在 Go 项目中使用 genkit init
。本页的其余部分将介绍具体方法。
要求
Go 1.22 或更高版本
Node.js 20 或更高版本(适用于 Genkit CLI 和界面)
建议:
nvm
和nvm-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
过程
运行以下命令来安装 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。请确保 是
生成 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 价格。
为模块名称指定任何内容。例如:
example/genkit-intro
选择其余问题的默认答案 使用一些示例代码初始化您的项目文件夹。
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) 等工作负载。
现在,您可以在本地运行和探索 Genkit 功能和示例项目 。下载并启动 Genkit 开发者界面:
genkit start
Genkit Developer UI 现在正在您的机器上运行。运行模型时 或数据流,您的机器将执行编排任务, 将流程的各个步骤协同工作所需的资源;外部调用 Gemini API 等服务 服务器
此外,由于你处于开发环境中,Genkit 会存储跟踪记录和 流状态。
Genkit Developer UI 会在您运行
genkit start
命令。在开发者界面中,您可以查看已定义的流以及 配置、运行这些命令,以及检查之前运行的轨迹。尝试 这些功能:
在运行 (Run) 标签页上,您会看到已配置的所有流的列表。 以及通过插件配置的任何模型。
点击 menuSuggestionFlow,然后尝试使用一些输入文本( 示例
"cat"
)。如果一切进展顺利,您将获得一份菜单奖励 给出了一个关于猫咪主题餐馆的建议。在 Inspect 标签页中,您将看到流执行的历史记录。对于每个 您可以看到传递到流的参数和跟踪记录 每个步骤的运行情况