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

在 Microsoft Foundry 中生成工作流

工作流是 Microsoft Foundry 中基于 UI 的工具。 可以使用它们创建声明性预定义动作序列,包括代理的,就像在 Microsoft Agent Framework 的工作流中一样。

工作流使你能够构建智能自动化系统,以可视方式将 AI 代理与业务流程无缝混合。 传统的单代理系统在处理复杂多方面任务的能力有限。 通过协调多个代理(每个代理都具有专业知识或角色)可以创建更可靠、更自适应且能够协作解决实际问题的系统。

先决条件

工作流概念

若要在 Foundry 中创建工作流,可以从空白工作流开始,或选择预定义业务流程模式的模板之一:

图案 Description 典型用例
人机共生 询问用户一个问题并等待用户输入继续 在工作流执行期间创建审批请求并等待人工审批,或获取用户信息
顺序 按定义的顺序将一个代理的结果传递到下一个代理 分步工作流、管道或多阶段处理
群组聊天 根据上下文或规则动态在各代理之间传递控制权 动态工作流、升级、回退或专家移交方案

有关详细信息,请参阅 Microsoft Agent Framework 工作流业务流程

创建工作流

以下步骤演示如何创建顺序类型的工作流作为示例:

  1. 登录到 Microsoft Foundry。 确保 New Foundry 开关处于打开状态。 这些步骤涉及到 Foundry(新)。

  2. 在右上角菜单中,选择“ 生成”。

  3. 选择 创建新工作流>顺序

  4. 通过在工作流中选择每个代理节点并选择所需的代理或创建新代理,将代理分配到代理节点。 有关详细信息,请参阅本文稍后部分的 在工作流中添加代理

  5. 选择“在可视化工具中 保存 ”以保存更改。

    重要

    不会自动保存工作流。 每次要保存工作流更改时,选择“ 保存 ”。

  6. 选择 “运行工作流”。

  7. 在聊天窗口中与工作流进行互动。

  8. (可选)将新节点添加到工作流。 本文中的下一部分提供有关节点的信息。

将节点添加到工作流

节点定义工作流的构建基块。 常见节点类型包括:

  • 代理:调用代理。
  • 逻辑:使用 if/elsego tofor each
  • 数据转换:设置变量或分析值。
  • 基本聊天:向代理发送消息或提问。

选择预生成工作流时,生成器中会显示节点的工作流。 每个节点对应于特定的作或组件,并按顺序执行步骤。 可以通过选择节点上的三个点,然后选择 移动来修改节点的顺序。 可以通过在工作区中选择加号图标+来添加新节点。

将代理添加到工作流

可以将项目中的任何 Foundry 代理添加到工作流。 代理节点还允许你创建新代理,并通过配置其模型、提示和工具为其提供自定义功能。

有关代理创建的高级选项和全面的信息,请转到 Foundry 门户中的 Foundry 代理 选项卡。

添加现有代理

  1. 在工作流可视化工具中,选择加号。

  2. 在弹出下拉列表中,选择 “调用代理”。

  3. 在“ 创建新代理 ”窗口中,选择 现有代理。

  4. 输入代理名称以在 Foundry 项目中搜索现有代理。

  5. 选择要将其添加到工作流中的所需代理。

创建新代理

  1. 在工作流可视化工具中,选择加号。

  2. 在弹出下拉列表中,选择 “调用代理”。

  3. 输入代理名称及其功能描述。

  4. 选择 并添加

  5. “调用代理 ”窗口中,配置代理。

  6. 选择“保存”

配置用于调用代理的输出响应格式

  1. 创建 Invoke 代理 节点。

  2. “调用代理 配置”窗口中,选择“ 创建新代理”。

  3. 将代理配置为将输出作为 JSON 架构发送:

    1. 选择“详细信息”。
    2. 选择参数图标。
    3. 对于 文本格式,请选择 JSON 架构

    显示用于为输出配置 JSON 架构格式的窗口的屏幕截图。

  4. 复制所需的 JSON 架构并将其粘贴到 “添加响应格式 ”窗口中。 以下屏幕截图显示了一个数学示例。 选择“保存”

    显示 JSON 中添加响应格式的屏幕截图。

    {
      "name": "math_response",
      "schema": {
        "type": "object",
        "properties": {
          "steps": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "explanation": {
                  "type": "string"
                },
                "output": {
                  "type": "string"
                }
              },
              "required": [
                "explanation",
                "output"
              ],
              "additionalProperties": false
            }
          },
          "final_answer": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "required": [
          "steps",
          "final_answer"
        ]
      },
      "strict": true
    }
    
  5. 选择 “操作设置”。 然后选择将输出的json_object/json_schema另存为

  6. 选择“ 创建新变量”。 选择变量名称,然后选择“ 完成”。

    显示用于在 Microsoft Foundry 工作流中创建新变量的选项的屏幕截图。

使用其他功能

  • YAML 可视化工具视图:将 YAML 可视化工具视图 切换设置为 “开”时,工作流将存储在 YAML 文件中。 可以在可视化工具和 YAML 视图中修改它。 保存会创建新版本,你可以访问版本历史。

    可视化工具和 YAML 是可编辑的。 对 YAML 文件所做的任何更改都反映在可视化工具中。

  • 版本控制:每次保存工作流时,都会创建一个新的不变版本。 若要查看版本历史记录或删除旧版本,请打开“保存”按钮左侧的“版本”下拉列表。

  • 工作流可视化工具上的注释:可以在工作流可视化工具上添加备注,以便为工作流添加更多上下文或信息。 在工作流可视化工具的左上角,选择 “添加备注”。

