在以往常见的Dify工作流里面,工具的调用逻辑是预先编排好的,不够灵活,无法适应复杂场景。随着大型语言模型(LLM)推理能力的不断增强,Dify推出Agent节点,利用大模型自主调用工具。通过集成不同的Agent推理策略,使LLM能在运行时动态选择并执行工具,增强工具调用灵活性。
Agent节点 与 Agent策略
- • Agent节点(执行单元)工作流的“决策中心”。它分配资源、管理状态,并记录整个推理过程。
- Agent策略,是一个可插拔的推理算法模块(可以具象为提示词),定义了如何使用工具以及如何解决问题,它是嵌入Agent节点来产生作用的。
Dify官方Agent策略插件介绍
Dify Agent策略插件是Dify官方推出的,如下是它的安装方法:- • 精确:直接调用适合定义任务的正确工具,避免复杂的推理。
- • 易于外部集成:将外部 API 和工具集成到可调用的函数中。
- • 结构化输出:提供结构化的Function Calling信息,便于处理。
- • 利用外部信息:有效使用外部工具来收集模型单独无法处理的任务所需的信息。
- • 可解释的推理:推理和行动步骤交织在一起,允许一定程度上跟踪Agent 的过程。
- • 广泛适用性:适用于需要外部知识或特定行动的任务,例如问答、信息检索和任务执行。
Dify发布了策略开发的开放标准,开发人员可以基于此标准进行各种其他策略开发:
(1)使用 CLI 工具快速创建策略插件
(2)自定义配置表单和可视化组件
(3)集成前沿的学术算法,例如:树状思维例如链式思维(CoT)、树状思维(ToT)、图状思维(GoT)、柱状思维(BoT)、语义内核(semantic kernels)等。
Agent节点配置方法简介
- 1. 拖放式设置只需从工具面板拖动一个 Agent节点,并通过三个步骤进行配置:
- • 选择推理策略
- • 链接工具/模型
- • 设置提示模板
- • 可视化代理的执行路径,以便调试复杂的多步推理
- • 实时查看:
- • 总时间和令牌使用量
- • 每轮推理
- • 工具调用轨迹
Agent节点设置和执行示意图
Agent策略开发简介
定义 Agent 策略涉及指定语言模型将如何:
- 1. 处理用户查询
- 2. 选择正确的工具
- 3. 使用正确的参数运行这些工具
- 4. 处理结果
- 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 策略