你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure 逻辑应用中的标准工作流连接到 Azure AI 服务
适用于:Azure 逻辑应用(标准)
若要将企业数据和服务与 AI 技术集成,可以在标准逻辑应用工作流中使用 Azure OpenAI 和 Azure AI 搜索内置连接器。 这些连接器支持多种身份验证类型,例如 API 密钥、Microsoft Entra ID 和托管身份。 它们还可以连接到防火墙后面的 Azure OpenAI 服务和 Azure AI 搜索终结点,以便工作流安全连接到 Azure 中的 AI 资源。
本指南提供有关如何在工作流中使用 Azure OpenAI 和 Azure AI 搜索连接器操作的概述和示例。
为什么要将 Azure 逻辑应用与 AI 服务一起使用?
通常,构建人工智能解决方案涉及几个关键步骤,并且需要一些构建块。 首先,需要有一个动态引入管道和一个可以与大型语言模型 (LLM) 和矢量量数据库进行通信的聊天界面。
提示
若要了解详细信息,可以向 Azure Copilot 提出以下问题:
- 什么是 AI 中的动态数据引入管道?
- 什么是 AI 中的矢量数据库?
若要查找 Azure Copilot,请在 Azure 门户 工具栏上,选择 Copilot。
可以组合各种组件,不仅可以执行数据引入,还可以为聊天界面提供强大的后端。 该后端有助于输入提示并在交互过程中生成可靠的响应。 然而,创建代码来管理和控制所有这些元素可能具有挑战性,大多数解决方案都是如此。
Azure 逻辑应用提供低代码方法,并通过提供预构建的连接器(可以将其用作构建块来简化后端流程)来简化后端管理。 这种方法让你可以专注于获取数据并确保搜索结果提供最新的相关信息。 借助这些 AI 连接器,你的工作流可以充当编排引擎,在 AI 服务和你想要集成的其他组件之间传输数据。
有关更多信息,请参见以下资源:
连接器技术参考
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 逻辑应用和应用服务环境 v3(仅限 Windows 计划) | 内置连接器,显示在“运行时”>“应用内”下的连接器库中,并且基于服务提供商。 内置连接器可以直接访问 Azure 虚拟网络,而无需使用本地数据网关。 有关详细信息,请参阅 Azure OpenAI 内置连接器参考。 |
Azure AI 搜索
Azure AI 搜索是基于 AI 的信息检索平台,可帮助开发人员通过将大型语言模型与企业数据相结合来构建丰富的搜索体验和生成式 AI 应用程序。 通过 Azure AI 搜索连接器,工作流可以连接到 Azure AI 搜索,从而为文档编制索引并对数据执行矢量搜索。
逻辑应用 | 环境 | 连接器版本 |
---|---|---|
标准 | 单租户 Azure 逻辑应用和应用服务环境 v3(仅限 Windows 计划) | 内置连接器,显示在“运行时”>“应用内”下的连接器库中,并且基于服务提供商。 内置连接器可以直接访问 Azure 虚拟网络,而无需使用本地数据网关。 有关详细信息,请参阅 Azure AI 搜索内置连接器参考。 |
身份验证
这两个 AI 连接器都支持以多种方式对 AI 服务终结点进行身份验证。 这些选项提供了可靠的身份验证,可以满足大多数客户的需求。 这两个 AI 连接器还可以直接连接到虚拟网络内的 Azure OpenAI 和 Azure AI 搜索服务。
以下列表描述了这些选项,所有这些选项都要求提供服务的终结点。
身份验证类型 | 说明 |
---|---|
基于密钥的身份验证 | 提供 AI 服务生成的 API 密钥或管理员。 |
Microsoft Entra ID,以前称为 Azure Active Directory | 提供 Entra 租户、客户端 ID 和密码等信息,以作为 Entra 用户进行身份验证。 |
托管的标识 | 在 AI 服务和逻辑应用资源上启用托管身份验证后,可以使用该身份来验证连接器的访问权限。 |
有关更多信息,请参见以下资源:
- 对 Azure AI 服务的请求进行身份验证
- 什么是 Microsoft Entra ID
- 什么是 Azure 资源托管标识?
- 使用 Azure 逻辑应用中的托管标识对 Azure 资源的访问和连接进行身份验证
将 Azure OpenAI 或 Azure AI 搜索操作添加到工作流中
目前,Azure OpenAI 和 Azure AI 搜索的内置连接器仅提供操作,不提供触发器。 可以使用适合场景或需求的任何触发器来启动工作流,然后按照这些常规步骤为 Azure OpenAI、Azure AI 搜索和其他操作添加操作。
方案
以下场景仅描述了在工作流中使用 AI 连接器操作的多种方法中的两种:
为企业数据创建知识库
Azure 逻辑应用提供了 1,000 多个 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 | 返回响应。 | 响应 | 一个请求操作,可在使用请求触发器时将结果返回给调用者。 |
另请参阅
Azure OpenAI 和 Azure AI 搜索连接器现已正式发布适用于 Azure 逻辑应用(标准版)的 Azure OpenAI 和 AI 搜索连接器