Lagent 轻量级智能体框架
基于PyTorch设计哲学,用直观的层与消息传递方式构建LLM智能体。
- Star 数
- ★ 2.3k
- 最近更新
- 6 个月前
- License
- Apache-2.0
- 主语言
- Python
- FA 评分
- 43/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台OpenAI API
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 开发者需要快速构建一个能解决数学问题的智能体,通过编写 Python 代码并执行。
- 不适合
- 需要开箱即用图形界面或聊天机器人的用户
- 没有 GPU 或本地模型服务资源的团队
这个 Agent 能做什么,适合哪些场景?
Lagent 是一个轻量级框架,用于构建基于大语言模型(LLM)的智能体,灵感来自 PyTorch 的设计哲学。它提供了 Agent 类,通过 AgentMessage 进行通信,并采用类似神经网络层的概念来组织工作流。框架内置了多种 LLM 后端(如 VllmModel、GPTAPI、AsyncGPTAPI)和工具(如 IPythonInterpreter、WebBrowser),支持同步和异步接口。其核心特性包括内存管理(Memory)、自定义消息聚合(Aggregator)、灵活的输出格式化(ToolParser)以及工具调用(ActionExecutor)。通过简单的 pip 安装即可使用,并提供了多个示例,包括数学解题智能体、多智能体博客撰写和数据分析可视化等。Apache-2.0 许可。
Lagent 允许用户通过定义 Agent 实例并传递 AgentMessage 来构建智能体。它支持多种 LLM 提供商(如 VllmModel、GPTAPI),并提供工具集成(如 IPythonInterpreter、WebBrowser)。核心流程包括:Agent 接收消息,通过内存记录上下文,使用聚合器格式化消息,调用 LLM 获取响应,并可进一步通过 ActionExecutor 执行工具调用。它支持同步和异步接口(如 AsyncAgent),并允许自定义聚合器、输出解析器和钩子(Hooks)。
- 开发者需要快速构建一个能解决数学问题的智能体,通过编写 Python 代码并执行。
- 团队希望实现多智能体协作,例如一个作家和一个评论家相互协作改进博客文章。
- 研究人员需要从网络检索信息、收集数据并绘制图表,以实现数据可视化流程。
- 需要在一个项目中同时使用多种 LLM 提供商,并希望有统一的接口。
- 开发者希望利用异步接口进行大规模推理,以充分利用 CPU 和 GPU 资源。
如何安装或部署这个 Agent?
从源码安装:\n``bash\ngit clone https://github.com/InternLM/lagent.git\ncd lagent\npip install -e .\n``
如何使用这个 Agent?
安装后,您可以创建 LLM 实例(如 VllmModel)和 Agent 实例,并传入用户消息以获取响应。例如:\n``python\nfrom lagent.llms import VllmModel\nfrom lagent.agents import Agent\nfrom lagent.schema import AgentMessage\n\nllm = VllmModel(path='Qwen/Qwen2-7B-Instruct')\nagent = Agent(llm)\nuser_msg = AgentMessage(sender='user', content='今天天气情况')\nbot_msg = agent(user_msg)\nprint(bot_msg)\n``\n对于工具使用,可以定义 ActionExecutor 并注册钩子来执行代码。
这个 Agent 有哪些优点和局限?
- 设计理念类似于 PyTorch,易于理解和扩展。
- 支持多种 LLM 后端(如 Vllm、GPTAPI)和工具(如 IPython、WebBrowser)。
- 提供同步和异步接口,适应不同规模的推理需求。
- 灵活的聚合器和输出解析器允许自定义消息格式和工具调用。
- 需要用户具备一定的 Python 和 LLM 知识。
- 文档可能不够全面,需要依赖示例代码。
- 依赖外部 LLM API 或本地模型服务,需要相应的 API 密钥或硬件资源。
- 异步使用需要确保组件兼容,增加了配置复杂度。
这个 Agent 与同类方案有什么区别?
与 AutoGen 和 LangGraph 等框架类似,但 Lagent 更轻量,强调 PyTorch 式设计,提供更直观的层和消息传递机制。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Lagent 轻量级智能体框架 当前 | 43 · 缺口较多 | 代码库 / SDK免费 + 模型费 | ★ 2.3k | 6 个月前 | Python | OpenAI API |
| ConnectOnion AI Agent 框架 | 47 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 1.5k | 今天 | Python | OpenAI API · Claude API |
| Hello-Agents 智能体教程 | 54 · 缺口较多 | 网页应用免费 + 模型费 | ★ 84k | 5 天前 | Python | OpenAI API |
| AgentVerse | 28 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 5.2k | 2 年前 | JavaScript | OpenAI API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
证据显示框架提供钩子机制(如CodeProcessor)允许在动作执行前后修改消息,但未强制最小权限;默认动作如IPythonInteractive可执行任意代码,权限过大。用户确认机制缺失,工具调用自动执行。数据流透明度部分:AgentMessage结构清晰,但未说明数据如何被外部服务处理。敏感数据处理未提及。依赖安全未评估,requirements.txt仅列出文件,无版本锁定或漏洞扫描。外部影响:动作如WebBrowser可发起网络请求,但未提供沙箱或限制。回滚机制未提及。来源归属:README和引用提供了作者信息,但发布者未验证。
自一致性:README中的示例代码与API文档一致,但未验证实际运行。依赖可用性:依赖未固定版本,可能影响可复现性。失败消息:测试覆盖了API错误和超时,但未覆盖所有场景。
受众和场景:README提供了单智能体、多智能体示例,覆盖多种场景。能力边界:文档说明了工具调用和异步接口,但未明确限制。触发精度:工具调用格式明确,但未验证。环境适配:支持同步和异步,但未说明所有环境要求。
信息架构:README结构清晰,有目录和示例。安装说明:提供了源码安装命令。命名稳定性:API命名一致,但未提供版本历史。示例和FAQ:有丰富示例,但无FAQ。已知限制:未提及。许可证:Apache-2.0完整。版本变更日志:未提供。维护责任:有贡献者信息,但未明确维护政策。
输出可用性:示例输出清晰,但未验证。边际价值:提供了多智能体框架,有独特价值。成本效益:未提供性能或资源消耗数据。
声明可追溯性:README中的示例可追溯到代码,但未验证。跨来源佐证:未提供外部验证。事实与推断分离:文档中示例与推断混合,未明确区分。
- 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
- 源码中未见:敏感信息处理使用专用、低权限、可随时吊销的 API 密钥,不要复用生产凭据,也不要让密钥出现在日志里。
- 源码中未见:依赖安全审查安装前固定版本并做一次依赖扫描(如 npm audit、pip-audit);优先放在容器里运行。
- 源码中未见:回滚或恢复路径运行前先备份,或在 git 分支、快照上操作,确保改动可以撤销。
- 默认动作如IPythonInteractive可执行任意代码,存在安全风险,建议限制权限或增加用户确认。
- 依赖未固定版本,可能引入不兼容或漏洞,建议锁定版本并定期扫描。
- 未提供已知限制和版本变更日志,用户难以评估风险。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
What's Changed * Update runtime.txt add tenacity by @vansin in https://github.com/InternLM/lagent/pull/280 * Fixed the search API of AsyncDDGS by @braisedpork1964 in https://github.com/InternLM/lagent/pull/281 * [Model] support Claude by @Harold-lkk in https://github.com/InternLM/lagent/pull/283 * fix anthropic by @Harold-lkk in https://github.com/InternLM/lagent/pull/284 * support o1 and claude by @Harold-lkk in https://github.com/InternLM/lagent/pull/285 * Add do_sample in AsyncLMDeployPipeline (lmdeploy_wrapper.py) by @shinkungoo in https://github.com/InternLM/lagent/pull/290 …在 GitHub 查看 ↗ -
v0.5.0rc2 V0.5.0rc2
发布说明摘录
What's Changed * Update dependencies by @braisedpork1964 in https://github.com/InternLM/lagent/pull/268 * [Feat] Add Sequential and AsyncSequential agents by @braisedpork1964 in https://github.com/InternLM/lagent/pull/270 * [Fix] Alternative for aioify by @braisedpork1964 in https://github.com/InternLM/lagent/pull/274 * [Feat] Support resetting agent memory recursively or by keypath by @braisedpork1964 in https://github.com/InternLM/lagent/pull/271 * Fix: http agent server by @liujiangning30 in https://github.com/InternLM/lagent/pull/276 …在 GitHub 查看 ↗