本页面为开发者构建中间件以将 GPT Action 连接到特定应用程序提供说明和指南。在继续之前,请务必先熟悉以下信息
这个特定的 GPT Action 概述了如何构建 Azure Function,即微软的云端函数构建器。本文档帮助用户设置受 OAuth 保护的 Azure Function,以连接到 GPT Action 和示例应用程序。
价值:用户现在可以利用 ChatGPT 的自然语言能力直接连接到 Azure Function。这可以通过以下几种方式实现
示例用例:
在开始之前,请查看应用程序的这些链接
在开始之前,请确保在您的应用程序环境中完成以下步骤
您可以在文档左侧阅读有关 Azure Functions 的语言和部署选项的更多信息 此处。
请参阅 Microsoft 的文档 此处,了解如何使用 VSCode 进行部署。如果您熟悉这种方法,请随意使用它。
请参阅文档 此处,了解如何使用 Azure 门户进行部署。我们将在此处逐步介绍一个示例。
创建一个 Azure Function 应用。我使用了以下设置,但您可以使用任何您觉得舒适的设置。请注意,并非每种语言/操作系统都允许直接在控制台中编辑函数 - 我在下面选择的组合可以。在我的演练中,我将所有内容都保留为默认设置,并进行了以下选择。以下设置可直接用于 SharePoint Node.js 解决方案 此处 和 此处。
基本
您想部署代码还是容器镜像?: 代码
运行时堆栈: Node.js
操作系统: Windows
网络
完成上述操作后,您将进入“部署”页面。部署完成后(只需几分钟),单击 “转到资源” 返回 Function App
您第一次尝试时可能会遇到错误,再次单击创建,它很可能就会工作。
在 Azure Function App 的左侧菜单中,单击 设置 菜单下的 身份验证。
添加标识提供程序
选择 Microsoft 作为标识提供程序。
工作区 作为租户类型
创建新应用程序。 如果您正在使用现有应用程序,则说明非常相似,但是创建新应用程序更容易,因为它将自动使用“简易身份验证”配置回调 URL 和公开的 API。您可以在 此处 阅读更多相关信息。
将此页面上的所有其他设置保留为默认值,但可以根据您的内部指南随意更改。
在 权限 选项卡上,单击 添加权限 并添加 Files.Read.All 和 Sites.ReadAll,然后单击 添加。 这允许此应用程序读取文件,这对于使用 Microsoft Graph Search API 非常重要。如果您不将此用于 SharePoint 解决方案 此处 和 此处,则可以跳过此步骤。
创建完成后,单击您刚刚创建的企业应用程序(因此,离开 Function App 页面并进入您刚刚启动的企业应用程序)。 我们现在将为其提供一个额外的权限,通过模拟登录到应用程序的用户来执行 Azure Function。有关更多详细信息,请参阅 此处。
在主页上,单击“查看 API 权限”
在 我的组织使用的 API 中搜索 Microsoft Azure App Service,并找到 user_impersonation
添加它,然后您需要 Azure 门户上的管理员来 授予管理员同意。
在该企业应用程序中,单击左侧菜单 管理 下的 “公开 API”,然后复制使用 复制到剪贴板 按钮创建的 范围。范围应类似于 “api://<insert-uuid>/user_impersonation”。将此保存以供稍后使用,命名为 SCOPE
。
单击左侧菜单 管理 下的 “身份验证”
在左侧,转到 概述。复制 应用程序(客户端)ID 和 目录(租户)ID 并 保存以供稍后使用,命名为 CLIENT_ID
和 TENANT_ID
。
离开页面,回到主页,然后返回您的 Function App。
单击 创建 Function。 对于此示例,我将在门户中开发它,但您也可以使用 VSCode 或其他 IDE。
选择 HTTP 触发器
对于 授权级别, 您可以选择任何您想要的密钥类型。
单击您刚刚创建的函数(您可能需要单击刷新才能看到它)。单击 获取函数 URL 并保存它以在 Postman 中进行测试。您稍后在将 OpenAPI 规范放入 GPT 时也会使用它。
MICROSOFT_PROVIDER_AUTHENTICATION_SECRET
变量的值,复制它(单击高级编辑以复制它),并 保存以供稍后使用。 此时,您应该已创建一个测试函数,并且您应该已保存 客户端 ID、租户 ID、密钥、范围和函数 URL。您现在可以准备在 Postman 中测试身份验证
尝试使用这些 OAuth 设置在 Postman 中访问您创建的端点
授权类型: 授权码
授权 URL: https://login.microsoftonline.com/`TENANT_ID`/oauth2/v2.0/authorize
授权令牌 URL: https://login.microsoftonline.com/`TENANT_ID`/oauth2/v2.0/token
客户端 ID: 上面步骤 7 中的 CLIENT_ID
客户端密钥: 上面步骤 11 中的 MICROSOFT_PROVIDER_AUTHENTICATION_SECRET
范围: 上面步骤 5 中的 SCOPE
客户端凭据: 在正文中发送客户端凭据
您需要单击 获取新访问令牌,然后访问您在上面步骤 10 中保存的端点。如果成功,您应该会收到此响应:”This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.”
(此 HTTP 触发函数已成功执行。在查询字符串或请求正文中传递一个名称以获得个性化响应。)
这应该单独完成,并且特定于您的应用程序。有关示例,请参阅 Sharepoint Cookbook。
为您的端点生成 OpenAPI 规范。
将其粘贴到 GPT 的 Actions 部分,并选择 OAuth 作为身份验证类型。以与您对 Postman 执行相同的方式填写 OAuth 设置。
保存 action 后,您将在 GPT 配置的底部看到一个回调 URI。复制该 URL,然后 返回到 Azure 门户中的 Function App。
单击 设置 下的 身份验证,然后单击您的 Entra 应用程序。
进入后,单击 管理 部分下的 身份验证。
在该页面的 Web 部分下添加新的重定向 URI,并粘贴从步骤 16 获取的回调 URI,然后单击保存。
测试 GPT,它应该按预期工作。
这是特定于应用程序的。有关示例,请参阅 Sharepoint Cookbook
创建自定义 GPT 后,将以下文本复制到 Actions 面板中。有疑问?查看 入门示例,以了解此步骤如何更详细地工作。
以下是连接到此中间件的示例。您需要在此部分中插入您的应用程序和函数的信息。
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”。输入以下信息。
在 ChatGPT 中设置身份验证后,请按照应用程序中的以下步骤完成 Action。
有关测试此应用程序的信息,请参见上文
您希望我们优先考虑哪些集成?我们的集成是否存在错误?在我们的 github 中提交 PR 或 issue,我们将查看。