将 QueryData 与应用集成

本教程介绍如何使用 Google Cloud 控制台在与 MongoDB 兼容的 Firestore 中设置和使用 QueryData,并将其与您的应用集成。了解如何构建上下文集文件、创建使用该上下文集文件的上下文集、使用 MCP Toolbox 调用 Conversational Analytics API 中的 QueryData 方法来针对自然语言问题生成与 MongoDB 兼容的查询语言 (MQL) 查询,并将其与您的应用集成。

如需了解详情,请参阅 QueryData 概览。

目标

本教程涵盖以下目标:

  • 创建数据库并为其填充数据。
  • 使用上下文工程智能体构建上下文集文件。
  • 创建上下文集并上传上下文集文件。
  • 在 Firestore Studio 中测试 QueryData 并生成 MQL 查询。
  • 使用 MCP Toolbox 中的 Gemini 数据分析 QueryData 工具将 QueryData 与您的应用集成。
  • 使用值搜索查询为 LLM 回答添加接地。

费用

在本文档中,您将使用 Google Cloud的以下收费组件:

您可使用价格计算器根据您的预计使用量来估算费用。

新 Google Cloud 用户可能有资格申请免费试用。

为避免继续计费,请在完成本文档中的任务后删除您创建的资源。如需了解详情,请参阅清理。

准备工作

在创建上下文集之前,请完成以下前提条件。

启用必需服务

为您的项目启用以下服务:

准备 Firestore 数据库

确保您拥有与 MongoDB 兼容的 Firestore 企业版数据库。

如果您要尝试本页面中的示例,建议您为此创建一个新数据库。如需了解详情,请参阅创建和管理数据库。

所需的角色和权限

  • 在项目级向 IAM 用户授予 roles/datastore.viewer、roles/serviceusage.serviceUsageConsumer 和 roles/geminidataanalytics.queryDataUser 角色。 如需了解详情,请参阅为项目添加 IAM 政策绑定。

填充 flights 和 airports 集合

在本部分中,您将使用提供的 MQL 脚本填充 flights 和 airports 集合。

  1. 在 Google Cloud 控制台中,前往 Firestore 页面。

    转到 Firestore

  2. 从列表中选择数据库。例如,如果您之前创建了新数据库,请选择该数据库。数据库必须是与 MongoDB 兼容的企业版数据库。

  3. 在导航菜单中,点击 Firestore Studio。

  4. 点击新的 MQL 编辑器标签页或新标签页以打开新标签页。

  5. 通过运行以下脚本,来填充 airports 集合。确保未选中只读选项。

  6. 通过运行以下脚本,来填充 flights 集合。确保未选中只读选项。

在 Firestore Studio 中创建上下文集

在本部分中,您将创建一个名为 flights-assistant 的上下文集。此上下文集不包含任何上传到其中的上下文集文件。

  1. 在 Google Cloud 控制台中,前往 Firestore 页面。

    前往 Firestore

  2. 从列表中选择数据库。该数据库必须是 MongoDB 兼容模式下的企业版数据库。

  3. 在导航菜单中,点击 Firestore Studio。

  4. 在探索器窗格中,点击上下文集旁边的查看操作 ()。

  5. 点击创建情境集。

  6. 在上下文集名称中,输入 flights-assistant。

  7. 点击创建。

在 Studio 中测试 QueryData

