你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure 逻辑应用的标准工作流中使用提示模板创建聊天补全内容(预览版)

适用于:Azure 逻辑应用(标准)

注释

此功能为预览版,受 Microsoft Azure 预览版补充使用条款限制。

假设你想要自动执行企业或组织回答来自各种人员群体的问题的方式,例如员工、客户、投资者或媒体。 可以使用名为“使用提示模板获取聊天补全内容”的“Azure OpenAI 服务”操作以及来自企业或组织的数据添加用于回答问题的聊天交互

在 Azure OpenAI 服务中将自己的数据与模型配合使用时,将创建一个支持 AI 的对话平台,该平台提供更快的通信,并从特定的域知识中提取上下文。 若要生成一个处理每个问题、访问数据源并返回响应的过程,请在 Azure 逻辑应用中创建标准工作流,以自动执行必要的步骤-全部无需编写代码。

本指南演示如何使用 提示模板 作为起点将聊天交互添加到标准工作流。 此模板是基于文本的预构建结构,用于指导 AI 模型与问题者的交互。

下图显示了本指南创建的示例工作流:

屏幕截图展示了 Azure 门户、标准工作流设计器,以及用于创建示例聊天助手的操作。

有关此工作流中的作的详细信息,请参阅 “查看示例方案”。

模板为创建符合特定用例的有效、有用和清晰提示提供了以下优势:

益处 DESCRIPTION
一致性 集中指令逻辑,而不是在每个动作中嵌入提示文本。
可 重用 跨多个工作流应用相同的提示。
可维护性 在不编辑整个流的情况下调整单个位置的提示逻辑。
动态控件 工作流输入直接传入模板,例如表单、数据库或 API 中的值。

所有这些优势都有助于创建适合可缩放企业自动化的自适应 AI 驱动流,而无需重复工作。

有关详细信息,请参阅以下文档:

查看示例方案

本指南使用为 IT 团队创建聊天助理的示例方案。 除其他职责外,团队还为公司员工采购笔记本电脑等硬件。 此助手的要求包括以下任务:

  • 接受一个使用自然语言且领会上下文的问题。
  • 读取和搜索结构化数据,例如过去的订单和目录详细信息。
  • 使用 Jinja2 语法将结果传递到提示模板,以在运行时动态注入数据。
  • 生成完善而专业的回复。

示例工作流使用以下操作:

操作 DESCRIPTION
名为“当 HTTP 请求可用时”的内置触发器 等待 HTTPS 请求从外部调用方到达。 此请求会导致触发器触发、启动工作流,并传入包含工作流作使用的输入的序列化令牌字符串。
三个Compose内置操作 这些操作存储以下测试数据:

- 员工:员工个人资料和过去的采购订单。

- 问题:所问的问题。

- 产品:内部产品目录条目。
名为“使用提示模板获取聊天补全内容”的内置操作 获取指定提示模板的聊天补全内容。 有关详细信息,请参阅使用提示模板获取聊天补全内容

小窍门

每当有选择时,应始终选择内置(“应用内”)操作,而不是托管(“共享”)版本。 内置版本在 Azure 逻辑应用运行时内运行,以减少延迟,并提供更好的性能和对身份验证的控制。

此示例创建和使用提示模板,使工作流能够完成以下任务:

  • 使用占位符定义提示,例如 {{ Employee.orders }}
  • 使用工作流中早期作的输出自动填充模板。
  • 以最少的努力生成一致且结构化的提示。

若要遵循该示例,请从 Azure 逻辑应用 GitHub 存储库下载 示例提示模板和输入 。 该示例假定你正在模拟使用测试输入的采购数据。

