GPT 操作库(中间件):Azure Function
简介
本文档为开发者提供了构建连接 GPT 操作到特定应用程序的说明和指南。在继续之前,请确保您已熟悉以下信息:
此特定的 GPT 操作概述了如何构建 Azure Function,即微软的云函数构建器。本文档帮助用户设置一个 OAuth 保护的 Azure Function,以连接到 GPT 操作和示例应用程序。
价值 + 示例业务用例
价值:用户现在可以利用 ChatGPT 的自然语言能力直接连接到 Azure Function。这可以通过几种方式实现:
- GPT 操作中的 100k 字符限制:用户可以使用中间件预处理 API 的文本响应。例如,您可以在中间件中使用 OpenAI 的 API 在将文本发送回 ChatGPT 之前对其进行摘要。
- 通常对于操作,用户依赖于 SaaS API 返回文本。您可以将供应商 API 的响应转换为易于理解的文本,并且它可以处理不同的数据类型,如结构化和非结构化数据。
- 它可以返回文件而不是仅仅返回文本。这对于提供用于数据分析的 CSV 文件很有用,或者可以带回 PDF 文件,ChatGPT 会将其视为上传。
示例用例:
- 用户需要查找 SharePoint 中的文件,但需要在 ChatGPT 和 SharePoint 之间设置中间件应用程序。
- 用户已在 Azure Function 中连续构建了多个步骤,需要能够使用 ChatGPT 启动该过程。
应用程序信息
应用程序关键链接
在开始之前,请查看应用程序的这些链接:
- 应用程序网站:https://learn.microsoft.com/en-us/azure/azure-functions/
- 应用程序 API 文档:https://learn.microsoft.com/en-us/azure/azure-functions/functions-reference/
应用程序先决条件
在开始之前,请确保在您的应用程序环境中完成以下步骤:
- Azure 门户,具有创建 Azure Function Apps 和 Azure Entra App Registrations 的访问权限。
应用程序设置
安装应用程序
您可以在文档左侧的此处 here 阅读有关 Azure Functions 的语言和部署选项的更多信息。
选项 1:使用 VSCode
请参阅微软的文档 here 以了解如何使用 VSCode 进行部署。如果您熟悉此方法,请随时使用它。
选项 2:直接在 Azure 门户中
请参阅文档 here 以了解如何使用 Azure 门户进行部署。我们将在此处逐步进行演练。
第 1 部分:创建函数
-
创建一个 Azure Function app。我使用了以下设置,但您可以使用任何您熟悉的设置。请注意,并非所有语言/操作系统都允许直接在控制台中编辑函数 - 我下面选择的组合可以。在我的演练中,我将所有内容保留为默认设置,并进行了以下选择。以下设置适用于 SharePoint Node.js 解决方案 here 和 here。
-
基本信息
-
您要部署代码还是容器映像? 代码
-
运行时堆栈: Node.js
-
操作系统: Windows
-
-
网络
- 启用公共访问: 开启(连接到 GPT 需要此设置)
-
完成上述操作后,您将进入“部署”页面。部署完成后(只需几分钟),请点击 “转到资源” 返回到 Function App。
第一次尝试此操作时可能会收到错误,请再次点击创建,它很可能会成功。
第 2 部分:设置身份验证
-
在 Azure Function App 的左侧菜单中,在“设置”菜单下点击 “身份验证”。
-
添加身份提供商
-
选择 Microsoft 作为身份提供商。
-
Workforce 作为租户类型
-
创建新应用程序。 如果您使用的是现有应用程序,说明会非常相似,但创建一个新应用程序会更容易,因为它会自动公开回调 URL 和 API,并使用“简易身份验证”。您可以在此处 here 阅读更多相关信息。
-
将此页面上的所有其他设置保留为默认值,但您可以根据内部指南进行更改。
-
在 权限 选项卡上,点击 添加权限,然后添加 Files.Read.All 和 Sites.ReadAll,然后点击 添加。这允许此应用程序读取文件,这对于使用 Microsoft Graph Search API 很重要。如果您不将其用于 SharePoint 解决方案 here 和 here,则可以跳过此步骤。
-
创建完成后,点击您刚刚创建的企业应用程序(即,离开 Function App 页面并进入您刚刚启动的企业应用程序)。我们现在将授予它一个额外的权限,即通过模拟登录到应用程序的用户来执行 Azure Function。有关更多详细信息,请参见 here。
-
在主页面上,点击“查看 API 权限”
-
在“我的组织使用的 API”中搜索 Microsoft Azure App Service,然后找到 user_impersonation。
-
添加它,然后您需要 Azure 门户的管理员来 授予管理员同意。
5) 在该企业应用程序中,点击“管理”下的左侧菜单中的“公开 API”,然后使用“复制到剪贴板”按钮复制使用 Copy to Clipboard 按钮创建的 范围。范围应类似于 “api://\SCOPE
。
6) 点击“管理”下的左侧菜单中的“身份验证”。
- 在“Web”部分下,您会注意到已自动添加了一个回调 URI。添加 Postman 重定向 URI(https://oauth.pstmn.io/v1/callback)用于测试。
7) 在左侧,转到 概述。复制 应用程序(客户端)ID 和 目录(租户)ID,并 稍后保存为 CLIENT_ID
和 TENANT_ID
。
第 3 部分:设置测试函数
-
通过返回主页然后返回到您的 Function App 来离开该页面。
-
点击 创建函数。在此示例中,我将在门户中进行开发,但您也可以使用 VSCode 或其他 IDE。
-
选择 HTTP 触发器
-
对于 授权级别,您可以选择任何您想要的密钥类型。
- 请注意,这可能第一次会出错,但函数很可能已经创建,请刷新页面进行检查。
-
点击您刚刚创建的函数(您可能需要点击刷新才能看到它)。点击 获取函数 URL 并将其保存在 Postman 中进行测试。稍后将其放入 GPT 中创建 OpenAPI 规范时也会用到。
- 返回到函数应用并点击 配置。显示
MICROSOFT_PROVIDER_AUTHENTICATION_SECRET
变量的值,复制它(点击高级编辑进行复制),并 稍后保存。
此时,您应该已经创建了一个测试函数,并且您应该已经保存了 客户端 ID、租户 ID、密钥、范围和函数 URL。您现在可以准备在 Postman 中测试身份验证了。
第 4 部分:在 Postman 中测试身份验证
-
尝试使用这些 OAuth 设置命中您在 Postman 中创建的端点:
-
授权类型: Authorization Code
-
授权 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.”
第 5 部分:在 Azure Function 上设置您的应用程序
这应该单独完成,并且特定于您的应用程序。请参阅 Sharepoint Cookbook 以获取相关示例。
第 6 部分:设置 ChatGPT
-
为您的端点生成 OpenAPI 规范。
-
将其粘贴到 GPT 的操作部分,然后选择 OAuth 作为身份验证类型。像在 Postman 中一样填写 OAuth 设置。
-
保存操作后,您将在 GPT 配置底部看到一个回调 URI。复制该 URL,然后返回到 Azure 门户中的 Function App。
-
点击“设置”下的 身份验证,然后点击您的 Entra 应用程序。
-
到达那里后,点击“管理”部分下的 身份验证。
-
在该页面的“Web”部分下添加一个新的重定向 URI,然后粘贴您从第 16 步获取的回调 URI,然后点击保存。
-
测试 GPT,它应该可以按预期工作。
ChatGPT 步骤
自定义 GPT 指令
此内容特定于应用程序。请参阅 Sharepoint Cookbook 以获取示例
OpenAPI 架构
创建自定义 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:
{其余内容特定于您的应用程序}
身份验证说明
以下是有关使用此第三方应用程序设置身份验证的说明。有疑问吗?请查看 入门示例,了解此步骤的详细工作方式。
操作前步骤
在 ChatGPT 中设置身份验证之前,请在应用程序中执行以下步骤。
遵循上面设置身份验证的第 2 步和第 4 步
在 ChatGPT 中
在 ChatGPT 中,点击“身份验证”并选择 “OAuth”。输入以下信息。
- 客户端 ID:参见上面第 12 步
- 客户端密钥:同上
- 授权 URL:同上
- 令牌 URL:同上
- 范围:同上
- 令牌:同上
操作后步骤
在 ChatGPT 中设置身份验证后,请在应用程序中执行以下步骤以完成操作。
请参阅上文以测试此应用程序
您希望我们优先处理哪些集成?我们的集成中是否存在错误?在我们的 GitHub 上提交 PR 或 issue,我们会进行查看。