在本部分中,您将使用通过提出自然语言问题而设置的 flights-assistant 上下文来生成 MQL 查询。 由于上下文集未上传任何上下文集文件,因此即使提出包含上下文的问题(例如 nighttime traffic),QueryData 生成的查询也并非最佳。

  1. 在探索器窗格中,点击上下文集旁边的查看操作 ()。
  2. 点击测试上下文集。
  3. 在查询编辑器中,点击使用 QueryData 生成 MQL,搭配:flights-assistant。
  4. 输入以下自然语言问题以生成 MQL 查询,然后点击生成。

    Find flights from SFO to JFK.
    

    查看 MQL 查询。请注意,QueryData 会针对这个明确的问题生成正确的 MQL。

      db.flights.find({"departure_airport": "SFO", "arrival_airport": "JFK"})
    
  5. 在使用 QueryData 代理上下文“flights-assistant”生成 MQL 窗口中,点击修改。

  6. 输入以下自然语言问题以生成 MQL 查询,然后点击更新。

    Tell me flights that can help me beat nighttime traffic if traveling from New York
    

    数据库无法理解术语“nighttime流量”。这可能会导致其无法生成 MQL 查询,或者导致其生成忽略该字词的查询,如以下查询所示。

    // The database schema does not contain information about traffic.
    // Returning all flights departing from New York airports.
    db.flights.find({
      $and: [
        {
          "departure_airport": {"$regex": "New York", "$options": "i"}
        },
        {
          "$or": [
            {"departure_time": {"$exists": true}},
            {"arrival_time": {"$exists": true}}
          ]
        }
      ]
    })
    

为上下文集生成上下文

在本部分中,您将准备环境并创建一个上下文文件,以帮助提高上下文集的查询功能。

设置环境

您必须先准备好环境,然后才能开始生成上下文。

如需设置您的环境,请执行以下步骤:

  1. 安装 Antigravity CLI。如需了解详情,请参阅 Antigravity CLI 使用入门。
  2. 安装 Google Cloud CLI。
  3. 设置应用默认凭据 (ADC)。在终端中运行以下命令,以进行身份验证并选择项目:

    gcloud auth application-default login
    gcloud auth application-default set-quota-project PROJECT_ID
  4. 安装 uv,这是一个 Python 软件包和项目管理器,是上下文工程智能体的前提条件。如果您的系统上尚未安装 Python,uv 可以为您安装。

  5. 安装上下文工程代理:

    agy plugin install https://github.com/GoogleCloudPlatform/db-context-enrichment/tree/main/plugin
  6. 在终端中,启动 Antigravity CLI。

    agy
  7. 使用 MCP Toolbox 设置数据库连接,以便生成上下文。连接在 tools.yaml 配置文件中定义。

    如需在当前目录中创建 tools.yaml 配置文件,请输入如下提示:

    Help me set up context generation for a Firestore database with MongoDB compatibility.
    

    按照技能提供的说明操作。如需详细了解 tools.yaml 文件,请参阅 MCP Toolbox 文档。

  8. 如需在创建 tools.yaml 文件后重新加载配置,请在 Antigravity CLI 中运行以下命令,并按照说明重新加载 Toolbox MCP 服务器:

    /mcp
    1. 选择 db-context-engineering_toolbox。

    2. 选择 Restart。

  9. 验证 MCP Toolbox 和上下文工程智能体插件是否已连接并可供使用。

    /mcp

生成模板上下文

在本部分中,为了解决上一部分中 QueryData 无法识别术语 nighttime traffic 的问题,请在上下文集文件中将该术语定义为 5:00 PM 到 7:00 PM 之间发生的流量。

