Dify “Agent节点” 让工作流学会 “自主推理”

在以往常见的Dify工作流里面,工具的调用逻辑是预先编排好的,不够灵活,无法适应复杂场景。随着大型语言模型(LLM)推理能力的不断增强,Dify推出Agent节点,利用大模型自主调用工具。通过集成不同的Agent推理策略,使LLM能在运行时动态选择并执行工具,增强工具调用灵活性。

Agent节点 与 Agent策略 

  • • Agent节点(执行单元)工作流的“决策中心”。它分配资源、管理状态,并记录整个推理过程。
  • Agent策略(决策逻辑)
  • Agent策略,是一个可插拔的推理算法模块(可以具象为提示词),定义了如何使用工具以及如何解决问题,它是嵌入Agent节点来产生作用的。
   目前Dify市场上有四种Agent策略插件,见下图:
Agent节点类似LLM节点,它处理特定任务,并将最终响应返回给下一个节点。Agent节点和Agent策略这种解耦设计就像将汽车的发动机与控制系统分开一样——开发人员可以在不影响整体架构的情况下升级“动力系统”。在工作流中,Agent节点为多步工具推理实现了自主思考。一个最小的 Agent策略至少需要定义如何使用LLM API以及如何调用工具。
  • Agent节点功能示意图

 

Dify官方Agent策略插件介绍

Dify Agent策略插件是Dify官方推出的,如下是它的安装方法:
Dify Agent策略插件提供了两种推理策略Function Calling和ReAct,下面进行简单对比:1. Function CallingFunction Calling将用户命令映射到特定的函数或工具。LLM 识别用户的意图,决定调用哪个函数,并提取所需的参数。这是一种直接调用外部能力的简单机制,它的优点有:
  •   • 精确:直接调用适合定义任务的正确工具,避免复杂的推理。
  •   • 易于外部集成:将外部 API 和工具集成到可调用的函数中。
  •   • 结构化输出:提供结构化的Function Calling信息,便于处理。
2. ReAct(推理 + 行动)ReAct 在LLM推理和采取行动之间交替进行。LLM分析当前状态和目标,选择并使用一个工具,然后利用工具的输出进行下一步的思考和行动。这个循环会一直重复,直到问题得到解决,它的优点有:
  •   • 利用外部信息:有效使用外部工具来收集模型单独无法处理的任务所需的信息。
  •   • 可解释的推理:推理和行动步骤交织在一起,允许一定程度上跟踪Agent 的过程。
  •   • 广泛适用性:适用于需要外部知识或特定行动的任务,例如问答、信息检索和任务执行。

 

 

Dify发布了策略开发的开放标准,开发人员可以基于此标准进行各种其他策略开发:

(1)使用 CLI 工具快速创建策略插件

(2)自定义配置表单和可视化组件

(3)集成前沿的学术算法,例如:树状思维例如链式思维(CoT)、树状思维(ToT)、图状思维(GoT)、柱状思维(BoT)、语义内核(semantic kernels)等。

Agent节点配置方法简介

  1. 1. 拖放式设置只需从工具面板拖动一个 Agent节点,并通过三个步骤进行配置:
  • • 选择推理策略
  • • 链接工具/模型
  • • 设置提示模板
  • 2. 推理执行日Dify 的强大功能之一是其内置的日志机制,它会创建一个类似树状结构的代理思维过程。这种结构使您能够:
    • • 可视化代理的执行路径,以便调试复杂的多步推理
    • • 实时查看:
      • • 总时间和令牌使用量
      • • 每轮推理
      • • 工具调用轨迹

    Agent节点设置和执行示意图

    Agent策略开发简介

    定义 Agent 策略涉及指定语言模型将如何:

    1. 1. 处理用户查询
    2. 2. 选择正确的工具
    3. 3. 使用正确的参数运行这些工具
    4. 4. 处理结果
    5. 5. 决定何时完成任务
    开发者指南示意图

    Dify提供了一个标准化开发工具包,其中包括策略配置组件库(例如模型选择器/工具编辑器)、结构化日志接口以及沙盒测试环境。

    具体来说,策略定义涵盖了其身份和元数据、所需参数(模型、工具、查询等)、参数类型和约束以及源代码的位置。

    代理的执行分为三个主要阶段:初始化迭代循环最终响应。在初始化阶段,系统设置所有必要的参数、工具和上下文。然后,在迭代循环中,系统根据当前上下文准备提示,并使用有关可用工具的信息调用 LLM。它解析 LLM 的响应,以确定是否需要工具调用,或者是否已经得出最终答案。如果需要工具调用,系统将执行该工具,并将其输出更新到上下文中。此循环会一直持续,直到任务完成或达到预设的迭代限制。最后,在最后一个阶段,系统返回最终答案或结果。

    例如,一个 function_calling.yaml 文件可能如下所示:

    parameters:  -name:model    type:model-selector    scope:tool-call&llm-name:tools    type:array[tools]-name:max_iterations    type:number    default:5extra:python:    source: function_calling.py

    采用于这种声明式架构,配置策略变得和填表一样简单,同时支持:

    • • 动态参数验证(类型/范围/依赖关系)
    • • 自动多语言标签渲染

    详见https://docs.dify.ai/zh-hans/plugins/quick-start/develop-plugins/agent-strategy-plugin。

    迭代计划

    Dify计划进一步对Agent节点进行迭代,添加更多对开发人员友好的组件,例如:

    • • 知识库集成
    • • Chatflow 中的内存支持
    • • 错误处理和重试
    • • 更多官方 Agent 策略
    未来展望示意图


    ©著作权归作者所有,转载或内容合作请联系作者
    平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

    推荐阅读更多精彩内容