![]()
一、简要介绍
LazyLLM v0.7.1 相较于 v0.6.1 实现了重大飞跃,在智能体能力、RAG 基础设施及模型部署灵活性方面均有显著增强。
本次发布通过支持新型存储供应商(Elasticsearch、OceanBase)扩展了生态系统,并整合了更多在线模型提供商(SiliconFlow、MiniMax)。全新引入的综合缓存系统有效提升了性能表现。智能体模块、文档处理器及启动系统均进行了重大重构,显著提升了代码可维护性与清晰度。
0.7.1版本在保持向后兼容性的同时,实现了更优的稳定性和用户体验。
二、亮点
本次发布引入多项重大增强,拓展了LazyLLM的功能并提升开发者体验:
-
重大变更:智能体模块重构 - lazyllm.tools.智能体模块经全面重构以提升可维护性与清晰度。
-
扩展存储支持 - 新增与Elasticsearch和OceanBase的集成,作为存储后端提供更多可扩展的RAG(检索增强生成)部署选项。
-
新增在线模型提供商 - 集成支持SiliconFlow和MiniMax,用户可通过统一的'OnlineChatModule / OnlineEmbeddingModule / OnlineMultiModalModule'模块直接访问更广泛的第三方模型。
-
统一缓存系统 - 引入全面缓存框架,通过减少系统冗余计算和API调用优化性能。
-
增强文档处理能力 - 对文档解析服务 lazyllm.tools.rag.parsing_service 进行重大改进,提升处理RAG管道中各类文件格式的可靠性与灵活性。
三、新功能
本次发布在存储服务选型、在线模型提供商、缓存、提示工程、GraphRAG部署、记忆框架(Memory)及文档处理等模块引入了大量新功能。
(一)存储集成
(二)新增在线模型选型
- 硅基流动(SiliconFlow):为 OnlineChatModule 、OnlineEmbeddingModule 和 OnlineMultiModalModule 新增数据源(source='siliconflow'),支持聊天、嵌入、重新排序、文本转图像及文本转语音功能。
import lazyllm
chat = lazyllm.OnlineChatModule(source='siliconflow', model='Qwen/QwQ-32B')
tts = lazyllm.OnlineMultiModalModule(source='siliconflow', function='tts')
- MiniMax 集成: 为聊天、文本转图像和语音合成新增源(source='minimax')。文本转图像功能支持 response_format='url' 或 'base64' 格式。
import lazyllm
chat = lazyllm.OnlineChatModule(source='minimax')
image_gen = lazyllm.OnlineMultiModalModule(source='minimax', function='text2image')
(三)缓存系统
- 统一模块缓存:支持内存、文件、SQLite 和 Redis 后端的综合模块缓存系统。通过环境变量 LAZYLLM_CACHE_STRATEGY 或 .use_cache() 方法进行配置。
import lazyllm
m = lazyllm.TrainableModule('internlm2-chat-7b').use_cache()
chat = lazyllm.OnlineChatModule().use_cache()
- 测试优化:通过基于提示词和文件内容的智能缓存键生成机制,增强CI/CD工作流的缓存性能,支持通过LAZYLLM_CACHE_MODE配置。
(四)提示工程
- 提示模板:引入 PromptTemplate 和 FewShotPromptTemplate 类,支持变量替换与验证的结构化提示生成,替代 LLMParser 中的硬编码字符串。
from lazyllm.prompt_templates import PromptTemplate
template = PromptTemplate.from_template('你好 {name},你今年 {age} 岁')
result = template.format(name='Alice', age=25)
(五)GraphRAG 部署
- GraphRAG 服务:新增 CLI 命令 lazyllm deploy graphrag 用于部署知识图谱构建与查询服务。引入 GraphDocument、GraphRetriever 和 GraphRagServerModule 类。
from lazyllm.tools import Document, GraphDocument
doc = Document(dataset_path='your_dataset')
graph_doc = GraphDocument(doc)
graph_doc.start_graph_index()
(六)记忆组件与全局变量
- 记忆组件:通过统一的Memory类集成MemU和Mem0实现持久化记忆。根据LAZYLLM_MEMU_API_KEY或LAZYLLM_MEM0_API_KEY自动选择提供商。
from lazyllm.tools.memory import Memory
m = Memory()
m.add('用户输入', output='代理响应', user_id='user_123')
- 增强的全局系统:新增通过 Redis 实现跨服务数据传输的 RedisGlobals(当设置 LAZYLLM_REDIS_URL 时自动启用),支持线程安全的 locals 用于流程数据隔离,并为 ServerModule 添加安全密钥验证。
(七)文档处理与字段提取
- 结构化数据提取器:新增SchemaExtractor用于基于Pydantic模型的结构化文档解析,并提供SqlCall.create_from_document()支持基于提取模式的SQL查询。
from lazyllm.tools.rag import SchemaExtractor
extractor = SchemaExtractor(db_config={"db_type": "sqlite"})
result = extractor(data="Apple reported $100 million profit.")
-
JSON提取工具:新增JsonExtractor用于从文本中提取结构化JSON,以及JsonConcentrator用于以reduce或distinct模式聚合多个JSON对象。
-
代码分割器:引入CodeSplitter及专用分割器(XMLSplitter、JSONSplitter、YAMLSplitter、HTMLSplitter、GeneralCodeSplitter),支持结构化/半结构化数据并具备自动格式检测功能。
-
PaddleOCR PDF解析器:新增PaddleOCRPDFReader用于PDF解析,支持OCR识别与版式分析,兼容官方API密钥及本地服务。
(八)智能体示例与部署优化
- 新增智能体示例:为博查搜索智能体、语音助手、SQL查询智能体、环境交互智能体及多智能体去中心化发言者选择功能新增文档与示例。
(网址链接🔗:https://docs.lazyllm.ai/zh-cn/v0.7.1/Cookbook/sales_assistant/)
-
Ray 部署:为 ServerModule 添加基于 Ray 的分布式部署方案,支持配置副本数量,通过 LAZYLLM_USE_RAY=ON 启用。
-
部署参数控制:新增skip_check参数及LAZYLLM_DEPLOY_SKIP_CHECK_KW环境变量,支持向vLLM等部署框架传递任意关键字参数。
-
模型源配置:在 TrainableModule 中新增 source 参数,用于显式指定模型来源(例如 'hf' 或 'modelscope')。
-
模型映射复用:在TrainableModule中新增use_model_map参数,用于控制从配置映射中复用预部署模型。
-
MinerU 命令行工具:新增 lazyllm deploy mineru 命令行指令,实现 MinerU PDF 解析服务的一键部署。
(网址链接🔗:https://docs.lazyllm.ai/zh-cn/v0.7.1/Cookbook/rag/#-4mineru)
(九)其他增强功能
-
自动模型类型识别:OnlineChatModule 现可通过全面映射机制,根据模块名称自动识别模型类别(如LLM、VLM等)。
-
模块版本属性:在lazyllm模块中新增__version__属性,支持程序化版本检测。
-
增强文档读取器:支持为默认文件读取器注册后处理转换规则,并使SimpleDirectoryReader可复用于不同文件输入。
-
EasyR1微调:引入EasyR1Finetune类实现强化学习微调,并新增DISABLE_RUN_ON_CHANGE环境变量控制测试执行。
-
SCC API-V2 支持:更新启动器系统以支持 SCC API-V2,提升分布式计算环境中的任务管理能力。
-
Milvus 默认参数:新增 Milvus 数据库的自动注入功能,可自动注入最优默认索引参数。
四、错误修复
修复了使用过程中出现的bug,涉及嵌入批处理、向量检索、Milvus查询、启动器配置、API密钥验证、VLM文件处理、模型映射及CI工作流等模块。具体可查阅Release Note获取详情。
(网址链接🔗:https://github.com/LazyAGI/LazyLLM/releases/tag/v0.7.1)
五、优化改进
本次发布包含多项性能优化、架构重构及用户体验改进,覆盖启动器、RAG、智能体、测试和日志系统。
(一)性能优化
-
导入时间加速:通过延迟加载大型依赖项(deepdiff、fastapi)及推迟第三方导入,显著缩短lazyllm和lazyllm.TrainableModule的导入时间,提升启动性能。
-
RAG批量嵌入处理:针对在线模型优化批量嵌入处理,当嵌入函数支持时通过节点分组批量处理减少API调用,提升吞吐量。
-
BM25缓存机制:新增LRU缓存,避免对相同文档集重复初始化BM25相似度实例,降低重复查询的计算开销。
-
测试执行速度:通过启用并行执行(4个进程)并将启动器从'sco'切换为'empty'以减少开销,加速CI中的基础测试。
-
Milvus索引兼容性:针对Milvus-lite版本,将不支持的索引类型自动转换为AUTOINDEX,增强Milvus存储可靠性并提升跨版本兼容性。
-
Mineru PDF处理:将mineru组件更新至2.5.4版,引入性能优化、改进内容过滤功能,并增强对代码块和列表的支持。
(二)架构重构
-
启动器模块化:将单体启动器模块重构为模块化结构,为每个IaaS平台分别创建独立文件(base.py、slurm.py、sco.py、k8s.py),提升代码组织性与可维护性。
-
文档切分模块重构:将文档切分模块重组为独立模块 'lazyllm.tools.rag.transform',引入基础类(_TextSplitterBase、_TokenTextSplitter)及专用分割器(CharacterSplitter、RecursiveSplitter、SentenceSplitter、MarkdownSplitter),新增自定义分词器与分割规则支持。
(网址链接🔗:https://docs.lazyllm.ai/zh-cn/v0.7.1/Cookbook/rag/#-2)
-
文档处理器可扩展性:将DocumentProcessor从单进程设计重构为可扩展的服务器+工作进程架构,支持外部数据库(SqlManager)、持久化任务队列、健康检查及优雅关闭功能。
-
自动微调统一化:重构自动微调功能,支持对大型语言模型、视觉语言模型、嵌入模型及重排序模型进行统一微调,并实现模型类型自动检测,彻底摆脱对AutoConfig的依赖。
-
智能体模块整合:重构智能体模块,合并不同智能体类型间的冗余逻辑并统一工具输出处理,提升可维护性。
-
Mineru服务器架构:将mineru服务器模块重构为规范的Python包,实现更清晰的组织结构,同时保持向后兼容性。
(三)可用性与开发者体验
-
增强错误堆栈跟踪:优化Module、ServerModule及Flow的错误信息,移除冗余内部堆栈帧并明确标注函数定义行号,显著提升调试效率。
-
流程自动赋值:改进嵌套作用域内的流程自动赋值机制,允许内部流程组件无需显式语法即可自动赋值给外部流程,减少冗余代码。
-
智能测试执行:新增 run_on_change和ignore_cache_on_change pytest标记,仅在依赖文件变更时运行测试,或在特定文件变更时忽略缓存,优化持续集成工作流。
-
日志系统增强:通过环境变量LAZYLLM_EXPECTED_LOG_MODULES(默认值:'lazyllm')实现基于模块的日志过滤,并将启动器日志整合至独立的'launcher'模块,输出更清晰。
-
部署错误上下文:增强部署错误报告功能,保留近期日志(可通过 LAZYLLM_DEFAULT_RECENT_K 配置,CI 环境默认值为 20),并在部署失败时将日志纳入异常消息。
-
代码检查系统增强:通过flake8-bugbear和flake8-quotes实现了更严格的代码检查,并借助 优化检查流程——新命令make lint-only-diff仅针对PR中变更的文件进行检查。
-
智能体文档完善:为四种核心智能体类型新增全面文档与实战示例:API交互智能体、自适应工具调用智能体、带历史记录的对话式RAG智能体以及多模态输出智能体。
-
在线聊天模块负载均衡 :在OnlineChatModule中支持多API密钥或基础URL,实现负载均衡以规避供应商QPS限制。
-
SiliconFlow API密钥验证:为SiliconFlow模型服务新增API密钥验证机制,并规范文件命名以确保一致性。
-
MapStore SQLite优先级设置:增强MapStore功能,在提供URI时优先执行SQLite操作,实现多进程数据共享。
-
存储注册表健壮性:增强存储注册表稳定性,并将命名从'chromadb'更新为'chroma'以保持一致性,同时通过别名维持向后兼容性。
-
测试基础设施:增强高级测试工作流,可自动检测部署相关的代码变更,并切换至本地模型测试,不再依赖在线服务。
六、重大变更
本次发布引入若干破坏性变更,可能需要更新现有代码。请查阅以下项目获取迁移指南。
(一)SiliconFlow TTS 类重命名
为实现跨模块命名一致性,SiliconFlowTTS类已更名。
变更内容:
- SiliconFlowTTS 类现更名为 SiliconFlowTTSModule。
迁移步骤:
更新所有直接导入该类的代码。请注意,通过 OnlineMultiModalModule 实现的工厂模式保持不变。
# 旧版导入
# from lazyllm.models.online.siliconflow import SiliconFlowTTS
# 新导入方式
from lazyllm.models.online.siliconflow import SiliconFlowTTSModule
# 工厂模式(未变更)
tts = lazyllm.OnlineMultiModalModule(source='siliconflow', function='tts')
(二)第三方导入代码检查强制执行
新增代码检查规则,强制要求使用 lazychat.thirdparty 封装器处理第三方导入。
变更内容:
迁移步骤:
将直接导入替换为封装导入。该封装模块提供相同功能,同时实现更优的依赖管理。
# 旧式直接导入(将导致代码检查失败)
# import transformers
# from transformers import AutoModel
# 新的包装器导入
from lazyllm.thirdparty import transformers
from lazyllm.thirdparty.transformers import AutoModel
注意:此变更主要影响开发和CI代码检查。现有运行时代码仍可正常工作,但新提交必须遵守此规则。
七、其他变更
本次发布包含大量文档更新、CI/CD改进、版本管理变更及工具增强,这些优化提升了开发体验,但不影响已发布功能的行为。
(一)文档更新
-
全面教程与示例:新增详尽文档,涵盖TrainableModule最佳实践、所有核心模块完整API参考,并提供19个中英文双语教程示例。新增示例包括Wiki智能体、SQL 智能体、语音助手、代码智能体、销售助手、多源SQL查询及多智能体发言者选择。全系列教程新增英文支持,并完善配置文档添加参数详解。
-
README与PR模板更新:重构README文件提升可读性,新增教程链接,更新项目路线图,并完善PR模板包含详细贡献者指南与代码质量要求。
(二)持续集成/持续交付与测试
-
管道整合与优化:将多个独立工作流(代码检查、文档检查、构建检查、平台测试)整合为单一主工作流。新增标签特定触发器,可在禁用缓存状态下运行完整测试以验证发布版本。将文档部署移入主工作流以优化依赖管理。
-
仓库镜像:通过GitHub Actions实现Gitee与GitCode平台的自动化镜像,提升不同地区开发者的访问便利性。
-
测试目录重组:优化测试分类为基础测试、高级测试、收费测试和引擎测试。整合持续集成任务,并添加@pytest.mark.run_on_change 标记以实现智能测试执行。
-
中文文档测试:在持续集成管道中为中文文档新增自动化验证功能,确保内容准确性与格式规范。
(三)工具与代码风格
(四)版本管理
- 版本属性与更新:为lazyllm模块新增__version__属性,支持程序化版本检测。 在所有配置文件中将版本号从v0.6.1dev至v0.6.4dev及 v0.7.0更新至最终发布版本v0.7.1。
八、版本概述
LazyLLM v0.7.1 在智能体能力、RAG 基础设施及开发者体验方面实现重大突破。本次发布通过新增存储集成(Elasticsearch 和 OceanBase)及在线模型提供商(SiliconFlow 和 MiniMax),拓展了生态系统部署灵活性。统一缓存系统的引入显著提升性能,有效减少冗余计算与 API 调用。
核心增强包括:智能体模块重大重构以提升可维护性、全面改进文档处理能力、新增提示工程、GraphRAG部署及内存框架功能。大量漏洞修复与性能优化确保了更优的稳定性和可靠性。
从v0.6.1升级的用户需重点查阅破坏性变更说明,特别是SiliconFlow模块变更及第三方导入模式调整。新增的详尽文档包含完整教程和19个新教程示例,为入门学习和高级应用场景提供了优质资源。
仓库链接🔗:
更多技术内容,欢迎移步 "LazyLLM" 讨论!