2024年5月24日

GPT Actions 库(中间件)- Azure Functions

这个特定的GPT Action提供了如何构建Azure Function(微软基于云的函数构建器)的概述。本文档帮助用户设置受OAuth保护的Azure Function,以连接到GPT Action和示例应用程序。

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

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

示例用例:

  • 用户需要在Sharepoint中查找文件,但需要在ChatGPT和Sharepoint之间使用一个中间件应用
  • 用户已在Azure函数中连续构建了多个步骤,并需要通过ChatGPT启动该流程

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

  • 可创建 Azure Function Apps 和 Azure Entra 应用注册的 Azure 门户

您可以在文档左侧此处了解更多关于Azure Functions的语言和部署选项。

  1. 创建一个Azure Function应用。我使用了以下设置,但你可以选择任何你熟悉的配置。请注意,并非所有语言/操作系统都支持直接在控制台中编辑函数 - 我下面选择的组合支持。在我的演练中,我保留了所有默认设置,并做了以下选择。这些设置开箱即用,适用于这里这里的SharePoint Node.js解决方案。

    1. 基础

      1. 您想要部署代码还是容器镜像?: 代码

      2. 运行时栈: Node.js

      3. 操作系统: Windows

    2. 网络

      1. 启用公共访问: 开启 (需要开启此选项才能连接到GPT)
  2. 完成上述步骤后,您将进入"部署"页面。待部署完成后(通常只需几分钟),点击"转到资源"返回函数应用

第一次尝试时可能会遇到错误,再次点击创建按钮通常就能成功。

  1. 在Azure Function App的左侧菜单中,点击设置菜单下的身份验证

    1. 添加身份提供商

    2. 选择 Microsoft 作为身份提供商。

    3. Workforce 作为租户类型

    4. 创建一个新应用。 如果您使用的是现有应用,操作指南大致相同,但创建一个新应用会更简单,因为它会自动通过"Easy Auth"功能暴露回调URL和API。您可以在此此处了解更多相关信息。

    5. 保留此页面上所有其他设置为默认值,但可根据内部指南自由调整。

    6. 权限选项卡中,点击添加权限并添加Files.Read.AllSites.ReadAll,然后点击添加。这将允许该应用程序读取文件,这对于使用Microsoft Graph搜索API非常重要。如果您不将此用于SharePoint解决方案此处此处,可以跳过此步骤。

  2. 创建完成后,点击您刚刚创建的企业应用程序(即离开函数应用页面,进入您刚启动的企业应用程序)。我们现在将为其授予一个额外权限,即通过模拟登录应用程序的用户来执行Azure函数。更多详情请参阅此处

    1. 在主页上,点击“查看API权限”

    2. 我的组织使用的API中搜索Microsoft Azure App Service并找到user_impersonation

    3. 添加后,您需要Azure门户上的管理员授予管理员同意。

  1. 在该企业应用程序中,点击左侧菜单管理下的"公开API",然后使用复制到剪贴板按钮复制创建的作用域。该作用域应类似于"api://<插入UUID>/user_impersonation"。将其保存为SCOPE供后续使用。

  2. 点击左侧菜单“管理”下的"认证"

    1. Web部分下,您会注意到已自动添加一个回调URI。请添加用于测试的Postman重定向URI(https://oauth.pstmn.io/v1/callback)。
  3. 在左侧导航栏中,进入概览页面。复制应用程序(客户端)ID目录(租户)ID保存备用,分别记为CLIENT_IDTENANT_ID

  1. 通过返回主页然后回到您的Function App来离开当前页面。

  2. 点击创建函数。 在这个示例中,我将在门户中开发它,但你也可以使用VSCode或其他IDE。

    1. 选择 HTTP触发器

    2. 对于授权级别,您可以选择任意所需的密钥类型。

      1. 注意第一次运行时可能会报错,但函数很可能已创建成功,刷新页面检查即可。
  3. 点击您刚刚创建的函数(可能需要点击刷新才能看到)。点击获取函数URL并将其保存以便在Postman中测试。稍后在创建OpenAPI规范并将其放入GPT时,您也会用到这个URL。

  1. 返回函数应用,点击配置。显示MICROSOFT_PROVIDER_AUTHENTICATION_SECRET变量的值,复制它(点击高级编辑进行复制),然后保存以备后用

此时,您应该已经创建了一个测试函数,并保存了客户端ID、租户ID、密钥、作用域和函数URL。现在您已准备好在Postman中测试身份验证功能。

  1. 尝试在Postman中使用这些OAuth设置访问您创建的端点:

    1. 授权类型: 授权码

    2. 认证URL: https://login.microsoftonline.com/`TENANT_ID`/oauth2/v2.0/authorize

    3. 认证令牌URL: https://login.microsoftonline.com/`TENANT_ID`/oauth2/v2.0/token

    4. 客户端ID: CLIENT_ID 来自上面的第7步

    5. 客户端密钥: MICROSOFT_PROVIDER_AUTHENTICATION_SECRET 来自上面的第11步

    6. 范围: SCOPE 来自上述第5步

    7. 客户端凭证: 在请求体中发送客户端凭证

  2. 你需要点击获取新访问令牌,然后调用你在上述第10步保存的端点。如果操作成功,你应该会收到这个响应:”This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.”

这应该单独完成,并且是针对您的应用程序特定的。有关示例,请参阅Sharepoint Cookbook

  1. 为你的端点生成OpenAPI规范。

  2. 将其粘贴到GPT的Actions部分,并选择OAuth作为认证类型。按照上面为Postman填写的方式填写OAuth设置。

  3. 保存操作后,您将在GPT配置底部看到一个回调URI。复制该URL,然后返回Azure门户中的函数应用

  4. 点击设置下的身份验证,然后点击您的Entra应用程序。

  5. 到达该页面后,在管理部分下点击身份验证

  6. 在该页面的Web部分添加一个新的重定向URI,粘贴从步骤16获取的回调URI,然后点击保存。

  7. 测试GPT,它应该能按预期工作。

创建自定义GPT后,在操作面板中复制以下文本。有问题吗?查看入门示例了解此步骤的详细操作方式。

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

openapi: 3.1.0
info:
  title: {insert title}
  description: {insert description}
  version: 1.0.0
servers:
  - url: https://{your_function_app_name}.azurewebsites.net/api
    description: {insert description}
paths:
  /{your_function_name}?code={enter your specific endpoint id here}:
    post:
      operationId: {insert operationID}
      summary: {insert summary}
      requestBody: 
{the rest of this is specific to your application}

以下是设置与这个第三方应用程序进行身份验证的说明。有问题吗?查看入门示例以更详细地了解此步骤的工作原理。

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

按照上述步骤2和4设置身份验证

在ChatGPT中,点击"认证"并选择"OAuth"。输入以下信息。

  • 客户端ID: 参见上文第12步
  • 客户端密钥: 同上
  • 授权URL: 同上
  • 令牌URL: 同上
  • 范围: 同上
  • Token: 同上

在ChatGPT中设置好身份验证后,按照应用程序中的以下步骤完成Action的最终设置。

测试此应用请参见上文

是否有您希望我们优先考虑的集成方案?我们的集成是否存在错误?请在GitHub上提交PR或问题,我们会尽快查看。