先决条件

  • 一个 Azure 帐户和订阅。 如果没有 Azure 订阅,请注册一个免费 Azure 帐户

  • 具有空白 有状态 工作流的标准逻辑应用资源,用于存储运行历史记录以及可用于测试的变量、输入和输出的值。

    若要创建此资源和工作流,请参阅 使用 Azure 门户创建标准逻辑应用工作流示例

  • 具有已部署模型(如 GPT-3.5 或 GPT-4)的 Azure OpenAI 服务资源

    • 本作指南中的示例提供了可用于试用工作流的测试数据。 若要使用 Azure OpenAI 服务模型与自己的数据聊天,必须创建 Azure AI Foundry 项目并添加自己的数据源。 有关详细信息,请参阅以下文档:

    • Azure OpenAI 作添加到工作流时,可以创建与 Azure OpenAI 服务资源的连接。 需要从 Azure OpenAI 服务 资源获取终结点 URL,并根据所选的身份验证类型提供以下信息。

      身份验证类型 要查找的必需值
      基于 URL 和密钥的身份验证 1.转到 Azure OpenAI 服务 资源。

      2. 在资源菜单上的 “资源管理”下,选择 “密钥”和“终结点”。

      3.复制 终结点 URL 和任一 密钥 值。 将这些值存储在安全的地方。
      Active Directory OAuth 1. 为 OAuth 2.0 设置使用 Microsoft Entra ID 身份验证的逻辑应用资源

      2.转到 Azure OpenAI 服务 资源。

      3. 在资源菜单上的 “资源管理”下,选择 “密钥”和“终结点”。

      4.复制 终结点 URL。 将此值存储在安全的地方。
      托管标识
      (推荐使用)
      1.按照常规步骤为逻辑应用设置使用 Microsoft Entra ID 的托管标识

      2.转到 Azure OpenAI 服务 资源。

      3. 在资源菜单上的 “资源管理”下,选择 “密钥”和“终结点”。

      4.复制 终结点 URL。 将此值存储在安全的地方。

      警告

      始终保护和保护敏感数据,例如凭据、机密、访问密钥、连接字符串、证书、指纹以及具有最高可用或受支持的安全级别的类似信息。

      若要进行身份验证和授权,请设置或使用包含托管标识Microsoft Entra ID。 此解决方案提供最佳和优越的安全性,无需手动提供和管理凭据、机密、访问密钥等,因为 Azure 会为你处理托管标识。 若要为 Azure 逻辑应用设置托管标识,请参阅在 Azure 逻辑应用中使用托管标识对 Azure 资源的访问和连接进行身份验证

      如果无法使用托管标识,请选择可用的下一个最高级别安全解决方案。 例如,如果必须使用连接字符串(包括访问资源、服务或系统所需的信息),请记住,此字符串包含类似于根密码的访问密钥。

      确保使用 Microsoft Entra ID 和 Azure 密钥保管库安全存储此类信息。 不要硬编码此信息、与其他用户共享或保存在其他人可以访问的任何位置的纯文本中。 设置计划以轮换或撤销机密,以防机密被盗用。 有关详细信息,请参阅以下资源:

添加触发器

工作流需要一个触发器来控制何时开始运行。 可以使用适合您场景的任何触发器。 有关详细信息,请参阅触发器

按照以下步骤添加触发器:

  1. Azure 门户的设计器中,打开标准逻辑应用资源和空白工作流。

  2. 按照 常规步骤添加你想要的触发器

    此示例使用名为“当 HTTP 请求可用时的请求触发器。 有关此触发器的详细信息,请参阅 接收和响应入站 HTTPS 调用

  3. 保存工作流。 在设计器工具栏上选择“保存”。

    保存工作流后,请求触发器的 HTTP URL 参数中会显示一个 URL。 此 URL 属于为 请求 触发器创建的终结点。 为了触发触发器并启动工作流,工作流外部的调用方可以向 URL 发送 HTTPS 请求,并包含触发器要传递给工作流中的输入。

    警告

    终结点 URL 包括一个共享访问签名 (SAS) 密钥,该密钥为具有 URL 的任何人都可以触发工作流并传递所需的任何数据。 有关保护和保护工作流的信息,请参阅 工作流中的安全访问和数据

完成后,工作流如以下示例所示:

屏幕截图显示了标准工作流设计器和请求触发器。

添加“撰写”操作

