目录
一、前言
二、多智能体系统(MAS)发展回顾
三、LightAgent 的设计理念
四、LightAgent 的基本概念
1. 智能体
2. 记忆
3. 工具和工具生成器
4. 多智能体协作
五、LightAgent 的相关框架
六、LightAgent 实操指南
一、前言
随着大型语言模型(LLM)的快速发展,多智能体系统(MAS)在软件工程、社会模拟、智能助手等领域取得显著进展。多智能体系统通过多个专业智能体的协同交互实现协作问题解决,堪称人工智能领域的范式转变。
然而,当前通用、稳健且高效的智能体部署平台仍面临诸多挑战 —— 如智能体专业化管理、动态工作流程标准化、LLM 错误容错等,且现有框架难以平衡灵活性与简易性,阻碍快速部署与可扩展性。
LightAgent 作为轻量级却功能强大的智能体框架,通过集成内存(mem0)、工具、思维树(ToT)等核心功能,解决了上述痛点:不仅保持极简结构(核心代码仅 1000 行),还支持多模态数据处理与主流 LLM 兼容,且完全开源、可与主流聊天平台无缝集成,助力开发者快速构建自学习智能体。
图片由 AI 生成
二、多智能体系统(MAS)发展回顾
多智能体系统的演进源于分布式人工智能与复杂系统建模领域的进步,按时间维度可分为三个关键阶段:
LightAgent聚焦 “LLM 能力 + 传统 MAS 原理” 的混合架构,已在群体智能、自适应制造系统等实际场景中落地。
三、LightAgent 的设计理念
LightAgent 以 “轻量级、高适应性、高效率” 为核心设计原则,与依赖 LangChain、LlamaIndex 的传统框架形成显著差异,具体优势如下
1. 全 Python 实现,兼容性广
完全基于 Python 开发,无需依赖任何复杂外部库,兼容主流 LLM:
OpenAI
智普 ChatGLM
DeepSeek
Qwen 系列
同时支持 OpenAI 流式格式 API 输出,可无缝集成主流聊天框架(如企业内部聊天系统等)。
2. 极简架构,资源消耗低
核心代码库仅 1000 行,无复杂第三方库依赖;
适用于嵌入式设备、低功耗服务器等资源敏感场景;
运行时保持低延迟(毫秒级响应)与高处理效率,支持实时数据处理(如实时客服对话)与交互式应用。
3. 零繁琐配置,易于部署
无需复杂配置流程,依赖项极少:
可部署于 Windows、Linux、macOS 等任意操作系统,支持云服务器、边缘设备等多种环境;
依赖项极少,配置流程简化,仅需几分钟即可完成环境搭建与启动。
四、LightAgent 的基本概念
1. 智能体
定义:在人工智能领域,智能体指的是由机器学习模型驱动、具备特定任务能力的实体,可感知环境、自主行动以达成目标,并通过学习 / 知识获取提升性能;
特性:独立运行的同时,可根据任务需求与其他智能体交互,通过分工互补解决复杂问题(如 “数据分析智能体 + 报告生成智能体” 协同完成业务分析)。
2. 记忆
核心作用:
上下文支撑:记录用户历史交互数据,确保多轮对话中上下文连贯(如记住用户 “偏好 Excel 格式输出” 的需求);
自我优化:存储智能体过往错误案例与改进策略,避免重复犯错(如记录 “某 API 调用参数错误” 并自动更新调用逻辑);
任务追踪:在复杂任务中记录各阶段执行过程(含用户反馈、操作日志),便于后续经验复用。
功能细节:
支持外部存储模块(mem0),自动保留上下文与历史记录(无需人工干预);
长期记忆随每次交互动态更新,智能体自动管理内容,确保有效性与一致性;
定制化用户记忆:提升对话个性化体验,减少人工干预记忆管理的需求。
3. 工具和工具生成器
工具定义:预定义或动态生成的实用程序,帮助智能体突破自身模型局限(如通过 “Excel 导出工具” 实现数据可视化,通过 “天气 API 工具” 获取实时天气数据);
框架支持:
支持手动导入现有工具(如 Python 函数、API 接口);
支持自动化工具生成:导入 API 文档后,可自动生成对应的领域专用工具(如导入电商平台 API 文档,自动生成 “订单查询”“库存更新” 等工具);
面向对象设计:提升架构模块化程度,便于开发者维护与扩展工具库。
4. 多智能体协作
系统特性:通过 “信息共享 任务分解 协同执行” 形成的有机系统。与简单的智能体聚合不同,多智能体系统中的各个智能体之间频繁地交换和共享信息。每个智能体既可以独立完成任务,也可以在必要时进行协作。通过任务分解和协同工作,多智能体系统能够解决更复杂的问题,并通过有效的分工,获得互补优势,从而更高效地解决问题;
协作机制:基于 LightSwarm 子系统,按任务意图自动分配角色(如 “需求分析智能体”“代码生成智能体”“测试智能体” 协同开发软件);
协作优势:
复杂任务拆解为子任务,多智能体并行处理,提升效率与准确性;
智能体间共享经验、讨论新问题,避免单智能体局限性与重复错误;
基于 LightSwarm 子系统,实现意图驱动的协作,灵活性超越传统群体智能方法。
五、LightAgent 的相关框架
LightAgent 通过 “集群创建 - 信息同步 - 任务解析 - 执行迭代” 的闭环流程,实现多智能体协同任务处理,具体步骤如下:
1. 创建 LightSwarm 集群:根据当前任务需求,自动注册多个 LightAgent,形成协作集群;
2. 信息同步至内存:将任务相关信息(如初始需求、上下文数据)同步至内存模块,确保所有智能体可调用历史 / 上下文;
3. 任务意图解析与思维树(ToT)构建:解析任务核心需求,生成用于问题解决的思维树,判断是否需要多智能体协作;
4. 答案生成与工具调用:基于思维树执行任务,灵活调用相关工具生成初步输出;
5. 多轮对话迭代(对于需要多轮对话的更复杂任务场景):存储历史对话信息,迭代优化任务执行过程,直至生成最终输出。
六、LightAgent 实操指南
1. 快速开始
通过 pip 命令快速安装 LightAgent 及可选组件
# 安装最新版本的LightAgent pip install lightagent # (可选安装)若需使用mem0内存模块,通过pip安装mem0包 pip install mem0ai2. Hello world 示例代码
from LightAgent import LightAgent # 初始化 Agent agent = LightAgent(model="qwen3-max", api_key="your_api_key", base_url="your_base_url") # 运行 Agent response = agent.run("你好,你是谁?") print(response)3. 通过system提示词设定模型自我认知示例代
from LightAgent import LightAgent # 初始化 Agent agent = LightAgent( role="请记住你是LightAgent,一个可以帮助用户完成多工具使用的有用助手。", model="qwen3-max", api_key="your_api_key", base_url="your_base_url", ) # 运行 Agent response = agent.run("请问你是谁?") print(response)4. 使用工具示例代码
from LightAgent import LightAgent # 定义工具 def get_weather(city_name: str) -> str: """ Get the current weather for `city_name` """ returnf"查询结果: {city_name} 天气晴" # 在函数内部定义工具信息 get_weather.tool_info = { "tool_name": "get_weather", "tool_description": "获取指定城市的当前天气信息", "tool_params": [ {"name": "city_name", "description": "要查询的城市名称", "type": "string", "required": True}, ] } tools = [get_weather] # 初始化 Agent agent = LightAgent(model="qwen3-max", api_key="your_api_key", base_url="your_base_url", tools=tools) # 运行 Agent response = agent.run("请帮我查询一下上海的天气情况") print(response)5. 使用自动记忆模块示例代码
LightAgent 支持外部扩展自定义记忆模块或使用 mem0 作为记忆扩展,查看什么是mem0(https://github.com/mem0ai/mem0/),全自动进行上下文记忆和历史记录管理,无需开发人员手动触发添加记忆和记忆查找。通过记忆模块,Agent 可以在多轮对话中保持上下文一致性。
# 启用记忆模块 from mem0 import Memory from LightAgent import LightAgent from loguru import logger class CustomMemory: def __init__(self): self.memories = [] config = { "vector_store": { "provider": "milvus", "config": { "collection_name": "test", "embedding_model_dims": 1024, "url": "http://10.3.70.128:19530", "db_name": "light_agent", "token": "root:Milvus" } }, "embedder": { "provider": "ollama", "config": { "model": "bge-large:335m" } }, "llm": { "provider": "ollama", "config": { "model": "qwen2.5:7b", "temperature": 0.1, "max_tokens": 2000, } } } self.m = Memory.from_config(config_dict=config) def store(self, data: str, user_id): """存储记忆 开发者可以自行修改存储方法的内部实现,当前示例为mem0的添加记忆方法""" result = self.m.add(data, user_id=user_id) return result def retrieve(self, query: str, user_id): """检索相关记忆 开发者可以自行修改检索方法的内部实现,当前示例为mem0的查找记忆方法""" result = self.m.search(query, user_id=user_id) return result agent = LightAgent( role="请记住你是LightAgent,一个可以帮助用户完成多工具使用的有用助手。", model="qwen3-max", api_key="your_api_key", base_url="your_base_url", memory=CustomMemory(), # 启用记忆功能 tree_of_thought=False, # 启用思维链 ) # 带记忆的测试 & 如果需要添加工具可以自行添加tools到agent来实现带记忆的工具调用 user_id = "user_01" logger.info("\n=========== next conversation ===========") query = "介绍下三亚的有什么好玩的景点,身边很多朋友都去三亚旅游了,我也想去玩" print(agent.run(query, stream=False, user_id=user_id)) logger.info("\n=========== next conversation ===========") query = "我想去哪里旅游呢?" print(agent.run(query, stream=False, user_id=user_id))6. 使用工具生成模块示例代码
Tools工具生成器是一个用于自动化生成工具代码的模块。它可以根据用户提供的文本描述,自动生成相应的工具代码,并将其保存到指定的目录中。该功能特别适用于需要快速生成API调用工具、数据处理工具等场景。
import os from LightAgent import LightAgent # 初始化LightAgent agent = LightAgent( name="Agent A", # 代理名称 instructions="You are a helpful agent.", role="请记住你是工具生成器,你的任务是根据用户提供的文本描述,自动生成相应的工具代码,并将其保存到指定的目录中。请确保生成的代码准确、可用,并符合用户的需求。", # 工具生成器的角色描述 model="deepseek-chat", api_key="your_api_key", base_url="your_base_url", ) # 示例文本描述 text = """ 新浪股票接口提供了获取股票市场数据的功能,包括股票行情、实时交易数据、K线图数据等。 新浪股票接口功能介绍 1、获取股票行情数据: 实时行情数据:使用实时行情API可以获取股票的最新报价、成交量、涨跌幅等信息。 分钟线行情数据:使用分钟线行情API可以获取股票的逐分钟交易数据,包括开盘价、收盘价、最高价、最低价等。 2、获取股票历史K线图数据: K线图数据:通过K线图API,可以获取股票的历史交易数据,包括开盘价、收盘价、最高价、最低价、成交量等。可以根据需要选择不同的时间周期和均线周期。 复权数据:可以选择获取复权后的K线图数据,包括前复权和后复权,以便更准确地分析股票的价格变动。 新浪股票接口获取数据示例 1、获取股票行情数据: API地址:http://hq.sinajs.cn/list=[股票代码] 示例:要获取股票代码为"sh600519"(贵州茅台)的实时行情数据,可以使用以下API地址:http://hq.sinajs.cn/list=sh600519 通过发送HTTP GET请求到上述API地址,你将收到一个包含该股票实时行情数据的响应。 2、获取股票历史K线图数据: API地址:http://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData?symbol=[股票代码]&scale=[时间周期]&ma=[均线周期]&datalen=[数据长度] 示例:要获取股票代码为"sh600519"(贵州茅台)的日线K线图数据,可以使用以下API地址:http://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData?symbol=sh600519&scale=240&ma=no&datalen=1023 通过发送HTTP GET请求到上述API地址,你将收到一个包含该股票历史K线图数据的响应。 """ # 构建tools目录的路径 project_root = os.path.dirname(os.path.abspath(__file__)) tools_directory = os.path.join(project_root, "tools") # 如果tools目录不存在,则创建它 ifnot os.path.exists(tools_directory): os.makedirs(tools_directory) print(f"Tools目录已创建: {tools_directory}") # 使用agent生成工具代码 agent.create_tool(text, tools_directory=tools_directory)7. 多智能体协同示例代码
支持类 Swarm 的多智能体协同工作,提升任务处理效率。多个 Agent 可以协同完成复杂任务。
from LightAgent import LightAgent, LightSwarm # 创建 LightSwarm 实例 light_swarm = LightSwarm() # 创建多个 Agent agent_a = LightAgent( name="Agent A", debug=True, log_level="DEBUG", log_file="example.log", model="deepseek-chat", api_key="your_api_key", base_url="your_base_url", instructions="我是代理A,是前台接待员", role="前台接待员,负责接待来访者并提供基本信息指引。每次回答前请前说明自己的身份信息,你只能帮助用户引导至其他角色,不可以直接回答顾客的业务问题。如果当前不发解决用户的问题,请回复:对不起当前我无法提供帮助!", ) agent_b = LightAgent( name="Agent B", debug=True, log_level="DEBUG", log_file="example.log", model="deepseek-chat", api_key="your_api_key", base_url="your_base_url", instructions="我代理B,负责会议室的预定", role="会议室预定管理员,负责处理1号、2号、3号会议室的预定、取消和查询。每次回答前请前说明自己的身份信息,并非常客气的回复用户的提问。", ) agent_c = LightAgent( name="Agent C", debug=True, log_level="DEBUG", log_file="example.log", model="deepseek-chat", api_key="your_api_key", base_url="your_base_url", instructions="我是代理C,是技术支持专员,负责处理技术问题。每次回答前请说明自己的身份信息,并尽可能详细地解答用户的技术问题。如果问题超出我的能力范围,请引导用户联系更高级的技术支持。", role="技术支持专员,负责处理硬件、软件、网络等技术问题的咨询和解决。", ) agent_d = LightAgent( name="Agent D", debug=True, log_level="DEBUG", log_file="example.log", model="deepseek-chat", api_key="your_api_key", base_url="your_base_url", instructions="我是代理D,是人力资源专员,负责处理人力资源相关的问题。每次回答前请说明自己的身份信息,并尽可能详细地解答用户的问题。如果问题需要进一步处理,请引导用户联系人力资源部门。", role="人力资源专员,负责处理员工入职、离职、请假、福利等事务的咨询和处理。", ) # 自动注册代理到 LightSwarm 实例 light_swarm.register_agent(agent_a, agent_b, agent_c, agent_d) # 运行代理 A res = light_swarm.run(agent=agent_a, query="你好,我是Alice,我需要查询王小明是否已经办理入职", stream=False) print(res)8. Agent 自我学习
Agent 具备独特的场景记忆能力,能够精准留存与用户交互过程中的关键信息。同时,它拥有强大的从用户对话中汲取知识并进行自我学习的能力,在每次对话交流中不断优化自身对各种场景的理解和应对策略,从而实现智能水平的持续提升,更好地满足用户多样化的需求 。通过这种自我学习机制,Agent 能够不断适应复杂多变的任务场景,为用户提供更优质、高效且个性化的服务。
from LightAgent import LightAgent agent = LightAgent( name="Agent A", instructions="You are a helpful agent.", role="Please remember that you are LightAgent, a useful assistant to help users use multiple tools.", # system role description model="qwen3-max", api_key="your_api_key", base_url="http://your_base_url/v1", memory=CustomMemory(), self_learning=True, # 启用agent自我学习 debug=True, log_level="DEBUG", log_file="example.log" ) user_id = "test_user_1" query = "我现在有一个采购货款需要转账,我的审批流程是怎么样的?" agent.run(query, stream=False, user_id=user_id) query = "请记住:本公司新规定,2025年1月起,公司所有采购货款的转账需要先找负责采购的丁总签字,再交给财务经历审批,财务经历审批后,还需要公司总经理审批,出纳才能打款转过去。" agent.run(query, stream=False, user_id=user_id) user_id = "test_user_2" query = "你好,我有一笔采购款要转给对方,我要怎么申请转账?" agent.run(query, stream=False, user_id=user_id)9. 使用mcp的示例代码
import asyncio import json from LightAgent import LightAgent # Initialize Agent agent = LightAgent(model="qwen3-max", api_key="your_api_key", base_url="http://your_base_url/v1", debug=True, log_level="debug", log_file="example.log") def read_mcp_settings(): with open("./mcp/lightagent_mcp_settings.json", "r") as f: mcp_settings_json = json.load(f) return mcp_settings_json # 接入MCP 服务 mcp_settings = read_mcp_settings() asyncio.run(agent.setup_mcp(mcp_setting=mcp_settings)) # Run Agent response = agent.run("Please search the weather in Shanghai.", stream=False) print(response)