GPT 操作库(中间件):Google Cloud Function

简介

本页面为开发者提供了构建中间件以将 GPT 操作连接到特定应用程序的说明和指南。在继续之前,请确保您已熟悉以下信息:

此特定的 GPT 操作概述了如何构建 Google Cloud Function,即 Google 的基于云的函数构建器。本文档帮助用户设置一个 OAuth 保护的 Google Cloud Function,以连接到 GPT 操作和示例应用程序。

价值 + 示例业务用例

价值:用户现在可以利用 ChatGPT 的自然语言功能直接连接到 Google Cloud Function。这可以通过几种方式实现:

  • GPT 操作中的 100k 字符限制:用户可以使用中间件预处理 API 的文本响应。例如,您可以在中间件中使用 OpenAI 的 API 在将文本发送回 ChatGPT 之前对其进行摘要。
  • 通常,对于操作,用户依赖于 SaaS API 返回文本。您可以将供应商 API 的响应转换为易于理解的文本,并且它可以处理不同的数据类型,例如结构化和非结构化数据。
  • 它可以返回文件,而不仅仅是文本。这对于为数据分析提供 CSV 文件,或者返回 PDF 文件(ChatGPT 会将其视为上传)非常有用。

示例用例

  • 用户需要查询 Google Cloud SQL,但需要在 ChatGPT 和 Google Cloud SQL 之间设置中间件应用程序
  • 用户已在 Google Cloud 函数中连续构建了多个步骤,并且需要能够使用 ChatGPT 启动该过程

应用程序信息

应用程序关键链接

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

  • 应用程序网站:https://cloud.google.com/functions/docs
  • 应用程序 API 文档:https://cloud.google.com/functions/docs/writing/write-http-functions

应用程序先决条件

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

  • Google Cloud Console,具有创建 Google Cloud Functions 和 Google Cloud API 的访问权限(您需要此权限来设置 OAuth Client)

应用程序设置

安装应用程序

有 3 种选项可以创建和部署 Google Cloud Functions

  • IDE - 使用您喜欢的 IDE 创建,例如 VS Code
  • Google Cloud Console - 使用您的浏览器创建
  • Google Cloud CLI (gcloud) - 通过命令行创建

您可以在此处阅读支持的运行时此处

选项 1:使用 IDE (VSCode)

请参阅 Google 的文档此处了解如何使用 VSCode 进行部署。如果您熟悉此方法,请随时使用它。

选项 2:直接在 Google Cloud Console 中

请参阅文档此处了解如何使用 Google Cloud Console 进行部署。

选项 3:使用 Google Cloud CLI (gcloud)

请参阅文档此处了解如何使用 Google Cloud Console 进行部署。我们将在此处逐步介绍一个示例。

第 1 部分:安装和初始化 Google Cloud CLI (gcloud)

请按照此处与您正在运行的操作系统相关的步骤进行操作。此过程的最后一步是运行 gcloud init 并登录到您的 Google 帐户。

第 2 部分:设置本地开发环境

在此示例中,我们将设置一个 Node.js 环境。

mkdir <目录名称>
cd <目录名称>

初始化 Node.js 项目

npm init

接受 npm init 的默认值

第 3 部分:创建函数

创建 index.js 文件

const functions = require('@google-cloud/functions-framework');
const axios = require('axios');

const TOKENINFO_URL = 'https://oauth2.googleapis.com/tokeninfo';

// 使用 Functions Framework 注册一个 HTTP 函数,该函数将在您向已部署函数的端点发出 HTTP 请求时执行。
functions.http('executeGCPFunction', async (req, res) => {
  const authHeader = req.headers.authorization;

  if (!authHeader) {
    return res.status(401).send('Unauthorized: No token provided');
  }

  const token = authHeader.split(' ')[1];
  if (!token) {
    return res.status(401).send('Unauthorized: No token provided');
  }

  try {
    const tokenInfo = await validateAccessToken(token);            
    res.json("You have connected as an authenticated user to Google Functions");
  } catch (error) {
    res.status(401).send('Unauthorized: Invalid token');
  }  
});

async function validateAccessToken(token) {
  try {
    const response = await axios.get(TOKENINFO_URL, {
      params: {
        access_token: token,
      },
    });
    return response.data;
  } catch (error) {
    throw new Error('Invalid token');
  }
}
第 4 部分:部署函数

以下步骤将安装并添加 package.json 文件中必要的依赖项

npm install @google-cloud/functions-framework
npm install axios
npx @google-cloud/functions-framework --target=executeGCPFunction
gcloud functions deploy gcp-function-for-chatgpt \
  --gen2 \
  --runtime=nodejs20 \
  --region=us-central1 \
  --source=. \
  --entry-point=executeGCPFunction \
  --trigger-http \
  --allow-unauthenticated

ChatGPT 步骤

自定义 GPT 说明

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

当用户要求您测试集成时,您将调用自定义操作并显示结果

OpenAPI 架构

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

以下是连接到此中间件可能是什么样子的示例。您需要在此部分插入您的应用程序和函数信息。

openapi: 3.1.0
info:
  title: {插入标题}
  description: {插入描述}
  version: 1.0.0
servers:

  - url: {您的 Google Cloud Function 的 URL}
    description: {插入描述}
paths:
  /{your_function_name}:
    get:
      operationId: {创建 operationID}
      summary: {插入摘要}
      responses:
        '200':
          description: {插入描述}
          content:
            text/plain:
              schema:
                type: string
                example: {响应示例}

身份验证说明

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

在 Google Cloud Console 中

在 Google Cloud Console 中,您需要创建 OAuth 客户端 ID 凭据。要导航到正确的页面,请在 Google Cloud Console 中搜索“凭据”或在浏览器中输入 https://console.cloud.google.com/apis/credentials?project=<your_project_id>。您可以此处了解更多信息。

点击“创建凭据”并选择“Oauth 客户端 ID”。为“应用程序类型”选择“Web 应用程序”,然后输入您的应用程序名称(如下所示)。

在“OAuth 客户端已创建”模态对话框中,请注意以下信息:

  • 客户端 ID
  • 客户端密钥

在 ChatGPT 中(参考入门示例中的步骤 2)

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

  • 客户端 ID:参见上一步
  • 客户端密钥:参见上一步
  • 授权 URL:https://accounts.google.com/o/oauth2/auth
  • 令牌 URL:https://oauth2.googleapis.com/token
  • 范围:https://www.googleapis.com/auth/userinfo.email

返回 Google Cloud Console(参考入门示例中的步骤 4)

编辑您之前在 Google Cloud 中创建的 OAuth 2.0 客户端 ID,并添加创建自定义操作后收到的回调 URL。

测试 GPT

您现在可以测试 GPT 了。您可以输入一个简单的提示,例如“测试集成”,并期望看到以下内容:

  1. 请求登录 Google
  2. 允许请求您的 Google Function
  3. ChatGPT 的响应显示您函数的响应 - 例如,“您已连接为已通过身份验证的用户到 Google Functions”

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