Dify 内置了两种 Agent 策略:Function Calling 和 ReAct,但二者有什么区别呢?在使用时又该如何选择呢?接下来我们一起来看。

1.Function Calling

Function Call 会通过将用户指令映射到预定义函数或工具,LLM 先识别用户意图,再决定调用哪个函数并提取所需参数。

它的核心是调用外部函数或工具,属于一种明确的工具调用机制

优点

  • 精确:对于明确的任务,可以直接调用相应的工具,无需复杂的推理过程。
  • 易于集成外部功能可以将各种外部 API 或工具封装成函数供模型调用。
  • 结构化输出:模型输出的是结构化的函数调用信息,方便下游节点处理。
  • 执行效率高:对于简单、明确的任务,执行速度快。

缺点

  • 如果任务定义不明确或用户意图模糊,LLM 可能难以准确选择工具或提取参数。
  • 对于需要多轮推理才能确定调用哪个工具的任务,不够灵活。

适用场景

  • 需要根据用户意图精确调用特定工具的自动化任务。
  • 需要与外部 API 或服务进行交互的场景。
  • 数据检索、信息查询并以特定格式呈现的应用

2.ReAct

ReAct=Reason+Act,推理+行动,LLM 首先思考当前状态和目标,然后选择并调用合适的工具,工具的输出结果又将引导 LLM 进行下一步的思考和行动,如此循环,直到问题解决。

举例说明

举个例子,正常情况下,当我们在计算一个商品的价格时,它的执行步骤是这样的:

  1. 查询商品原价。
  2. 计算商品优惠价。
  3. 计算商品最终价格=商品原价-优惠价。

但某个商品情况比较特殊,它在以上第二步中存储的不是优惠价,而是折扣价(例如 8 折优惠),那么此时商品的最终价格的计算公式就变成了以下方式:

  1. 查询商品原价。
  2. 查询商品折扣价。
  3. 计算商品最终价格=商品原价 X 商品折扣价。

在这种情况下就要使用 ReAct 策略了,因为 ReAct 策略会根据第二步的观测结果,分析并改变第三步的计算公式,保证任务的精准执行,这种情况下就要使用 React 策略。

核心机制

  • ReAct 是一个迭代过程,LLM 在“思考(Reason)-> 行动(Act)-> 观察(Observe)”的循环中逐步推进任务。
  • LLM 首先分析当前状态和目标,选择并调用工具,然后根据工具的输出进行下一步的思考和行动,直到问题解决。

优点

  • 利用外部信息:可以有效使用外部工具来收集模型单独无法处理的任务所需的信息。
  • 可解释性好:推理和行动步骤交织在一起,允许一定程度上跟踪 Agent 的过程。
  • 广泛适用性:适用于需要外部知识或特定行动的任务,例如问答、信息检索和任务执行。
  • 灵活性高:对于复杂、多步骤的任务,以及需要探索和动态调整策略的场景,具有更好的适应性。

缺点

  • 执行速度和成本:由于涉及多次 LLM 调用,ReAct 通常比 Function Calling 更慢,并且消耗更多的 tokens。
  • 推理稳定性:在很大程度上取决于 LLM 的推理能力以及提示(Instruction)的质量。
  • 输出解析复杂:ReAct 过程中 LLM 产生的“思考”文本格式可能不一致,给解析和提取关键信息带来挑战。

适用场景

  • 需要进行探索性研究、从多个来源收集和综合信息的任务。
  • 问题解决方案路径不明确,需要通过迭代尝试和调整来找到答案的复杂问题。
  • 需要较高可解释性,希望了解 Agent 决策过程的场景。

3.Function Calling VS React

Function Calling 和 React 区别如下:

  • Function Calling 更适合简单、明确的任务,强调直接调用工具的高效性。
  • ReAct 更适合复杂、多步骤的任务,强调推理过程的灵活性和可解释性。

本文已收录到我的技术小站 www.javacn.site,其中包含的内容有:Spring AI、LangChain4j、Dify、AI Agent、MCP、Function Call、RAG、向量数据库、Prompt、多模态、向量数据库、嵌入模型等内容。

