一、簡要介紹
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)及文檔處理等模塊引入了大量新功能。
(一)存儲集成
- Elasticsearch存儲:專為RAG設計的可擴展分佈式文檔存儲,實現LazyLLMStoreBase接口並支持完整CRUD及搜索操作。需配合elasticsearch<7.17.12使用。
- OceanBase存儲:新增向量存儲,支持帶HNSW、IVF和FLAT索引的稠密/稀疏向量。需安裝pyobvector和sqlalchemy。
(二)新增在線模型選型
- 硅基流動(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 封裝器處理第三方導入。
變更內容:
- 直接導入 thirdparty/modules.py 中列出的模塊(例如 transformers、torch)將導致代碼檢查失敗。
- 所有第三方導入必須通過 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標記以實現智能測試執行。
- 中文文檔測試:在持續集成管道中為中文文檔新增自動化驗證功能,確保內容準確性與格式規範。
(三)工具與代碼風格
- 代碼檢查配置與強制執行: 強制全代碼庫使用單引號,新增自定義 flake8 檢查器要求第三方導入必須通過 lazyllm.thirdparty 封裝器,並通過 Makefile 自動化安裝必需的 flake8 插件(flake8-quotes、flake8-bugbear)。
- API 文檔持續集成檢查:實現持續集成測試,確保所有公共 API 在合併前具備完整文檔,提升文檔完整性。
(四)版本管理
- 版本屬性與更新:為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個新教程示例,為入門學習和高級應用場景提供了優質資源。
倉庫鏈接🔗:
- https://github.com/LazyAGI/LazyLLM
- https://github.com/LazyAGI/LazyLLM/releases/tag/v0.7.1
更多技術內容,歡迎移步 "LazyLLM" 討論!