您可以使用 Cloud Run 将 Genkit flow 部署为 Web 服务。作为示例,本页面将引导您完成部署默认示例 flow 的过程。
安装 Google Cloud CLI(如果尚未安装)。
使用 Cloud 控制台创建新的 Google Cloud 项目,或选择现有 Google Cloud 项目。项目必须与结算账号相关联。
创建或选择项目后,请将 Google Cloud CLI 配置为使用该项目:
gcloud auth login
gcloud init
为 Genkit 示例项目创建一个目录:
mkdir -p ~/tmp/genkit-cloud-project
cd ~/tmp/genkit-cloud-project
如果您要使用 IDE,请用其打开此目录。
在项目目录中初始化 Go 模块:
go mod init example/cloudrun
go mod get github.com/firebase/genkit/go
使用 Genkit 创建示例应用:
package main import ( "context" "fmt" "log" "net/http" "os" "github.com/firebase/genkit/go/ai" "github.com/firebase/genkit/go/genkit" "github.com/firebase/genkit/go/plugins/googlegenai" "github.com/firebase/genkit/go/plugins/server" ) func main() { ctx := context.Background() // Initialize Genkit with the Google AI plugin and Gemini 2.0 Flash. // Alternatively, use &googlegenai.VertexAI{} and "vertexai/gemini-2.0-flash" // to use Vertex AI as the provider instead. g, err := genkit.Init(ctx, genkit.WithPlugins(&googlegenai.GoogleAI{}), genkit.WithDefaultModel("googleai/gemini-2.0-flash"), ) if err != nil { log.Fatalf("failed to initialize Genkit: %w", err) } flow := genkit.DefineFlow(g, "jokesFlow", func(ctx context.Context, topic string) (string, error) { resp, err := genkit.Generate(ctx, g, ai.WithPrompt(`Tell a short joke about %s. Be creative!`, topic), ) if err != nil { return "", fmt.Errorf("failed to generate joke: %w", err) } return resp.Text(), nil }) mux := http.NewServeMux() mux.HandleFunc("POST /jokesFlow", genkit.Handler(flow)) log.Fatal(server.Start(ctx, "127.0.0.1:"+os.Getenv("PORT"), mux)) }
向已部署的函数提供 API 凭据。根据您在上面的示例中所做的选择,选择您需要的凭据:
Gemini (Google AI)
使用 Google AI Studio 为 Gemini API 生成 API 密钥。
在 Cloud Run 环境中提供 API 密钥:
- 在 Cloud 控制台中,启用 Secret Manager API。
- 在 Secret Manager 页面上,创建一个包含 API 密钥的新 Secret。
- 创建 Secret 后,在同一页面上,通过 Secret Manager Secret Accessor 角色为默认计算服务账号授予对 Secret 的访问权限。(您可以在 IAM 页面上查找默认计算服务账号的名称。)
在后面的步骤中,当您部署服务时,需要引用此 Secret 的名称。
Gemini (Vertex AI)
在 Cloud 控制台中,为您的项目启用 Vertex AI API。
在 IAM 页面上,确保为默认计算服务账号授予 Vertex AI User 角色。
在本教程中,您只需要为模型提供方设置 Secret,但通常,您还需要对 flow 所使用的每项服务执行类似的配置操作。
可选:在开发者界面中试用 flow:
为您选择的模型提供方设置本地环境:
Gemini (Google AI)
export GEMINI_API_KEY=<your API key>
Gemini (Vertex AI)
export GOOGLE_CLOUD_PROJECT=<your project ID>
export GOOGLE_CLOUD_LOCATION=us-central1
gcloud auth application-default login
启动界面:
genkit start -- go run .
在开发者界面 (http://localhost:4000/) 中,运行 flow:
点击 jokesFlow。
在输入 JSON 标签页上,为模型提供一个主题:
"bananas"
点击运行。
如果到目前为止一切正常,您便可以构建和部署 flow:
Gemini (Google AI)
gcloud run deploy --port 3400 \ --update-secrets=GEMINI_API_KEY=<your-secret-name>:latest
Gemini (Vertex AI)
gcloud run deploy --port 3400 \ --set-env-vars GOOGLE_CLOUD_PROJECT=<your-gcloud-project> \ --set-env-vars GOOGLE_CLOUD_LOCATION=us-central1
(
GOOGLE_CLOUD_LOCATION
可配置您要使用的 Vertex API 区域。)当系统询问您是否要允许进行未经身份验证的调用时,请选择
N
。回答N
会将您的服务配置为需要 IAM 凭据。如需了解如何提供这些凭据,请参阅 Cloud Run 文档中的身份验证部分。
部署完成后,该工具会输出服务网址。您可以使用 curl
进行测试:
curl -X POST https://<service-url>/menuSuggestionFlow \
-H "Authorization: Bearer $(gcloud auth print-identity-token)" \
-H "Content-Type: application/json" -d '"bananas"'