AI智能体策略FunctionCalling和ReAct有什么区别?的更多相关文章

  1. 伯克利推出「看视频学动作」的AI智能体

    伯克利曾经提出 DeepMimic框架,让智能体模仿参考动作片段来学习高难度技能.但这些参考片段都是经过动作捕捉合成的高度结构化数据,数据本身的获取需要很高的成本.而近日,他们又更进一步,提出了可以直 ...

  2. 揭秘阿里云WAF背后神秘的AI智能防御体系

    背景 应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入.跨站等攻击仍然占据着较前的位置.WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在,也正是这些针对W ...

  3. TensorFlow利用A3C算法训练智能体玩CartPole游戏

    本教程讲解如何使用深度强化学习训练一个可以在 CartPole 游戏中获胜的模型.研究人员使用 tf.keras.OpenAI 训练了一个使用「异步优势动作评价」(Asynchronous Advan ...

  4. DRL 教程 | 如何保持运动小车上的旗杆屹立不倒?TensorFlow利用A3C算法训练智能体玩CartPole游戏

    本教程讲解如何使用深度强化学习训练一个可以在 CartPole 游戏中获胜的模型.研究人员使用 tf.keras.OpenAI 训练了一个使用「异步优势动作评价」(Asynchronous Advan ...

  5. 多智能体系统(MAS)简介

    1.背景   自然界中大量个体聚集时往往能够形成协调.有序,甚至令人感到震撼的运动场景,比如天空中集体翱翔的庞大的鸟群.海洋中成群游动的鱼群,陆地上合作捕猎的狼群.这些群体现象所表现出的分布.协调.自 ...

  6. 【SerpentAI:Python开源游戏智能体开发框架——相比OpenAI Universe可导入自己的游戏、可脱离Docker/VNC运行】

    https://weibo.com/fly51fly?from=myfollow_all&is_all=1#1514439335614 [SerpentAI:Python开源游戏智能体开发框架 ...

  7. AI智能外呼机器人网络拓扑结构笔记

    最近开发了一套AI智能外呼机器人系统,系统主要有3部分组成:web管理平台:呼叫机器人:SIP软交换.具体网络拓扑结构如下图: 三部分主要功能如下: 1.web管理平台:话术管理.任务管理.线路管理. ...

  8. STM32W108无线传感器网络节点自组织与移动智能体导航技术

    使用STM32W108无线开发板及节点完毕大规模网络的自组建,网络模型选择树型,网络组建完毕之后,使用基于接收信号强度指示RSSI(ReceivedSignal Strength Indication ...

  9. 用电销机器人让电销企业迈入AI智能时代

    2019年是AI智能快速发展的一年,有非常多的企业已经用AI智能代替原有的传统员工做重复性高的工作,就拿销售行业来说,为了让电销员工提升工作效率,拥有更多的成单,大部分有电销岗位的公司都会把重复率较高 ...

  10. 基于ROBO-MAS多智能体自主协同 高频投影定位系统

随机推荐

  1. C# 搭建一个 基于ISqlSugarClient 三层架构框架 涉及数据库仓储 然后中间又有业务逻辑层 案例

    要在C#中搭建基于ISqlSugarClient的三层架构框架,你需要定义数据访问层(DAL).业务逻辑层(BLL)和表现层(UI).下面是一个完整的例子,涉及数据库仓储.业务逻辑层,以及依赖注入.这 ...

  2. Manus爆火,是硬核还是营销?

    相信这两天小伙伴们应该被Manus刷屏了,铺天盖地的体验解读文章接踵而来,比如「数字生命卡兹克」凌晨爆肝的热文:「一手体验首款通用Agent产品Manus」.从公众号.朋友圈.抖音.央媒,都能看到Ma ...

  3. MSBuild属性

    MSBuild 属性 MSBuild属性是键值对的集合,提前声明好这些属性之后,整个项目的生成都可以引用这些属性. 属性名不区分大小写. 属性都是写在 PropertyGroup 标签中. 1.声明属 ...

  4. 一次客户演讲PPT 反思

    一 演讲ppt正常 制作流程: 编写演讲纲 与客户确认 确认通过后编写演讲稿 制作PPT 二 过程反思点 写纲前 与客户对接,了解需求及想法,最好音频记录 任务紧张程度.重要性想办法理清楚(领导跟踪情 ...

  5. 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!

    前言 今天大姚给大家分享 3 个 .NET 开源.免费的文件压缩处理库,希望可以快速帮助同学们实现文件压缩和解压功能! SharpCompress SharpCompress 是一个基于 C# 编写的 ...

  6. Creo 4.0二次开发工具框架搭建

    一.新建MFC DLL工程  二.配置项目属性 附加依赖项中输入:netapi32.lib;psapi.lib;mpr.lib;wsock32.lib;protk_dll_NU.lib;protk_d ...

  7. PVE常用命令

    1.查看集群下的节点信息 root@pve63-node172:~# pvecm nodes Membership information ---------------------- Nodeid ...

  8. Ubuntu截屏工具推荐

    Ubuntu截屏工具推荐 本篇博文推荐Ubuntu下的截屏工具Flameshot,可以作为Windows下Snipaste截图工具的平替. GitHub地址:https://github.com/fl ...

  9. 【Ubuntu】在Ubuntu上安装微信

    [Ubuntu]在Ubuntu上安装微信 零.说明 微信官网最近发布了Linux的测试版本,实际使用下来与Windows版本相差不多,本文介绍如何在Ubuntu(Debian系)上安装Linux版本的 ...

  10. 本地学习环境minikube安装

    有感于K8S太强大和自己的太无知,索性来系统学习下K8S.网上一番攻略,起码先得有个本地学习环境,所以安装一个minikube,下面记录安装过程,供有需要的人使用. 看看minikube架构: 我是在 ...