如需生成模板上下文,请执行以下步骤:

  1. 在 Antigravity CLI 中输入以下提示:

    Generate a template for the question: "Tell me flights that can help me beat nighttime traffic if traveling from New York" with the following MQL query:
    
    db.flights.aggregate([
      {
        "$lookup": {
          "from": "airports",
          "localField": "departure_airport",
          "foreignField": "iata",
          "as": "departure_airport_info",
          "pipeline": [{ "$project": { "_id": 0, "name": 1, "city": 1 } }]
        }
      },
      { "$unwind": { "path": "$departure_airport_info" } },
      {
        "$match": {
          "$expr": {
            "$and": [
              { "$eq": ["$departure_airport_info.city", "New York"] },
              {
                "$or": [
                  { "$lt": [{ "$hour": "$departure_time" }, 17] },
                  { "$gte": [{ "$hour": "$departure_time" }, 19] }
                ]
              }
            ]
          }
        }
      }
    ])
    
  2. 智能体会将您的输入转换为特定格式,从而优化上下文集在各种用户查询中的表现。如需了解详情,请参阅上下文集概览。

  3. 查看生成的查询模板。您可以将查询模板保存为新的代理上下文文件,也可以将其附加到现有代理上下文文件中。

  4. 提示智能体保存模板:

    Save it to context_set.json.
    

    智能体会在同一目录中创建该文件,并添加以下内容:

    {
      "templates": [
        {
          "nl_query": "Tell me flights that can help me beat nighttime traffic if traveling from New York",
          "sql": "db.flights.aggregate([\n  {\n    \"$lookup\": {\n      \"from\": \"airports\",\n      \"localField\": \"departure_airport\",\n      \"foreignField\": \"iata\",\n      \"as\": \"departure_airport_info\",\n      \"pipeline\": [{ \"$project\": { \"_id\": 0, \"name\": 1, \"city\": 1 } }]\n    }\n  },\n  { \"$unwind\": { \"path\": \"$departure_airport_info\" } },\n  {\n    \"$match\": {\n      \"$expr\": {\n        \"$and\": [\n          { \"$eq\": [\"$departure_airport_info.city\", \"New York\"] },\n          {\n            \"$or\": [\n              { \"$lt\": [{ \"$hour\": \"$departure_time\" }, 17] },\n              { \"$gte\": [{ \"$hour\": \"$departure_time\" }, 19] }\n            ]\n          }\n        ]\n      }\n    }\n  }\n])",
          "intent": "Tell me flights that can help me beat nighttime traffic if traveling from New York",
          "manifest": "Tell me flights that can help me beat nighttime traffic if traveling from a given city",
          "parameterized": {
            "parameterized_sql": "db.flights.aggregate([\n  {\n    \"$lookup\": {\n      \"from\": \"airports\",\n      \"localField\": \"departure_airport\",\n      \"foreignField\": \"iata\",\n      \"as\": \"departure_airport_info\",\n      \"pipeline\": [{ \"$project\": { \"_id\": 0, \"name\": 1, \"city\": 1 } }]\n    }\n  },\n  { \"$unwind\": { \"path\": \"$departure_airport_info\" } },\n  {\n    \"$match\": {\n      \"$expr\": {\n        \"$and\": [\n          { \"$eq\": [\"$departure_airport_info.city\", $1] },\n          {\n            \"$or\": [\n              { \"$lt\": [{ \"$hour\": \"$departure_time\" }, 17] },\n              { \"$gte\": [{ \"$hour\": \"$departure_time\" }, 19] }\n            ]\n          }\n        ]\n      }\n    }\n  }\n])",
            "parameterized_intent": "Tell me flights that can help me beat nighttime traffic if traveling from $1"
          }
        }
      ]
    }
    

将上下文集文件上传到 QueryData

在本部分中,您会将上下文集文件上传到 QueryData,以便提升 QueryData 在数据库上的 MQL 生成能力。

如需上传上下文,请执行以下步骤:

  1. 在 Google Cloud 控制台中,前往 Firestore 页面。

    前往 Firestore

  2. 从列表中选择数据库。该数据库必须是 MongoDB 兼容模式下的企业版数据库。

  3. 在导航菜单中,点击 Firestore Studio。

  4. 在探索器窗格中,在上下文集下,点击 flights-assistant 上下文集旁边的查看操作 () 图标。

  5. 点击修改上下文集。

  6. 点击上传上下文文件部分中的浏览,然后选择之前生成的上下文集文件。

  7. 点击保存。

使用 QueryData 生成 MQL 查询

在本部分中,您将使用上传的上下文集文件提出自然语言问题。这样,您就可以验证 QueryData 是否正确理解并应用了 nighttime traffic 等术语及其他相关短语的定义。