使用 Power Fx 创建表达式

Power Fx 是一种使用类似 Excel 的公式的低代码语言。 使用 Power Fx 创建复杂的逻辑,让你的智能体可以操作数据。 例如,Power Fx 公式可以设置变量的值、解析字符串或在条件中使用表达式。 有关详细信息,请参阅 Power Fx 概述公式参考

在公式中使用变量

要在 Power Fx 公式中使用变量,必须向其名称添加前缀以指示变量的范围:

  • 对于系统变量,请使用 System.
  • 对于局部变量,请使用 Local.

下面是系统变量:

Name Description
Activity 有关当前活动的信息
Bot 有关代理的信息
Conversation 有关当前对话的信息
Conversation.Id 当前对话的唯一 ID
Conversation.LocalTimeZone 用户的时区,采用 IANA 时区数据库格式
Conversation.LocalTimeZoneOffset 当前时区相对于 UTC 的时间偏移量
Conversation.InTestMode 表示对话是否在测试画布上进行的布尔标志
ConversationId 当前对话的唯一 ID
InternalId 系统的内部标识符
LastMessage 有关用户发送的上一条消息的信息
LastMessage.Id 用户发送的上一条消息的 ID
LastMessage.Text 用户发送的上一条消息
LastMessageId 用户发送的上一条消息的 ID
LastMessageText 用户发送的上一条消息
Recognizer 有关意向识别和触发消息的信息
User 有关当前与代理通信的用户的信息
User.Language 每次对话的用户语言区域设置
UserLanguage 每次对话的用户语言区域设置

在公式中使用文本值

除了可以在 Power Fx 公式中使用变量之外,还可以输入文本值。 要在公式中使用文本值,必须以对应其类型的格式输入文本值。

下表列出了数据类型及其相应文本值的格式:

类型 格式示例
String "hi""hello world!""copilot"
布尔 truefalse
Number 1、、5325.258、、-9201
记录和表 [1][45, 8, 2]["cats", "dogs"]{ id: 1 }{ message: "hello" }{ name: "John", info: { age: 25, weight: 175 } }
日期和时间 Time(5,0,23)Date(2022,5,24)DateTimeValue("May 10, 2022 5:00:00 PM")
选择 不支持
空白 仅限 Blank()

常用 Power Fx 公式

下表列出了可用于每种数据类型的 Power Fx 公式。

类型 Power Fx 公式
String [Text function][1]
[Concat and Concatenate functions][2]
[Len function][3]
[Lower, Upper, and Proper functions][4]
[IsMatch, Match, and MatchAll functions][5]
[EndsWith and StartsWith functions][6]
[Find function][7]
[Replace and Substitute function][8]
布尔 [Boolean function][9]
[And, Or, and Not functions][10]
[If and Switch functions][11]
Number [Decimal, Float, and Value functions][12]
[Int, Round, RoundDown, RoundUp, and Trunc functions][13]
记录和表 [Concat and Concatenate functions][14]
[Count, CountA, CountIf, and CountRows functions][15]
[ForAll function][16]
[First, FirstN, Index, Last, and LastN functions][17]
[Filter, Search, and LookUp functions][18]
[JSON function][19]
[ParseJSON function][20]
日期和时间 [Date, DateTime, and Time functions][21]
[DateValue, TimeValue, and DateTimeValue functions][22]
[Day, Month, Year, Hour, Minute, Second, and Weekday functions][23]
[Now, Today, IsToday, UTCNow, UTCToday, IsUTCToday functions][24]
[DateAdd, DateDiff, and TimeZoneOffset functions][25]
[Text function][26]
空白 [Blank, Coalesce, IsBlank, and IsEmpty functions][27]
[Error, IfError, IsError, IsBlankOrError functions][28]

使用 Power Fx 设置变量

在此示例中,Power Fx 表达式以大写字母存储并输出客户的名称:

  1. 创建工作流并添加 “提问” 节点。

  2. 在出现的窗格中,在 “提问” 框中,输入 你的姓名是什么? 或其他消息。 在 “将用户响应另存为 ”框中,输入变量名称;例如, Var01. 然后选择“完成”

    展示消息发送问题配置的屏幕截图。

  3. 添加“发送消息”动作。 在出现的窗格中,在 “要发送的消息 ”区域中,输入 {Upper(Local.Var01)}。 然后选择“完成”

    显示用于发送消息操作的变量实例化的屏幕截图。

  4. 选择预览

  5. 在预览窗格中,向代理发送消息以调用工作流。

    显示用于发送消息操作的问题预览的屏幕截图。

使用 Power Fx 创建 if/else 流

在此示例中,Power Fx 表达式以大写字母存储并输出客户的姓名。

  1. 创建工作流并添加 “提问” 节点。

  2. 选择图标 + 并添加 if/else 流。

  3. System.”文本框中键入,为每个 if/else 组合创建条件语句。 显示 if-else 条件文本框中系统变量的屏幕截图。

  4. 为工作流中的下一个所需步骤选择“下一个操作”。

  5. 选择“完成”。 选择 “保存” 以保存工作流