将 Firebase Genkit 与 Cloud Run 搭配使用

您可以使用 Cloud Run 将 Firebase Genkit flow 部署为 Web 服务。作为示例,本页面将引导您完成部署默认示例 flow 的过程。

  1. 安装 Google Cloud CLI(如果尚未安装)。

  2. 使用 Cloud 控制台创建新的 Google Cloud 项目,或选择现有 Google Cloud 项目。项目必须与结算账号相关联。

    创建或选择项目后,请将 Google Cloud CLI 配置为使用该项目:

    gcloud auth login
    gcloud init
    
  3. 为 Genkit 示例项目创建一个目录:

    mkdir -p ~/tmp/genkit-cloud-project
    cd ~/tmp/genkit-cloud-project
    

    如果您要使用 IDE,请用其打开此目录。

  4. 在项目目录中初始化 Go 模块:

    go mod init example/cloudrun
    
  5. 在项目中初始化 Genkit:

    genkit init
    

    选择要使用的模型提供方。

    对于其余提示,接受默认设置即可。genkit 工具将创建一个示例源文件,以便您开始开发自己的 AI flow。不过,在本教程的其余部分,您只需部署示例 flow 即可。

  6. 修改示例文件(main.gogenkit.go),明确指定 flow 服务器应监听的端口:

    if err := genkit.Init(ctx,
    	&genkit.Options{FlowAddr: ":3400"}, // Add this parameter.
    ); err != nil {
    	log.Fatal(err)
    }
    
  7. 向已部署的函数提供 API 凭据。根据您选择的模型提供方,执行以下操作之一:

    Gemini (Google AI)

    1. 确保您所在的区域提供 Google AI

    2. 使用 Google AI Studio 为 Gemini API 生成 API 密钥

    3. 在 Cloud Run 环境中提供 API 密钥:

      1. 在 Cloud 控制台中,启用 Secret Manager API
      2. Secret Manager 页面上,创建一个包含 API 密钥的新 Secret。
      3. 创建 Secret 后,在同一页面上,通过 Secret Manager Secret Accessor 角色为默认计算服务账号授予对 Secret 的访问权限。(您可以在 IAM 页面上查找默认计算服务账号的名称。)

      在后面的步骤中,当您部署服务时,需要引用此 Secret 的名称。

    Gemini (Vertex AI)

    1. 在 Cloud 控制台中,为您的项目启用 Vertex AI API

    2. IAM 页面上,确保为默认计算服务账号授予 Vertex AI User 角色。

    在本教程中,您只需要为模型提供方设置 Secret,但一般来说,您必须为 flow 使用的每项服务执行类似的操作。

  8. 可选:在开发者界面中试用 flow:

    1. 为您选择的模型提供方设置本地环境:

      Gemini (Google AI)

      export GOOGLE_GENAI_API_KEY=<your API key>
      

      Gemini (Vertex AI)

      export GCLOUD_PROJECT=<your project ID>
      export GCLOUD_LOCATION=us-central1
      gcloud auth application-default login
      
    2. 启动界面:

      genkit start
      
    3. 在开发者界面 (http://localhost:4000/) 中,运行 flow:

      1. 点击 menuSuggestionFlow

      2. 输入 JSON 标签页上,为模型提供一个主题:

        "banana"
        
      3. 点击运行

  9. 如果到目前为止一切正常,您便可以构建和部署 flow:

    Gemini (Google AI)

    gcloud run deploy --port 3400 \
      --update-secrets=GOOGLE_GENAI_API_KEY=<your-secret-name>:latest
    

    Gemini (Vertex AI)

    gcloud run deploy --port 3400 \
      --set-env-vars GCLOUD_PROJECT=<your-gcloud-project> \
      --set-env-vars GCLOUD_LOCATION=us-central1
    

    GCLOUD_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 '"banana"'