如需生成 MQL 查询,请执行以下步骤:

  1. 在探索器窗格中,点击上下文集旁边的查看操作 ()。
  2. 点击测试上下文集。
  3. 在查询编辑器中,点击使用 QueryData 生成 MQL,搭配:flights-assistant。
  4. 如需生成 MQL 查询,请输入以下自然语言问题,然后点击生成。

    Tell me flights that can help me beat nighttime traffic if traveling from New York
    

    生成的 MQL 查询如下所示:

    // Tell me flights that can help me beat nighttime traffic if traveling from New York
    db.flights.aggregate([
      {
        "$lookup": {
          "from": "airports",
          "localField": "departure_airport",
          "foreignField": "iata",
          "as": "departure_airport_info",
          "pipeline": [{ "$project": { "_id": 0, "name": 1, "city": 1 } }]
        }
      },
      { "$unwind": { "path": "$departure_airport_info" } },
      {
        "$match": {
          "$expr": {
            "$and": [
              { "$eq": ["$departure_airport_info.city", "New York"] },
              {
                "$or": [
                  { "$lt": [{ "$hour": "$departure_time" }, 17] },
                  { "$gte": [{ "$hour": "$departure_time" }, 19] }
                ]
              }
            ]
          }
        }
      }
    ])
    

    这与您添加到 QueryData 上下文中的问题相同。您会发现 QueryData 现在可以准确解读术语 nighttime traffic。

    虽然上下文源自某个特定问题,但 QueryData 会利用它来优化针对各种类似问题的 MQL 生成。

  5. 在使用 QueryData 代理上下文“flights-assistant”生成 MQL 窗口中,点击修改。

  6. 输入以下类似问题以生成 MQL 查询,然后点击更新。

    What are the flights that can help me avoid evening traffic if departing from Boston
    

    由于问题将术语 nighttime traffic 替换为类似术语 evening traffic,QueryData 通过应用相同的解释,为此问题提供了相同的答案。

    生成的 MQL 查询如下所示:

    // What are the flights that can help me avoid evening traffic if departing from Boston
    db.flights.aggregate([
      {
        "$lookup": {
          "from": "airports",
          "localField": "departure_airport",
          "foreignField": "iata",
          "as": "departure_airport_info",
          "pipeline": [{ "$project": { "_id": 0, "name": 1, "city": 1 } }]
        }
      },
      { "$unwind": { "path": "$departure_airport_info" } },
      {
        "$match": {
          "$expr": {
            "$and": [
              { "$eq": ["$departure_airport_info.city", "Boston"] },
              {
                "$or": [
                  { "$lt": [{ "$hour": "$departure_time" }, 17] },
                  { "$gte": [{ "$hour": "$departure_time" }, 19] }
                ]
              }
            ]
          }
        }
      }
    ])
    

将 QueryData 与您的应用集成

