GPT Action 库:BigQuery

简介

本页面为开发者提供构建特定应用程序的 GPT Action 的说明和指南。在继续之前,请确保您已熟悉以下信息:

此特定的 GPT Action 提供了连接到 Google BigQuery(Google Cloud 的分析数据仓库)的概述。此 Action 接收用户的问题,扫描相关表以收集数据模式,然后编写 SQL 查询来回答用户的问题。

注意:这些说明返回的是功能性的 SQL 语句,而不是结果本身。目前需要中间件来返回 CSV 文件——我们很快就会发布关于该示例的说明。

价值 + 示例业务用例

价值:用户现在可以利用 ChatGPT 的自然语言功能直接连接到 BigQuery 的 DWH。

示例用例

  • 数据科学家可以连接到表并使用 ChatGPT 的数据分析功能运行数据分析。
  • 普通数据用户可以查询其事务性数据并提出基本问题。
  • 用户可以更深入地了解他们的数据和潜在的异常情况。

应用程序信息

应用程序关键链接

在开始之前,请查看应用程序中的这些链接:

  • 应用程序网站:https://cloud.google.com/bigquery
  • 应用程序 API 文档:https://cloud.google.com/bigquery/docs/reference/rest

应用程序先决条件

在开始之前,请确保在您的应用程序环境中完成以下步骤:

  • 设置 GCP 项目
  • 在该 GCP 项目中设置 BQ 数据集
  • 确保通过 ChatGPT 进行 BigQuery 身份验证的用户有权访问该 BQ 数据集

ChatGPT 步骤

自定义 GPT 说明

创建自定义 GPT 后,请将以下文本复制到“说明”面板中。有疑问吗?请查看入门示例,了解此步骤的详细信息。

**背景**:您是编写 BigQuery SQL 查询的专家。用户将向您提出问题。

**说明**:

1. 无论用户提出什么问题,请首先运行 `runQuery` 操作,使用以下查询:“SELECT column_name, table_name, data_type, description FROM `{project}.{dataset}.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS`”
-- 假设 project = “<在此处插入您的默认项目>”,dataset = “<在此处插入您的默认数据集>”,除非用户提供不同的值
-- 请记住在 json 输出中包含 useLegacySql:false

2. 将用户的问题转换为利用上述步骤的 SQL 语句,并对该 SQL 语句运行 `runQuery` 操作以确认查询有效。添加 100 行的限制。
3. 现在删除 100 行的限制,并将查询返回给用户查看。

**附加说明**:如果用户说“让我们开始吧”,请解释用户可以提供项目或数据集,以及他们想要回答的问题。如果用户没有想法,请建议我们有一个可以查询的示例航班数据集——询问他们是否希望您查询该数据集。

OpenAPI Schema

创建自定义 GPT 后,请将以下文本复制到“操作”面板中。有疑问吗?请查看入门示例,了解此步骤的详细信息。

openapi: 3.1.0
info:
  title: BigQuery API
  description: API for querying a BigQuery table.
  version: 1.0.0
servers:

  - url: https://bigquery.googleapis.com/bigquery/v2
    description: Google BigQuery API server
paths:
  /projects/{projectId}/queries:
    post:
      operationId: runQuery
      summary: Executes a query on a specified BigQuery table.
      description: Submits a query to BigQuery and returns the results.
      x-openai-isConsequential: false
      parameters:

        - name: projectId
          in: path
          required: true
          description: The ID of the Google Cloud project.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: The SQL query string.
                useLegacySql:
                  type: boolean
                  description: Whether to use legacy SQL.
                  default: false
      responses:
        '200':
          description: Successful query execution.
          content:
            application/json:
              schema:
                type: object
                properties:
                  kind:
                    type: string
                    example: "bigquery#queryResponse"
                  schema:
                    type: object
                    description: The schema of the results.
                  jobReference:
                    type: object
                    properties:
                      projectId:
                        type: string
                      jobId:
                        type: string
                  rows:
                    type: array
                    items:
                      type: object
                      properties:
                        f:
                          type: array
                          items:
                            type: object
                            properties:
                              v:
                                type: string
                  totalRows:
                    type: string
                    description: Total number of rows in the query result.
                  pageToken:
                    type: string
                    description: Token for pagination of query results.
        '400':
          description: Bad request. The request was invalid.
        '401':
          description: Unauthorized. Authentication is required.
        '403':
          description: Forbidden. The request is not allowed.
        '404':
          description: Not found. The specified resource was not found.
        '500':
          description: Internal server error. An error occurred while processing the request.

身份验证说明

以下是设置此第三方应用程序与 ChatGPT 身份验证的说明。有疑问吗?请查看入门示例,了解此步骤的详细信息。

操作前步骤

在 ChatGPT 中设置身份验证之前,请在应用程序中执行以下步骤。

  • 转到 Google Cloud 控制台
  • 导航到 API 和服务 > 凭据
  • 创建新的 OAuth 凭据(或使用现有的)
  • 找到您的 OAuth Client ID 和 Client Secret,并将这两个值安全地存储起来(请参见下面的屏幕截图)

gptactions_BigQuery_auth.png

在 ChatGPT 中

在 ChatGPT 中,点击“身份验证”并选择 “OAuth”。输入以下信息。

  • Client ID:使用以上步骤中的 Client ID
  • Client Secret:使用以上步骤中的 Client Secret
  • Authorization URL:https://accounts.google.com/o/oauth2/auth
  • Token URL:https://oauth2.googleapis.com/token
  • Scope:https://www.googleapis.com/auth/bigquery
  • Token:默认 (POST)

操作后步骤

在 ChatGPT 中设置身份验证后,请在应用程序中执行以下步骤以完成操作。

  • 复制 GPT Action 的回调 URL
  • 在“授权的重定向 URI”(参见上图)中,添加您的回调 URL

常见问题解答和故障排除

  • 回调 URL 错误:如果在 ChatGPT 中遇到回调 URL 错误,请仔细查看上面的屏幕截图。您需要将回调 URL 直接添加到 GCP 中,操作才能正确进行身份验证。
  • Schema 调用了错误的项目或数据集:如果 ChatGPT 调用了错误的项目或数据集,请考虑更新您的说明,使其更明确地(a)指定应调用哪个项目/数据集,或(b)要求用户在运行查询之前提供这些确切的详细信息。

您希望我们优先处理哪些集成?我们的集成中是否存在错误?在我们的 GitHub 上提交 PR 或 issue,我们会进行查看。