Agent 智能体开发框架选型对比
haoteby 2025-05-11 15:35 45 浏览
在人工智能领域,智能体(Agents)正处于蓬勃发展的阶段,众多新框架不断涌现。现代 AI 智能体逐渐克服了初期的不稳定,迅速取代传统技术成为开发首选。然而,开发人员在构建智能体时,面临着诸多决策,不仅要确定使用的模型、应用场景和技术架构,还要精心挑选合适的开发框架。是选择较为早期的 LangGraph,还是新兴的 LlamaIndex Workflows?亦或是走传统路线,自行编写全部代码?本文将通过对多种主流框架的实践对比,为您提供一份全面的选型指南,帮助您做出更明智的决策。
一、智能体框架
本次测试所采用的智能体具备多项功能,包括执行函数调用(function calling)、运用多种工具或技能、与外部资源建立连接,以及实现状态或记忆的共享。其核心能力涵盖基于知识库进行问题解答、针对 LLM 应用程序的数据进行问题解答以及对获取的数据进行更高层次的趋势和模式分析。为实现这些目标,智能体需要掌握结合产品文档的 RAG、在相关数据库上生成 SQL 语句以及数据分析等三项基本技能。智能体的用户界面借助 gradio 搭建,整体以聊天机器人的形式构建。
(一)Code - Based Agent(不使用智能体框架)
- 纯代码架构
基于纯代码构建的智能体,核心是由 OpenAI 提供支持的技能路由器,通过函数调用来确定使用的技能。技能执行完毕后,控制权返回技能路由器,以便调用其他技能或直接回应用户。智能体会持续记录用户消息和自身响应,并在每次调用时传递完整列表给技能路由器,以保留上下文。各项技能定义在独立类中,存储于 SkillMap,技能路由器仅与 SkillMap 交互,添加新技能只需编写新类并加入 SkillMap,方便实现新技能的扩展。
- 使用纯代码智能体面临的挑战
技能路由器的系统提示词设计困难,容易出现模型不按预期执行任务的情况,需要多次调试。同时,处理不同步骤产生的多种输出格式复杂,因未使用结构化输出,需为技能路由器和各项技能中模型调用准备多种应对策略。
- 纯代码智能体的优点
这种方法提供了扎实基础和学习途径,能让人在不依赖框架教程的情况下理解智能体运作原理。虽然引导模型行为有难度,但代码结构简洁,在某些场景下是合理选择。
(二)LangGraph
- LangGraph 架构
LangGraph 智能体与基于代码的智能体表面相似,但底层代码差异大。它使用 “路由器” 概念,通过代码函数调用 OpenAI 并依据响应推进步骤,程序在不同技能间的切换控制机制不同。其定义的图包含初始化 OpenAI 调用的 “agent” 节点和工具处理步骤的 “tools” 节点,内置 ToolNode 对象能根据 ChatMessage 响应触发工具,操作完成后返回 “agent” 节点。“state” 负责保存与 OpenAI 的交互消息和响应列表。
- 使用 LangGraph 面临的挑战
使用 LangGraph 构建智能体时,必须借助 Langchain 对象确保流程顺畅。主要挑战包括函数调用的 validation 错误,因 ToolNode 对函数参数配置要求,导致技能代码需大规模重构;调试困难,错误信息混乱不清,框架抽象概念使追踪和查看变量复杂,如消息在 state [“messages”] 中的自动提取过程影响对消息内容的把握。
- LangGraph 的优点
LangGraph 最大优势是易用性,图结构代码简洁易懂,对复杂节点逻辑场景能提供清晰图视图,便于把握智能体连接方式,还可直接转换以 LangChain 构建的现有应用程序。
- 经验之谈
仅使用 LangGraph 框架相关功能时运行流畅,但尝试跳出框架则可能面临复杂调试。
(三)LlamaIndex Workflows
- Workflows 架构
Workflows 旨在简化可循环智能体构建,强调异步执行能力,采用事件作为连接逻辑方式,智能体逻辑封装在 “步骤” 中,事件负责在不同步骤间传递信息。其架构配置状态信息并绑定技能到 LLM 对象,还定义了 “prepare_agent” 步骤,将用户输入转换为 ChatMessage 并存储到工作流记忆存储,避免重复添加用户信息。路由代码和工具调用处理代码实现方式更接近纯代码智能体,维护条件路由逻辑,且技能无需修改即可应用于 Workflows,简化了开发工作。
- 使用 Workflows 面临的挑战
调试同步执行困难,虽异步执行对在线智能体更优,但将其改为同步执行需重新定义 Workflow 类内部方法。此外,也出现了类似 LangGraph 的 Pydantic Validation Errors 问题,不过相对容易解决,需更规范地创建 LlamaIndex FunctionTool 对象。
- Workflows 的优点
与 LangGraph 相比,使用 Workflows 构建智能体更轻松,因其未提供内置功能,开发者需自行编写路由逻辑和工具操作代码,与纯代码智能体相似。基于事件的架构有助于管理复杂、异步触发且多事件的系统步骤,具有轻量级特性,结构限制少,基于事件的架构为函数调用提供有效替代方案,适用于复杂异步应用场景。
使用两个自定义事件在智能体中的各个步骤之间移动
二、框架比较与分析
- 无框架方法
实施最为简单直接,开发者自行定义抽象层(如 SkillMap 对象),管理不同类型和对象相对容易。但代码可读性和易用性依赖开发者个人,缺乏智能体结构约束,随着智能体复杂性增加可能难以维护。
- LangGraph
提供完整的智能体结构规范,智能体定义清晰,适合团队协作开发,对智能体结构新手有帮助。然而,框架限制较多,若不完全认同其理念,可能面临较多调试挑战,代码简洁但调试成本可能较高。
- LlamaIndex Workflows
采用事件驱动架构,在框架约束和开发自由度之间取得平衡,对框架依赖较少。其固有的异步特性在某些项目中极具价值,且基于事件的架构有助于管理复杂系统步骤。但异步特性可能增加某些场景的复杂度,如调试难度。
三、框架选择关键问题
- 项目集成情况
若项目已深度集成 LlamaIndex 或 LangChain,优先考虑与之紧密集成的框架,如 LangGraph 或 LlamaIndex Workflows,其额外优势可能使其成为合适选择。
- 对智能体架构的熟悉程度
若开发者对智能体常见架构不熟悉,希望有框架指导构建结构,LangGraph 是较好选择;若希望在一定框架基础上有更多自由度,Workflows 可能更适合。
- 参考样例情况
框架通常有大量教程和实例供参考,而纯代码构建智能体的参考实例相对较少。若构建智能体需要参考样例,框架会提供更多便利。
四、小结
选择智能体框架只是影响生成式人工智能系统在生产环境中表现的众多决策之一。在构建智能体时,除了框架选型,建立强大的安全保障和对大语言模型(LLM)的监控同样必要。同时,面对新智能体框架、研究成果和模型对传统技术的不断颠覆,开发者需保持灵活应对的态度,持续学习和适应新变化,以构建出高效、智能且可靠的智能体应用。
文中代码:
https://github.com/Arize-ai/phoenix/tree/main/examples/agent_framework_comparison
原文链接:
https://towardsdatascience.com/choosing-between-llm-agent-frameworks-69019493b259
参考链接:
https://mp.weixin.qq.com/s/0jB157hXY2AwIcji0jywBQ
本文,完。觉得本篇文章不错的,记得随手点个赞、收藏和转发三连,感谢感谢~如果想第一时间收到推送,请记得关注我们~
相关推荐
- 在线抓取网页源码(爬虫获取网页源代码)
-
经验分享:如何解决爬虫抓取时的网页源码不全问题爬虫是一种常用的数据采集工具,可以帮助我们快速获取互联网上的各种信息。然而,很多人在使用爬虫时都会遇到一个普遍的问题,那就是爬虫抓取的网页源码总是不完整。...
- 40个图源二维码分享及使用方法(图片二维码生成器在线制作二维码)
-
我们曾在《35个图源二维码分享及使用方法》一文中,为你分享了35个图源二维码。...
- 45个图源二维码分享及使用方法(图源是啥)
-
我们曾在《40个图源二维码分享及使用方法》一文中,为你分享了40个图源二维码。...
- 电子书管理软件Calibre 8.0.1发布:改善支持Kobo,优化新闻源等
-
IT之家3月22日消息,Calibre是一款免费、开源的电子书管理工具,支持整理、转换和阅读多种格式的电子书。最新发布的8.0.1版本带来了多项功能改进和问题修复,进一步提升了用户体验。...
- 软网推荐:一键生成不同网站RSS订阅源
-
为了关注自己喜欢的网站内容,以前最常见的方法是订阅RSS源,这样在内容更新的时候就会自动进行推送。但由于RSS现在已经不是主流的阅读方式,所以并不是所有的网站都提供RSS订阅,这时我们就得另辟蹊径了。...
- 消费曝光台|29.9元充100元话费?到手是15张满减优惠券
-
近日,山西大同的王先生向澎湃质量报告投诉平台反映,他在使用手机时收到一条弹窗广告,称他获得了“29.9元充值100元话费券”。王先生充值并下载了APP潮物圈后才发现,100元的话费实际上是15张5元和...
- 玩Kodi的IPTV插件必备技能——直播源地址抓包教程
-
准备工具:谷歌浏览器(Google)或者其他浏览器(不常用的或再安装一个浏览器)Potplayerm3u8直播源文件或者Gitee个人工作台...
- i.MX6加载Ubuntu镜像的教程(ubuntu添加镜像源)
-
基于迅为IMX6开发板安装好虚拟机之后,用户就可以加载Ubuntu12.04.2镜像。用户可以在网盘中下载“编译好的镜像”,该镜像已经安装好了编译Android4.4.2所需要的大部分软件...
- 嵌入式软件开发人员有必要学习系统移植的知识吗?ppt见文末
-
《从零开始学ARM》的配套视频说明...
- ARM体系结构(10)-GPIO LED闪烁汇编代码实现(基于tiny4412)
-
接上一篇,我将介绍如何使用GPIO引脚GPM4_1来控制Tiny4412开发板上的LED2闪烁。本文将从原理、汇编代码、Makefile实现、程序编译和烧写等多个方面进行介绍,以便读者能够全面了解如何...
- 物联网学习路线图(物联网必学课程)
-
物联网技术近几年在我国获得了很好的发展,从目前的发展趋势来看,未来物联网发展前景一片大好。由此学习的人员也是越来越多,但是在学习物联网时很多人都容易忽略这样一件事——从未准备一份详尽的物联网学习路线图...
- 网卡DM9000裸机驱动开发详解(pro1000网卡驱动)
-
一、网卡1.概念网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。由于其拥有MAC地址,因此属于OSI模型的第2层。它使得用户可以通过电缆或无线相互连接。...
- Win10高分屏更改DPI后字体模糊?试试这个小工具
-
如果你使用的是大尺寸显示屏,拥有1920x1080或更大分辨率,可能你会选择设置一个较高的DPI缩放级别,比如125%或更高。这样屏幕上的内容看起来会更大一些,更容易阅读。在WindowsVista...
- 微软Windows竟内嵌Linux?这样玩挺有趣
-
在Windows上运行Linux?这其实不是新鲜事,20年前,就有黑客这么干过。微软的开发者博客刚刚公布,下一个Windows10版本,不仅自带Linux内核,而且还会通过Win...
- 上厕所别带手机!9 个错误动作增加你感染病毒的风险
-
随着复工的正式开始,很多小伙伴开始担心如何在上班过程中更好地保护自己。口罩准备好了,免洗洗手液准备好了,是不是就万无一失了?还真不是!你摸完电梯按钮的手,或者扶过地铁栏杆的手,不经意间揉一下眼睛、摸一...