GPT Actions 库 (中间件) - 谷歌云函数

2024 年 8 月 11 日
在 Github 中打开

简介

本页面为开发者构建中间件以将 GPT Action 连接到特定应用程序提供说明和指南。在继续之前,请务必先熟悉以下信息

这个特定的 GPT Action 概述了如何构建 谷歌云函数,谷歌的云函数构建器。本文档帮助用户设置受 OAuth 保护的谷歌云函数,以连接到 GPT Action 和示例应用程序。

价值 + 示例业务用例

价值:用户现在可以利用 ChatGPT 的自然语言能力直接连接到谷歌云函数。这可以通过以下几种方式实现

  • GPT Actions 中 10 万字符的限制:用户可以使用中间件预处理来自 API 的文本响应。例如,您可以在中间件中使用 OpenAI 的 API 来总结文本,然后再将其发送回 ChatGPT。
  • 通常对于 actions,用户依赖 SaaS API 返回文本。您可以将供应商 API 的响应转换为易于理解的文本,并且它可以处理不同的数据类型,例如结构化和非结构化数据。
  • 它可以返回文件而不仅仅是文本。这对于展示用于数据分析的 CSV 文件,或带回 PDF 文件并让 ChatGPT 像上传一样处理它非常有用。

示例用例:

  • 用户需要查找查询谷歌云 SQL,但需要在 ChatGPT 和谷歌云 SQL 之间使用中间件应用程序
  • 用户在谷歌云函数中构建了连续的几个步骤,并且需要能够使用 ChatGPT 启动该流程

应用信息

在开始之前,请查看应用程序的以下链接

应用先决条件

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

  • 谷歌云控制台,具有创建谷歌云函数和谷歌云 API 的权限(您将需要此权限来设置 OAuth 客户端)

应用设置

安装应用

有 3 种选项可以创建和部署谷歌云函数

  • IDE - 使用您最喜欢的 IDE 创建,例如 VS Code
  • 谷歌云控制台 - 使用浏览器创建
  • 谷歌云 CLI (gcloud) - 通过命令行创建

您可以在此处阅读有关支持的运行时的信息

选项 1:使用 IDE (VSCode)

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

选项 2:直接在谷歌云控制台中

请参阅文档此处,了解如何使用谷歌云控制台部署。

选项 3:使用谷歌云 CLI (gcloud)

请参阅文档此处,了解如何使用谷歌云控制台部署。我们将在此处逐步介绍一个示例。

第 1 部分:安装并初始化谷歌云 CLI (gcloud)

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

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

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

mkdir <directory_name>
cd <directory_name>

初始化 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';

// Register an HTTP function with the Functions Framework that will be executed
// when you make an HTTP request to the deployed function's endpoint.
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 后,将以下文本复制到“Instructions”(指令)面板中。有疑问?查看入门示例,了解此步骤如何更详细地工作。

When the user asks you to test the integration, you will make a call to the custom action and display the results

OpenAPI 架构

创建自定义 GPT 后,将以下文本复制到“Actions”(操作)面板中。有疑问?查看入门示例,了解此步骤如何更详细地工作。

以下是连接到此中间件的示例。您需要在本节中插入您的应用程序和函数信息。

openapi: 3.1.0
info:
  title: {insert title}
  description: {insert description}
  version: 1.0.0
servers:
  - url: {url of your Google Cloud Function}
    description: {insert description}
paths:
  /{your_function_name}:
    get:
      operationId: {create an operationID}
      summary: {insert summary}
      responses:
        '200':
          description: {insert description}
          content:
            text/plain:
              schema:
                type: string
                example: {example of response}

身份验证说明

以下是有关使用此第三方应用程序设置身份验证的说明。有疑问?查看入门示例,了解此步骤如何更详细地工作。

在谷歌云控制台中

在谷歌云控制台中,您需要创建 OAuth 客户端 ID 凭据。要导航到正确的页面,请在谷歌云控制台中搜索“Credentials”(凭据),或在浏览器中输入 https://console.cloud.google.com/apis/credentials?project=<your_project_id>。您可以在此处阅读更多相关信息。

单击“CREATE CREDENTIALS”(创建凭据),然后选择“Oauth client ID”(Oauth 客户端 ID)。为“Application type”(应用类型)选择“Web Application”(Web 应用程序),然后输入您的应用程序名称(见下文)。

在“OAuth client created”(OAuth 客户端已创建)模态对话框中,请注意

  • 客户端 ID
  • 客户端密钥

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

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

  • 客户端 ID: 见以上步骤
  • 客户端密钥: 见以上步骤
  • 授权 URL: https://127.0.0.1/o/oauth2/auth
  • 令牌 URL: https://oauth2.googleapis.com/token
  • Scope: https://www.googleapis.com/auth/userinfo.email

返回谷歌云控制台(同时参考入门示例中的步骤 4)

编辑您之前在谷歌云中创建的 OAuth 2.0 客户端 ID,并添加您在创建自定义 action 后收到的回调 URL。

测试 GPT

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

  1. 请求登录 Google
  2. 允许请求访问您的 Google 函数
  3. 来自 ChatGPT 的响应,显示来自您的函数的响应 - 例如“You have connected as an authenticated user to Google Functions”(您已作为经过身份验证的用户连接到 Google 函数)

您希望我们优先考虑哪些集成?我们的集成中是否存在错误?在我们的 github 中提交 PR 或 issue,我们会查看。