低代码构建多Agent大模型应用的开发工具LazyLLM
在大模型应用开发领域,大家常常面临一个困境:搭建一个像样的AI应用,需要处理部署、微调、RAG、多Agent协作等一系列工程细节,光是让各个模块跑通就能消耗大量精力。LazyLLM的出现,就是要帮开发者从这些脏活累活中解脱出来——让你在几乎不用写太多代码的情况下,快速组装出包含多个Agent的复杂AI应用,并且后续还能持续迭代优化。

LazyLLM提供了一套清晰的workflow来搭建应用,同时也为开发中的各个环节准备了大量标准流程和工具。换句话说,哪怕你完全不懂大模型背后的原理,也能像搭积木一样,借助内置的数据流和功能模块,拼出能跑的多Agent应用。
它的核心能力覆盖了几个关键方面:一键部署所有模块(包括POC阶段的轻量网关和发布阶段的镜像封装)、跨平台兼容(裸金属、Slurm、公有云等平台之间无缝切换,代码不用改)、网格搜索参数优化(自动尝试不同模型、召回策略和微调参数,帮你找到最佳配置),以及高效的模型微调(根据场景自动选择最佳微调框架和模型切分策略)。此外,RAG常用组件、基础聊天界面和文档管理界面也都内置好了。
基于LazyLLM的构建流程可以概括为三步:先快速跑通应用原型,然后结合场景数据进行bad-case分析,最后在关键环节做算法迭代和模型微调,逐步提升效果。整个过程中,那些繁琐的工程化工作都由LazyLLM来处理。
二、特性
便捷的AI应用组装流程
复杂应用一键部署
跨平台兼容
支持网格搜索参数优化
高效的模型微调
三、使用指南
LazyLLM可以用来构建常用的AI应用,下面举几个例子。
3.1 对话机器人
最简单的对话机器人,只需要几行代码。设置好环境变量后:
# set environment variable: LAZYLLM_OPENAI_API_KEY=xx # or you can make a config file(~/.lazyllm/config.json) and add openai_api_key=xx import lazyllm t = lazyllm.OnlineChatModule(source="openai", stream=True) w = lazyllm.WebModule(t) w.start().wait()
如果要用本地部署的模型,确保安装了推理框架(lightllm或vllm),然后:
import lazyllm
# Model will be download automatically if you ha ve an internet connection
t = lazyllm.TrainableModule('internlm2-chat-7b')
w = lazyllm.WebModule(t)
w.start().wait()
3.2 检索增强生成
RAG应用的构建也相当简洁,下面是完整的示例代码:
import os
import lazyllm
from lazyllm import pipeline, parallel, bind, _0, Document, Retriever, Reranker
prompt = '你将扮演一个人工智能问答助手的角色,完成一项对话任务。在这个任务中,你需要根据给定的上下文以及问题,给出你的回答。'
documents = Document(dataset_path='/file/to/yourpath', embed=lazyllm.TrainableModule('bge-large-zh-v1.5'))
with pipeline() as ppl:
with parallel().sum as ppl.prl:
prl.retriever1 = Retriever(documents, parser='CoarseChunk', similarity_top_k=6)
prl.retriever2 = Retriever(documents, parser='SentenceDivider', similarity='chinese_bm25', similarity_top_k=6)
ppl.reranker = Reranker(types='ModuleReranker', model='bge-reranker-large') | bind(ppl.input, _0)
ppl.post_processer = lambda nodes: f'《{nodes[0].metadata["file_name"].split(".")[0]}》{nodes[0].get_content()}' if len(nodes) > 0 else '未找到'
ppl.formatter = (lambda ctx, query: dict(context_str=ctx, query_str=query)) | bind(query=ppl.input)
ppl.llm = lazyllm.TrainableModule('internlm2-chat-7b').prompt(lazyllm.ChatPrompter(prompt, extro_keys=['context_str']))
mweb = lazyllm.WebModule(ppl, port=23456).start().wait()
3.3 故事创作
利用多个Agent协作,可以完成更复杂的任务,比如根据主题自动生成完整的故事。代码中需要先定义大纲生成的提示词和内容生成的提示词:
import lazyllm
from lazyllm import pipeline, warp, bind
from lazyllm.components.formatter import JsonFormatter
toc_prompt=""" 你现在是一个智能助手。你的任务是理解用户的输入,将大纲以列表嵌套字典的列表。每个字典包含一个 `title` 和 `describe`,其中 `title` 中需要用Markdown格式标清层级,`describe` `describe` 是对该段的描述和写作指导。
请根据以下用户输入生成相应的列表嵌套字典:
输出示例:
[
{
"title": "# 一级标题",
"describe": "请详细描述此标题的内容,提供背景信息和核心观点。"
},
{
"title": "## 二级标题",
"describe": "请详细描述标题的内容,提供具体的细节和例子来支持一级标题的观点。"
},
{
"title": "### 三级标题",
"describe": "请详细描述标题的内容,深入分析并提供更多的细节和数据支持。"
}
]
用户输入如下:
"""
completion_prompt="""
你现在是一个智能助手。你的任务是接收一个包含 `title` 和 `describe` 的字典,并根据 `describe` 中的指导展开写作
输入示例:
{
"title": "# 一级标题",
"describe": "这是写作的描述。"
}
输出:
这是展开写作写的内容
接收如下:
"""
writer_prompt = {"system": completion_prompt, "user": '{"title": {title}, "describe": {describe}}'}
然后构建pipeline:
with pipeline() as ppl:
ppl.outline_writer = lazyllm.OnlineChatModule(source="openai", stream=False).formatter(JsonFormatter()).prompt(toc_prompt)
ppl.story_generater = warp(lazyllm.OnlineChatModule(source="openai", stream=False).prompt(writer_prompt))
ppl.synthesizer = (lambda *storys, outlines: "n".join([f"{o['title']}n{s}" for s, o in zip(storys, outlines)])) | bind(outlines=ppl.outline_writer)
print(ppl({'query':'请帮我写一篇关于人工智能在医疗领域应用的文章。'}))
四、功能点
- :定义了pipeline、parallel、diverter、if、switch、loop等工作流(Flow),开发者可以基于任意的函数和模块来快速搭建多Agent的AI应用。支持对组装好的多Agent应用进行一键部署,也支持对应用进行部分或者全部的更新。
应用搭建
- :支持用户在不同的算力平台上获得一致的使用体验。目前兼容裸金属、Slurm、SenseCore等多种算力平台。
跨平台
支持大模型的微调和推理
- 支持微调服务:GPT、SenseNova、通义千问
- 支持推理服务:GPT、SenseNova、Kimi、智谱、通义千问
- 支持Embedding推理服务:Openai、SenseNova、GLM、通义千问
- 支持微调框架:collie、peft
- 支持推理框架:lightllm、vllm
- 支持根据用户场景自动选择最合适的框架和模型参数(如micro-bs、tp、zero等)
- 离线(本地)模型服务与在线服务统一支持
- 支持开发者以统一的方式使用本地服务和线上服务
- :Document、Parser、Retriever、Reranker等。
支持RAG常用组件
- :聊天界面、文档管理界面等。
基础的界面支持
五、安装
源码安装
git clone git@github.com:LazyAGI/LazyLLM.git cd LazyLLM pip install -r requirements.txt
如果想进行微调、推理部署或搭建rag应用等,则需使用 pip install -r requirements.full.txt
pip安装
仅安装lazyllm及必要的依赖:
pip install lazyllm
安装lazyllm及所有依赖:
pip install lazyllm[full]
六、设计理念
LazyLLM的设计理念来源于对大模型在生产环节所表现出的局限性的深刻洞察。现阶段的大模型尚无法完全端到端地解决所有实际问题,因此基于LazyLLM的AI应用构建流程强调“快速原型搭建,结合场景任务数据进行bad-case分析,针对关键环节进行算法尝试和模型微调,进而逐步提升整个应用的效果”。LazyLLM处理了这个过程中繁琐的工程化工作,提供便捷的操作接口,让用户能够集中精力提升算法效果,打造出色的AI应用。
它的设计目标是让算法研究员和开发者从繁杂的工程实现中解脱出来,从而专注于他们最擅长的领域:算法和数据,解决实际场景中的问题。无论你是初学者还是资深专家,LazyLLM都能提供帮助。对于初级开发者,LazyLLM彻底简化了AI应用的构建过程——无需考虑任务调度到不同IaaS平台,无需了解API服务构建细节,无需在微调模型时选择框架或切分模型,也无需掌握任何Web开发知识。通过预置的组件和简单的拼接操作,初级开发者便能构建出具备生产价值的工具。而对于资深专家,LazyLLM提供了极高的灵活性,每个模块都支持定制和扩展,使用户能够轻松集成自己的算法以及业界先进的生产工具,打造更为强大的应用。
为了让用户不被困于所依赖的辅助工具的实现细节,LazyLLM会尽最大努力让相同定位的模块拥有一致的使用体验。例如,通过一套Prompt的规则,让线上模型(ChatGPT、SenseNova、Kimi、ChatGlm等)和本地模型在使用时拥有相同的使用方式,方便灵活地将应用中的本地模型替换为线上模型。
与市面上多数框架不同,LazyLLM在每个环节都精挑细选了2-3个我们认为最具优势的工具进行集成。这不仅简化了用户选择的过程,还确保了以最低的成本搭建出最具生产力的应用。不追求工具或模型的数量,而是专注于质量和实际效果,致力于提供最优的解决方案。LazyLLM旨在为AI应用构建提供一条快速、高效、低门槛的路径,解放开发者的创造力,推动AI技术在实际生产中的落地和普及。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名