在本部分中,您将为航班查找应用创建一个数据智能体。此数据智能体为您之前创建的 flights 和 airports 表提供对话式界面。此外,还介绍了如何使用智能体开发套件 (ADK)、Gemini Data Analytics QueryData MCP 工具以及上下文集来创建此数据智能体并将其集成到应用中,以提高回答质量。

  1. 下载 MCP Toolbox 1.14.0 版或更高版本。MCP Toolbox 会将数据智能体公开为一种工具,供应用连接。MCP Toolbox 与您之前安装的上下文工程智能体不同,后者用于生成上下文。

  2. 设置应用默认凭证 (ADC)。

    gcloud auth application-default login
    gcloud auth application-default set-quota-project PROJECT_ID
  3. 找到您之前创建的上下文集的 ID。如需详细了解如何查找上下文集 ID,请参阅查找上下文集 ID。

  4. 将以下内容附加到 tools.yaml 配置,以使用 MCP Toolbox 连接到数据智能体。如需了解详情,请参阅 Gemini 数据分析 Source 和 Gemini 数据分析 QueryData 工具。

    kind: source
    name: gda-api-source
    type: cloud-gemini-data-analytics
    projectId: "PROJECT_ID"
    ---
    kind: tool
    name: cloud_gda_query_tool
    type: cloud-gemini-data-analytics-query
    source: gda-api-source
    description: Use this tool to send natural language queries to the Gemini Data Analytics API and receive MongoDB-compatible query language (MQL), natural language answers, and explanations.
    location: "REGION_ID"
    context:
      datasourceReferences:
        firestoreReference:
          databaseReference:
            projectId: "PROJECT_ID"
            databaseId: "DATABASE_ID"
          agentContextReference:
            contextSetId: "CONTEXT_SET_ID"
    generationOptions:
      generateQueryResult: true
      generateNaturalLanguageAnswer: true
      generateExplanation: true
      generateDisambiguationQuestion: true
    

    替换以下内容:

    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • DATABASE_ID:要连接的数据库名称。
    • REGION_ID:数据库所在的区域(例如 us-central1)。
    • CONTEXT_SET_ID:上下文集 ID。如需详细了解如何查找上下文集 ID,请参阅查找上下文集 ID。
  5. 使用 tools.yaml 文件运行 MCP Toolbox 服务器。

    ./toolbox --config PATH_TO_TOOLS_YAML

    将 PATH_TO_TOOLS_YAML 替换为您之前创建的 tools.yaml 文件的路径。

  6. 创建一个 ADK 应用,该应用使用 MCP Toolbox 的 Python SDK 调用 Gemini 数据分析 QueryData 工具。如需详细了解如何使用 MCP Toolbox 的 Python SDK,请参阅 Toolbox 快速入门;如需了解如何使用 Python ADK,请参阅 ADK 快速入门。

    1. 创建一个用于存储应用的目录,例如 flight-assistant-app。
    2. 将目录更改为 flight-assistant-app 目录。

      mkdir flight-assistant-app
      cd flight-assistant-app
    3. 在 flight-assistant-app 目录下运行以下命令,以创建虚拟环境并安装所需组件。

      uv init
      uv add google-adk toolbox-core google-genai
    4. 设置 ADK 智能体。

      1. 创建 ADK 智能体。

        uv run adk create my_agent
      2. 选择 gemini-2.5-flash 模型或更新的模型。

      3. 选择 Google AI,然后输入您的 Gemini API 密钥。如需详细了解如何查找 API 密钥,请参阅使用 Gemini API 密钥。(或者,如果您不需要免费试用,可以选择 Vertex AI,指定一个已启用结算功能的 Google Cloud 项目,并在系统提示您输入 Google Cloud 区域 (Enter Google Cloud region) 时输入 global,以便在 my_agent/.env 中设置 GOOGLE_CLOUD_LOCATION=global)。

    5. 将 agent.py 文件的内容替换为以下航班数据助理示例应用代码。

      from typing import cast
      
      from google.adk.agents.llm_agent import Agent
      from google.adk.agents.llm_agent import ToolUnion
      
      from toolbox_core import ToolboxSyncClient
      
      TOOLBOX_URL = "http://127.0.0.1:5000"
      
      INSTRUCTION = """
      # ROLE
      You are a friendly and factual flight data assistant. Your goal is to help users find the best flights for their needs by providing accurate information with a helpful, professional tone.
      - use the Query Data Tool to answer the user's question, if the tool fails to generate a valid query, ask the user to clarify their question.
      
      # OPERATIONAL CONSTRAINTS
      - TOOL LIMITATION: You only have access to the Query Data Tool. Do not claim to have capabilities beyond what this tool provides.
      - TRANSPARENCY POLICY: Maintain a seamless user experience. Never mention that you are using a tool, querying a database, or generating MQL. Frame all responses as your own direct assistance.
      - SCOPE MANAGEMENT: If a user asks for something beyond your capabilities, politely state that you cannot perform that specific task. Guide the user towards what you can help with.
      
      # COMMUNICATION STYLE
      - Be concise and scannable when listing answers.
      - Maintain a helpful, professional persona.
      
      =====
      
      # QUERY DATA TOOL
      
      Inputs:
      1. query: A natural language formulation of a database query.
      
      Outputs: (all optional)
      1. disambiguation_question: Clarification questions or comments where the tool needs the users' input.
      2. generated_query: The generated query for the user query.
      3. intent_explanation: An explanation for why the tool produced `generated_query`.
      4. query_result: The result of executing `generated_query`.
      5. natural_language_answer: The natural language answer that summarizes the `query` and `query_result`.
      
      Usage guidance:
      1. If `disambiguation_question` is produced, then solicit the needed inputs from the user and try the tool with a new `query` that has the needed clarification.
      2. If `natural_language_answer` is produced, use `intent_explanation` and `generated_query` to see if you need to clarify any assumptions for the user.
      3. If the tool output indicates failure or empty results, explain that clearly using the provided reasoning.
      """
      
      client = ToolboxSyncClient(TOOLBOX_URL)
      
      mcp_tool = client.load_tool("cloud_gda_query_tool")
      
      root_agent = Agent(
          model="gemini-2.5-flash",  # Or newer.
          name="root_agent",
          instruction=INSTRUCTION,
          tools=cast(list[ToolUnion], [mcp_tool]),
      )
      
  7. 如需启动应用,请在 flight-assistant-app 目录下运行以下命令。通过 http://127.0.0.1:8000 访问 ADK Web 服务器。

    uv run adk web --port 8000
  8. 输入任意文本(例如 hello),开始与智能体互动。

    ADK 智能体回答一般问题并调用所需的 MCP 工具。

  9. 输入以下与航班相关的问题。

    How many flights depart from the west side?
    

    系统会调用 MCP 工具来回答此问题。不过,由于“the west”一词含义模糊,并未指定任何机场,因此 MCP 工具会返回一个消除歧义的问题,智能体将使用该问题来构建回答。

    I cannot determine how many flights depart from the 'west side' as the database does not contain information about which airports are considered to be on the 'west side'. However, I can help you with questions like:
    
    1. How many flights depart from a specific airport?
    
    2. What are the departure airports for all flights?
    
    3. How many flights depart from each airport? Would you like to rephrase your question based on these options?
    
  10. 输入与为智能体生成的查询模板中的问题类似的问题。

    Help me find flights from San Francisco that avoid the evening rush hour.
    

    根据之前添加的 QueryData 上下文,MCP 工具知道 evening traffic 发生在下午 5 点到晚上 7 点之间。MCP 工具会返回相关数据,供智能体在构建回答时使用。

    Here are the flights departing from San Francisco that avoid the evening rush hour (defined as 5 PM to 7 PM):
    
    * UA 1532 departing at 05:50:00
    * UA 1158 departing at 05:57:00
    * CY 922 departing at 06:38:00
    * OO 5441 departing at 07:08:00
    * UA 616 departing at 07:14:00
    * AA 24 departing at 07:14:00
    * B6 434 departing at 08:00:00
    * AA 242 departing at 08:18:00
    * UA 1739 departing at 08:22:00
    * OO 6336 departing at 08:32:00
    * US 1784 departing at 08:47:00
    * DL 1631 departing at 09:00:00
    * DL 1106 departing at 09:06:00
    * OO 5427 departing at 09:06:00
    * CY 352 departing at 09:25:00
    