若要添加用于存储触发器输出的操作,以便后续操作作为输入,请执行以下步骤:

  1. 在触发器下,按照常规步骤添加名为“撰写”操作的数据操作

    该示例添加三个 Compose 作,并将以下测试数据用作输入:

    1. 将第一个“撰写”操作重命名为“员工”,并在“输入”框中输入以下数据

      {
          "firstName": "Alex",
          "lastName": "Taylor",
          "department": "IT",
          "employeeId": "E12345",
          "orders": [
              { 
                  "name": "Adatum Streamline 5540 Laptop",
                  "description": "Ordered 15 units for Q1 IT onboarding",
                  "date": "2024/02/20"
              },
              {
                  "name": "Docking Station",
                  "description": "Bulk purchase of 20 Adatum AB99Z docking stations",
                  "date": "2024/01/10"
              }
          ]
      }
      
    2. 将下一个 Compose 操作重命名为 问题,并在 输入 框中输入以下数据:

      [
          {
              "role": "user",
              "content": "When did we last order laptops for new hires in IT?"
          }
      ]
      
    3. 将下一个Compose 动作重命名为产品,并在输入框中输入以下数据:

      [
          {
              "id": "1",
              "title": "Adatum Streamline 5540 Laptop",
              "content": "i7, 16GB RAM, 512GB SSD, standard issue for IT new hire onboarding" 
          },
          {
              "id": "2",
              "title": "Docking Station",
              "content": "Adatum AB99Z docking stations for dual monitor setup"
          }
      ]
      

完成后,工作流如以下示例所示:

屏幕截图显示了标准工作流设计器、请求触发器和三个重命名的 Compose 操作。

现在,将 Azure OpenAI 操作添加到工作流中。

添加 Azure OpenAI 操作

  1. 在最后一个“撰写”操作下,按照常规步骤添加名为“使用提示模板获取聊天补全内容”的“Azure OpenAI”操作

  2. 动作显示在设计器界面上后,将打开连接窗格,以便您提供以下信息:

    参数 必选 价值 DESCRIPTION
    连接名称 是的 < 连接名称> 您的 Azure OpenAI 资源连接的名称。
    身份验证类型 是的 请参阅以下部分:

    - 先决条件
    - Azure OpenAI 内置连接器身份验证
    用于连接的身份验证类型。
    Azure OpenAI 端点 URL 是的 < endpoint-URL-Azure-OpenAI-resource> Azure OpenAI 资源的端点 URL。 有关详细信息,请参阅先决条件
    身份验证密钥 仅适用于 URL 和基于密钥的身份验证 < access-key> 请参阅以下部分:

    - 先决条件
    - Azure OpenAI 内置连接器身份验证
  3. 完成后,选择“ 新建”。

  4. 作窗格打开后,在“ 参数 ”选项卡上提供以下信息以用于提示模板:

    参数 价值 DESCRIPTION
    部署标识符 - gpt-4o
    - gpt-35
    Azure OpenAI 部署模型的名称,该模型应与用于 Azure OpenAI 资源的名称匹配。
    提示模板 < template-text> 提示模板。 有关详细信息,请参阅 使用提示模板获取聊天完成结果

    对于此示例,请将示例模板文本替换为以下示例文本:

    system:
    You are an AI assistant for Contoso's internal procurement team. You help employees get quick answers about previous orders and product catalog details. Be brief, professional, and use markdown formatting when appropriate. Include the employee’s name in your response for a personal touch.
    
    # Employee info
    Name: {{Employee.firstName}} {{Employee.lastName}}
    Department: {{Employee.department}}
    Employee ID: {{Employee.employeeId}}
    
    # Question
    The employee asked the following:
    
    {% for item in question %}
    {{item.role}}:
    {{item.content}}
    {% endfor %}
    
    # Product catalog
    Use this documentation to guide your response. Include specific item names and any relevant descriptions.
    
    {% for item in Products %}
    Catalog item ID: {{item.id}}
    Name: {{item.title}}
    Description: {{item.content}}
    {% endfor %}
    
    # Order history
    Here is the employee's procurement history to use as context when answering their question.
    
    {% for item in Employee.orders %}
    Order Item: {{item.name}}
    Details: {{item.description}} — Ordered on {{item.date}}
    {% endfor %}
    
    Based on the product documentation and order history above, provide a concise and helpful answer to their question. Don't fabricate information beyond the provided inputs.
    

    下表介绍了示例模板的工作原理:

    Template 元素 任务
    {{ Employee.firstName }} {{ Employee.lastName }} 显示员工名称。
    {{ Employee.department }} 添加部门上下文。
    {{ Question[0].content }} 从名为“问题”的“撰写”操作注入员工的问题
    {% for doc in Products %} 循环访问来自名为“产品”的“撰写”操作的目录数据
    {% for order in Employee.orders %} 循环访问来自名为“员工”的“撰写”操作的员工订单历史记录

    每个元素值都是动态从工作流的Compose操作中提取的,所有这些都不需要任何代码或外部服务。 可以应用相同的方法来引用来自其他作的数据输出,例如 SharePoint 列表、SQL Server 行、电子邮件正文,甚至 AI 搜索结果。 只需将输出映射到提示模板,其余的交给工作流去处理。

  5. “高级参数 ”列表中,选择“ 提示模板变量”,该变量现在显示在“ 参数 ”选项卡上。

  6. 在显示在“ 参数 ”选项卡上的键值表中,输入工作流中前面的 Compose 作中选择的以下模板变量名称和输出,例如:

    1. 在第一行的第一列中,输入 Employee 作为变量名称。

    2. 在同一行的下一列中,选择编辑框内部,然后选择闪电图标打开动态内容列表。

    3. 在动态内容列表中,在 “员工”下,选择“ 输出”。

      屏幕截图显示了一个名为“获取聊天完成”的操作,包含使用提示模板、提示模板变量表,打开的动态内容列表,以及在问题部分中选择的“输出”值。

    4. 在下一行和随后的行中针对问题产品重复相同的步骤。

    完成后,该表如以下示例所示:

    屏幕截图显示了已完成的提示模板变量表,其中包含问题、产品目录和员工输出。

  7. 有关其他参数,请参阅使用提示模板获取聊天补全内容

