你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure 逻辑应用中的工作流连接到 Azure AI 服务
适用范围:Azure 逻辑应用(消耗型 + 标准型)
若要将企业服务、系统和数据与 AI 技术集成,逻辑应用工作流可以连接到用于这些集成方案的 Azure OpenAI 和 Azure AI 搜索资源。
本指南提供了展示如何在工作流中使用 Azure OpenAI 和 Azure AI 搜索连接器操作的概述和示例。
为什么要将 Azure 逻辑应用与 AI 服务一起使用?
通常,构建人工智能解决方案涉及几个关键步骤,并且需要一些构建块。 首先,需要有一个动态引入管道和一个可以与大型语言模型 (LLM) 和矢量量数据库进行通信的聊天界面。
提示
若要了解详细信息,可以向 Azure Copilot 提出以下问题:
- 什么是 AI 中的动态数据引入管道?
- 什么是 AI 中的矢量数据库?
若要查找 Azure Copilot,请在 Azure 门户 工具栏上,选择 Copilot。
可以组合各种组件,不仅可以执行数据引入,还可以为聊天界面提供强大的后端。 该后端有助于输入提示并在交互过程中生成可靠的响应。 然而,创建代码来管理和控制所有这些元素可能很有挑战性,大多数解决方案都是如此。
Azure 逻辑应用提供低代码方法,并通过提供预构建的连接器(可以将其用作构建块来简化后端流程)来简化后端管理。 这种方法让你可以专注于获取数据并确保搜索结果提供最新的相关信息。 借助这些 AI 连接器,你的工作流可以充当编排引擎,在 AI 服务和你想要集成的其他组件之间传输数据。
有关更多信息,请参见以下资源:
先决条件
Azure 帐户和订阅。 如果没有 Azure 订阅,请注册一个免费 Azure 帐户。
要在你的工作流中访问和使用的 Azure AI 搜索和 Azure OpenAI 资源,包括连接信息:
要在其中访问 Azure OpenAI 和 Azure AI 搜索资源的逻辑应用工作流。
这些服务的连接器当前仅提供操作,不提供触发器。 在添加 Azure AI 连接器操作之前,请确保工作流以适合你的方案的触发器开头。
连接器技术参考
在消耗工作流中,Azure OpenAI 和 Azure AI 搜索 托管连接器或“共享”连接器目前为预览版,并受 Microsoft Azure 预览版补充使用条款的约束。
Azure OpenAI
Azure OpenAI 服务提供对 OpenAI 语言模型的访问,其中包括 GPT-4、GPT-4 Turbo with Vision、GPT-3.5-Turbo 和 Embeddings 模型系列。 借助 Azure OpenAI 连接器,你的工作流可以连接到 Azure OpenAI 服务并获取数据的 OpenAI 嵌入或生成聊天完成结果。
提示
若要了解详细信息,可以向 Azure Copilot 提出以下问题:
- 什么是 AI 中的嵌入?
- 什么是 AI 中的聊天补全?
若要查找 Azure Copilot,请在 Azure 门户 工具栏上,选择 Copilot。
Azure OpenAI 连接器具有不同的版本,具体取决于逻辑应用类型和托管模型:
逻辑应用 | 环境 | 连接器版本 |
---|---|---|
消耗 | 多租户 Azure 逻辑应用 | 托管的 Azure 托管连接器,该连接器显示在连接器库中“运行时”>“共享”下。 有关详细信息,请参阅 Azure OpenAI 托管连接器参考。 |
标准 | 单租户 Azure 逻辑应用、应用服务环境 v3(仅限 Windows 计划)或混合部署,这是你自己的基础结构。 | 内置连接器,显示在“运行时”>“应用内”下的连接器库中,并且基于服务提供商。 内置连接器具有以下功能和其他功能: - 多种身份验证类型支持 - 直接访问防火墙后的 Azure 虚拟网络和 Azure OpenAI 终结点中的资源。 有关详细信息,请参阅 Azure OpenAI 内置连接器参考。 |
Azure AI 搜索
Azure AI 搜索是基于 AI 的信息检索平台,可帮助开发人员通过将大型语言模型与企业数据相结合来构建丰富的搜索体验和生成式 AI 应用程序。 通过 Azure AI 搜索连接器,工作流可以连接到 Azure AI 搜索,从而为文档编制索引并对数据执行矢量搜索。
Azure AI 搜索连接器具有不同的版本,具体取决于逻辑应用类型和托管模型:
逻辑应用 | 环境 | 连接器版本 |
---|---|---|
消耗 | 多租户 Azure 逻辑应用 | 托管的 Azure 托管连接器,该连接器显示在连接器库中“运行时”>“共享”下。 有关详细信息,请参阅 Azure AI 搜索托管连接器参考。 |
标准 | 单租户 Azure 逻辑应用、应用服务环境 v3(仅限 Windows 计划)或混合部署,这是你自己的基础结构。 | 内置连接器,显示在“运行时”>“应用内”下的连接器库中,并且基于服务提供商。 内置连接器具有以下功能和其他功能: - 多种身份验证类型支持 - 直接访问防火墙后的 Azure 虚拟网络和 Azure OpenAI 终结点中的资源。 有关详细信息,请参阅 Azure AI 搜索内置连接器参考。 |
身份验证
AI 托管连接器需要使用 API 密钥进行身份验证。 但是,AI 内置连接器支持为你的 AI 服务终结点使用多种身份验证类型。 这些选项提供了可靠的身份验证,可以满足大多数客户的需求。 这两个内置连接器还可以直接连接到虚拟网络内或防火墙后的 Azure OpenAI 和 Azure AI 搜索资源。
下表介绍了内置连接器身份验证选项,所有这些选项都要求你提供 AI 服务终结点的 URL:
身份验证类型 | 说明 |
---|---|
基于 URL 和密钥的身份验证 | 提供 AI 服务生成的 API 密钥或管理员。 |
Active Directory OAuth (Microsoft Entra ID) | 提供 Entra 租户、客户端 ID 和密码等信息,以作为 Entra 用户进行身份验证。 |
托管的标识 | 在 AI 服务资源和逻辑应用资源上设置托管标识身份验证后,可以使用该标识来验证连接器的访问权限。 |
重要
为了获得最佳安全性,请尽可能使用具有托管标识的 Microsoft Entra ID 进行身份验证。 此方法提供卓越的安全性,无需提供凭据。 Azure 负责管理此标识并帮助保护身份验证信息的安全,这样你就无需自己管理这种敏感信息了。 若要为 Azure 逻辑应用设置托管标识,请参阅“使用 Azure 逻辑应用中的托管标识对 Azure 资源的访问和连接进行身份验证”。
如果你必须使用其他身份验证类型,请使用可用的下一个最高级别安全选项。 例如,假设你必须改用连接字符串来创建连接。 连接字符串包括你的应用访问特定资源、服务或系统所需的授权信息。 连接字符串中的访问密钥类似于根密码。
在生产环境中,请始终保护凭据、证书、指纹、访问密钥和连接字符串等敏感信息和机密。 确保使用 Microsoft Entra ID 和 Azure 密钥保管库安全存储此类信息。 避免对此信息进行硬编码、与其他用户共享,或以纯文本形式保存在其他人可以访问的任何位置。 如果你认为这些信息可能已泄露,请尽快轮换机密。 有关详细信息,请参阅关于 Azure 密钥保管库。
有关更多信息,请参阅以下资源:
- 对 Azure AI 服务的请求进行身份验证
- 什么是 Microsoft Entra ID
- 什么是 Azure 资源托管标识?
- 使用 Azure 逻辑应用中的托管标识对 Azure 资源的访问和连接进行身份验证
将 Azure OpenAI 或 Azure AI 搜索操作添加到工作流中
目前,Azure OpenAI 和 Azure AI 搜索的连接器仅提供操作,不提供触发器。 你可以使用适合你的场景或需求的任何触发器开始你的工作流。 然后,根据你拥有的是消耗工作流还是标准工作流,你可以按照这些一般步骤为 Azure OpenAI、Azure AI 搜索和其他操作添加操作。
方案
以下场景仅描述了在工作流中使用 AI 连接器操作的多种方法中的两种:
为企业数据创建知识库
Azure 逻辑应用提供了 1,400 多个 Microsoft 管理的连接器和本机运行的内置连接器,使工作流能够安全地连接几乎所有数据源,例如 SharePoint、Oracle DB、Salesforce、OneDrive、Dropbox、SAP、IBM 等。 每个连接器都提供操作(其中包括触发器、操作或两者),供你在工作流中使用。
例如,可以从多种触发器类型中进行选择,以使自动化工作流按计划或基于特定事件(例如将新文档上传到 SharePoint 网站)运行。 借助众多可供选择的操作,你可以创建知识库,并使用 Azure AI 搜索中这些文档的矢量嵌入轻松构建文档引入管道。
有关更多信息,请参见以下资源:
生成补全
Azure 逻辑应用工作流可以接受输入,Azure OpenAI 服务则可以执行补全操作。 这些功能意味着工作流可以引入实时问题、生成有关数据的答案或使用 Azure OpenAI 发送自动响应。 可以立即将响应发送回客户或审批工作流进行验证。
有关更多信息,请参见以下资源:
包含示例代码的示例场景:引入数据并创建聊天交互
此标准工作流示例展示了如何使用 Azure OpenAI 和 Azure AI 搜索内置连接器将用于引入数据和进行简单聊天对话的后端逻辑分解为两个关键工作流。 为了获得更快的性能,请创建无状态工作流,默认情况下,该工作流不会保存和存储每次运行的历史记录。
示例代码
其他先决条件
标准逻辑应用工作流
请参阅示例代码要求。
本示例中的工作流操作还使用以下跨环境参数值:
参数名称 说明 aisearch_admin_key Azure AI 搜索的管理密钥 aisearch_endpoint Azure AI 搜索示例的终结点 URL aisearch_index_name 用于 Azure AI 搜索示例的索引 openapi_api_key Azure OpenAI 的 API 密钥 openai_deployment_id Azure OpenAI 示例的部署 ID openai_endpoint Azure OpenAI 示例的终结点 URL tokenize_function_url 用于对数据进行批处理和标记化的自定义 Azure 函数的 URL,Azure OpenAI 需要该函数才能为本示例正确创建嵌入。
有关此功能的更多信息,请参阅“使用引入的数据创建聊天”的示例代码。
视频:了解如何使用逻辑应用构建 AI 应用程序
引入数据工作流
为了在构建摄取管道时节省大量时间和精力,请对任何数据源实施以下模式。 此模式融入了单租户 Azure 逻辑应用中标准工作流当前提供的所有优点和好处。
此模式中的每一步都确保 AI 从数据文件中无缝提取所有关键信息。 如果作为无状态工作流运行,此模式还可以提供更快的性能。 这种方法不仅简化了编码方面,还保证你的工作流具有有效的身份验证、监控和部署流程。
步长 | 任务 | 基础操作 | 说明 |
---|---|---|---|
1 | 检查新数据。 | 收到 HTTP 请求时 | 轮询或等待新数据到达的触发器,基于计划的重复,或者分别响应特定事件。 此类事件可能是上传到特定存储系统(例如 SharePoint、OneDrive 或 Azure Blob 存储)的新文件。 在此示例中,请求触发器操作等待从另一个终结点发送的 HTTP 或 HTTPS 请求。 该请求包括新上传文档的 URL。 |
2 | 获取数据。 | HTTP | 使用触发器输出中的文件 URL 检索上传文档的 HTTP 操作。 |
3 | 撰写文档详细信息。 | Compose | 一个数据操作操作,可连接各种项。 此示例连接有关文档的键值信息。 |
4 | 创建令牌字符串。 | 分析文档 | 一个数据操作行为,该行为使用“撰写”操作的输出生成标记字符串。 |
5 | 创建内容区块。 | 将文本分块 | 一个数据操作行为,该行为根据每个内容块的字符数或标记数,将标记字符串拆分成几部分。 |
6 | 将标记化数据转换为 JSON。 | Parse JSON | 一个数据操作行为,该行为可将标记字符串区块转换为 JSON 数组。 |
7 | 选择 JSON 数组项。 | Select | 一个数据操作操作,可从 JSON 数组中选择多个项。 |
8 | 生成嵌入。 | 获取多个嵌入 | Azure OpenAI 操作,可为每个 JSON 数组项创建嵌入。 |
9 | 选择嵌入和其他信息。 | Select | 一个数据操作操作,可选择嵌入和其他文档信息。 |
10 | 为数据编制索引。 | 为文档编制索引 | Azure AI 搜索 操作,可基于每个所选嵌入为数据编制索引。 |
聊天工作流
当矢量数据库继续引入数据时,请确保数据易于搜索,以便当用户提出问题时,后端标准逻辑应用工作流可以处理提示并生成可靠的响应。
以下模式只是显示聊天工作流程的一个示例:
步长 | 任务 | 基础操作 | 说明 |
---|---|---|---|
1 | 等待输入提示。 | 收到 HTTP 请求时 | 轮询或等待新数据到达的触发器,基于计划的重复,或者分别响应特定事件。 在此示例中,请求触发器会等待并捕获客户的问题。 |
2 | 模型的输入系统消息。 | Compose | 一个数据操作操作,可提供用于训练模型的输入。 |
3 | 输入示例问题和响应。 | Compose | 一个数据操作操作,可提供用于训练模型的示例客户问题和关联角色。 |
4 | 搜索查询的输入系统消息。 | Compose | 一个数据操作操作,可提供用于训练模型的搜索查询输入。 |
5 | 生成搜索查询。 | 执行 JavaScript 代码 | 一个内联代码操作,可使用 JavaScript 基于上述 Compose 操作的输出为矢量存储创建搜索查询。 |
6 | 将查询转换为嵌入。 | 获取聊天补全 | 一个 Azure OpenAI 操作,可连接到聊天补全 API,这可以保证聊天对话中的可靠响应。 在此示例中,操作接受搜索查询和角色作为模型的输入,并返回矢量嵌入作为输出。 |
7 | 获取嵌入。 | 获取嵌入 | 一个 Azure OpenAI 操作,可获取单个矢量嵌入。 |
8 | 搜索矢量数据库。 | 搜索矢量 | 在矢量存储中执行搜索的 Azure AI 搜索操作。 |
9 | 创建提示。 | 执行 JavaScript 代码 | 一个内联代码操作,可使用 JavaScript 生成提示。 |
10 | 执行聊天补全。 | 获取聊天补全 | 一个 Azure OpenAI 操作,可连接到聊天补全 API,这可以保证聊天对话中的可靠响应。 在此示例中,操作接受提示和角色作为模型的输入,并返回模型生成的响应作为输出。 |
11 | 返回响应。 | 响应 | 一个请求操作,可在使用请求触发器时将结果返回给调用者。 |