迭代智能体性能

通过 ADK Web 界面,您可以检查 Gemini 数据分析 QueryData MCP 工具的请求和回答。您可以使用此响应来观察工具响应,例如生成的 MQL 查询、结果集、意图说明、消除歧义问题和自然语言回答,以帮助您确认代理回答的正确性。

例如,对于您之前输入的文本 How many flights depart from the west side?,点击代理气泡。在左侧导航栏的事件标签页中,展开 functionResponse 以查看以下响应。

"{"disambiguationQuestion": ["[NOT_ENOUGH_INFO] The database schema does not
contain information about which airports are on the 'west side'. Therefore, I
cannot determine how many flights depart from the west side.Possible alternative
questions: 1. How many flights depart from a specific airport? 2. What are the
departure airports for all flights? 3. How many flights depart from each
airport?"]}"

提高回答的准确性

您可以通过添加更多上下文,不断提高 Gemini 数据分析 QueryData 工具回答的准确性。使用上下文工程智能体生成上下文,然后将更新后的上下文集文件上传到现有的 flights-assistant 数据智能体。如需了解详情,请参阅在 Firestore Studio 中管理上下文集。控制台会在您上传新上下文后立即提取这些内容,让您能够在不中断应用运行的情况下提高智能体的准确性。

多个智能体