完成后,工作流如以下示例所示:

屏幕截图显示了标准工作流设计器、“请求”触发器、三个已重命名的“撰写”操作,以及 Azure OpenAI 内置操作“使用提示模板获取聊天补全内容”。

测试工作流

  1. 若要触发工作流,请根据说明使用您的 HTTP 请求工具将 HTTPS 请求发送到 请求 触发器的回调 URL,包括 请求 触发器所需的方法。

    有关触发器的基础 JSON 定义以及如何调用此触发器的详细信息,请参阅以下文档:

    工作流执行完成后,将打开运行历史记录页以显示每个作的状态。

    屏幕截图显示了最近完成的工作流的运行历史记录,其中包含每个作的状态。

    1. 若要在以后查找特定工作流运行的运行历史记录页,请执行以下步骤:

      1. 在工作流菜单上的“工具”下,选择“运行历史记录”。

      2. 在“运行历史记录”选项卡上,选择要检查的工作流运行

  2. 若要查找聊天响应,请在运行历史记录页上选择 Azure OpenAI 操作。

    此时会打开一个窗格,以显示所选作的输入和输出。

  3. 在打开的窗格中,滚动到“ 输出 ”部分。

    屏幕截图显示了最近完成的工作流的运行历史记录,包含每个操作的状态,以及所选的 Azure OpenAI 操作的输入和输出。

    响应完全基于传入工作流的结构化上下文,无需进行额外的微调。

清理资源

如果不需要为本指南创建的资源,请确保删除这些资源,以免继续收费。 可以按照以下步骤删除包含这些资源的资源组,也可以单独删除每个资源。

  1. 在 Azure 搜索框中输入“资源组”,然后选择“资源组”。

  2. 查找并选择包含此示例的资源的资源组。

  3. 在“概述”页上,选择“删除资源组” 。

  4. 出现确认窗格时,输入资源组名称,然后选择“删除”。