Agent 智能体开发框架选型对比
haoteby 2025-05-11 15:35 63 浏览
在人工智能领域,智能体(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
本文,完。觉得本篇文章不错的,记得随手点个赞、收藏和转发三连,感谢感谢~如果想第一时间收到推送,请记得关注我们~
相关推荐
- 如何为MySQL服务器和客户机启用SSL?
-
用户想要与MySQL服务器建立一条安全连接时,常常依赖VPN隧道或SSH隧道。不过,获得MySQL连接的另一个办法是,启用MySQL服务器上的SSL封装器(SSLwrapper)。这每一种方法各有其...
- k8s 证书问题排查_k8s dashboard 证书
-
从去年开始一些老项目上陆陆续续出现一些列的证书问题,(证书原理这里就不说了,官方文档一堆)多数刚开始的表现就是节点的kubelet服务起不来,节点状态NotReady表现日志如下failed...
- 企业级网络互通方案:云端OpenVPN+爱快路由器+Win11互联实战
-
企业级网络互通方案:OpenVPN搭建公有云+爱快路由器+Win11三地互联实战指南「安全高效」三地局域网秒变局域网实施环境说明...
- OpenV** Server/Client配置文件详解
-
Server配置详解...
- 接口基础认知:关键信息与合规前提
-
1.核心技术参数(必记)...
- S交换机通过SSH登录设备配置示例(RADIUS认证+本地认证独立)
-
说明:●本示例只介绍设备的认证相关配置,请同时确保已在RADIUS服务器上做了相关配置,如设备地址、共享密钥、创建用户等配置。●通过不同的管理域来实现RADIUS认证与本地认证两种方式同时使用,两...
- SSL证书如何去除私钥密码保护_ssl证书怎么取消
-
有时候我们在生成证书的时候可以加入了密码保护。然后申请到证书安装到了web服务器。但是这样可能会带来麻烦。每次重启apache或者nginx的时候,都需要输入密码。那么SSL证书如何去除私钥密码保护。...
- SSL证书基础知识与自签名证书生成指南
-
一、证书文件类型解析...
- S交换机通过SSH登录设备配置示例(RADIUS认证)
-
说明:本示例只介绍设备的认证相关配置,请同时确保已在RADIUS服务器上做了相关配置,如设备地址、共享密钥、创建用户等配置。假设已在RADIUS服务器上创建了用户名yc123,密码test#123。对...
- HTTPS是什么?加密原理和证书。SSL/TLS握手过程
-
秘钥的产生过程非对称加密...
- HTTPS TLS握手流程_进行tls握手
-
1.客户端向服务器发送`ClientHello`消息,包括支持的TLS版本、加密套件、随机数等信息。2.服务器收到`ClientHello`消息后,解析其中的信息,并根据配置选择一个加密套件。3....
- Spring Boot 单点登录(SSO)实现_spring boot 单点登录jwt
-
SpringBoot单点登录(SSO)实现全指南单点登录(SingleSign-On,SSO)是一种身份验证机制,允许用户使用一组凭证登录多个相关但独立的系统。在微服务架构和企业级系统中,SS...
- 源码分享:在pdf上加盖电子签章_pdf如何加盖电子公章
-
在pdf上加盖电子签章,并不是只是加个印章图片,。而是要使用一对密钥中的私钥对文件进行签字。为啥要用私钥呢?很简单,因为公钥是公开的,其他人才可以用公钥为你证明,这个文件是你签的。这就是我们常说的:私...
- 微信支付商户API证书到期 怎么更换
-
微信支付商户API证书到期更换是一个非常重要的操作,需要仔细按照流程进行。如果证书过期,所有通过API的支付、退款等操作都会失败,将直接影响您的业务。请按照以下详细步骤进行操作:重要前提:分清...