在开发环境中,您可以通过在 tools.yaml 文件中为工具分配不同的名称,对多个数据智能体上下文执行 A/B 测试。例如,您可以通过定义两个具有不同名称(例如 cloud_gda_query_tool_v1 和 cloud_gda_query_tool_v2)的 cloud-gemini-data-analytics-query 工具来创建唯一的 tools.yaml 配置。通过此设置,您可以实现应用逻辑,以编程方式选择相应的工具名称,从而选择所需的上下文版本。

以下示例 tools.yaml 展示了如何为数据库来源设置多个数据智能体:

kind: source
name: gda-api-source
type: cloud-gemini-data-analytics
projectId: PROJECT_ID
---
kind: tool
name: cloud_gda_query_tool_v1
type: cloud-gemini-data-analytics-query
source: gda-api-source
context:
  datasourceReferences:
    DB_SOURCE:
      databaseReference: ...
      agentContextReference:
        contextSetId: "V1_YOUR_CONTEXT_SET_ID"
generationOptions: ...
---
kind: tool
name: cloud_gda_query_tool_v2
type: cloud-gemini-data-analytics-query
source: gda-api-source
context:
  datasourceReferences:
    DB_SOURCE:
      databaseReference: ...
      agentContextReference:
        contextSetId: "V2_YOUR_CONTEXT_SET_ID"
generationOptions: ...

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • V1_YOUR_CONTEXT_SET_ID:版本 1 的上下文集 ID。
  • V2_YOUR_CONTEXT_SET_ID:版本 2 的上下文集 ID。
  • DB_SOURCE:数据库来源配置。

访问权限控制和安全注意事项

在预览版发布阶段,适用于与 MongoDB 兼容的 Firestore 的 QueryData 不支持精细访问权限控制。 将 QueryData 与应用集成时,请考虑如何控制数据访问权限:

  • 数据库级粒度:可以使用数据库级的 IAM 条件来控制访问粒度。但是,在集合、文档或字段级别没有精细的访问权限控制。
  • 完整数据库读取权限:数据智能体对整个数据库具有读取权限。智能体生成的任何查询都可以从该数据库中的所有集合、文档和字段中读取数据。数据智能体不受 Firebase 安全规则的限制。
  • 应用用户范围:由于不支持精细访问权限控制,因此您无法根据应用用户身份限制对特定集合、文档或字段的数据访问。QueryData 生成的查询会使用应用所用数据库用户或服务账号的完整读取权限执行。

清理

完成本教程后,请删除您创建的资源,以免产生持续费用。以下部分介绍如何删除这些资源。

删除上下文集

在删除数据库之前,请先删除您创建的上下文集。

  1. 在 Google Cloud 控制台中,前往 Firestore 页面。

    前往 Firestore

  2. 从列表中选择数据库。该数据库必须是 MongoDB 兼容模式下的企业版数据库。

  3. 在导航菜单中,点击 Firestore Studio。

  4. 在探索器窗格中,点击上下文集旁边的查看操作 ()。

  5. 点击删除上下文集。

  6. 在删除上下文集窗口中,输入 flights-assistant。

  7. 点击确认。

删除数据库

删除您在准备工作部分中创建的数据库时,您创建的所有对象也会一并删除。

  1. 在 Google Cloud 控制台中,前往 Firestore 页面。

    前往 Firestore

  2. 找到要删除的数据库名称所在的行。

  3. 点击操作 () 图标,然后点击删除。

  4. 输入数据库名称,然后点击删除,以确认您要删除该数据库。

后续步骤