LazyLLM 框架实战:构建代码专家智能体
LazyLLM 是商汤大装置推出的开源低代码框架,用于构建多 Agent 应用。 LazyLLM 的环境搭建、核心原理及代码专家智能体的开发流程。通过模块化设计和数据流驱动,开发者可使用极简代码实现工业级 AI 应用。文章展示了从初始化配置、功能模块定义到管道串联及 Web 部署的全过程,并验证了其在开发效率、功能性能及工程化方面的优势。

LazyLLM 是商汤大装置推出的开源低代码框架,用于构建多 Agent 应用。 LazyLLM 的环境搭建、核心原理及代码专家智能体的开发流程。通过模块化设计和数据流驱动,开发者可使用极简代码实现工业级 AI 应用。文章展示了从初始化配置、功能模块定义到管道串联及 Web 部署的全过程,并验证了其在开发效率、功能性能及工程化方面的优势。

摘要:LazyLLM 是商汤大装置推出的开源低代码框架,作为构建和优化多 Agent 应用的一站式开发框架,覆盖应用搭建、数据准备、模型部署、微调、评测等全流程开发环节,提供丰富的工具支持。其以模块化设计打破传统开发壁垒,通过数据流驱动重构开发逻辑,能让开发者用极简代码实现工业级复杂 AI 应用,摆脱冗余编码束缚,聚焦核心业务场景,降低 AI 应用构建成本并支持持续迭代优化。
LazyLLM 是构建和优化多 Agent 应用的一站式开发工具,为应用开发过程中的全部环节(包括应用搭建、数据准备、模型部署、模型微调、评测等)提供了大量的工具,协助开发者用极低的成本构建 AI 应用,并可以持续地迭代优化效果。
LazyLLM 作为商汤大装置推出的开源低代码框架,它以模块化设计打破传统开发壁垒,用数据流驱动重构开发逻辑,仅凭极简代码就能实现工业级复杂应用,让开发者彻底摆脱冗余编码的束缚,把精力聚焦于核心业务场景,其技术普惠理念为 AI 开发领域带来新的实践范式,推动了更高效的开发模式。
下面我就带大家,用 LazyLLM 搭建自己的 AI 代码专家智能体。
在开始开发前,需完成基础环境配置,确保 LazyLLM 框架能稳定运行。
打开终端执行以下命令,完成核心依赖安装:
# 升级 pip 工具
pip install --upgrade pip
# 安装 LazyLLM 核心框架
pip install lazyllm
# 安装代码解析与运行依赖(支持多语言代码处理)
pip install tree-sitter python-dotenv openai
# 若使用第三方大模型需安装对应 SDK
安装完成后,在 Python 终端执行以下代码,确认框架正常加载:
pip show lazyllm
LazyLLM 基于 Python 开发,我们需要保证系统中已经安装好了 Python,Pip 和 Git。
首先准备一个名为 lazyllm-venv 的虚拟环境并激活:
python3 -m venv lazyllm-venv
source lazyllm-venv/bin/activate
如果运行正常,你可以在命令行的开头看到 (lazyllm-venv) 的提示。接下来我们的操作都在这个虚拟环境中进行。
从 GitHub 下载 LazyLLM 的代码:
git clone https://github.com/LazyAGI/LazyLLM.git
并切换到下载后的代码目录:
cd LazyLLM
安装基础依赖:
pip3 install -r requirements.txt
如果您期望使用 LazyLLM 的所有功能,您可以运行以下命令来安装 LazyLLM 的全量依赖:
pip3 install -r requirements.full.txt
把 LazyLLM 加入到模块搜索路径中:
export PYTHONPATH=$PWD:$PYTHONPATH
这样我们在任意目录下都可以找到它。
我们提供了包含最新版本的 LazyLLM 的 docker 镜像,开箱即用:
docker pull lazyllm/lazyllm
也可以从 https://hub.docker.com/r/lazyllm/lazyllm/tags 查看并拉取需要的版本。
LazyLLM 支持用 pip 直接安装:
pip3 install lazyllm
上述命令能够安装 LazyLLM 基础功能的最小依赖包。可以支持使用各类线上模型微调,推理,搭建基础的大模型应用(如基础的 RAG 系统与 Agent)。
成功安装 LazyLLM 后,您可以在命令行中使用 lazyllm install xxx 的命令,以针对不同的使用场景安装响应的依赖。
例如:安装 LazyLLM 的所有功能最小依赖包。不仅支持线上模型的微调和推理,而且支持离线模型的微调(主要依赖 LLaMA-Factory)和推理(主要依赖 vLLM)。
lazyllm install standard
安装 LazyLLM 的所有依赖包,所有功能以及高级功能都支持,比如自动框架选择(AutoFinetune、AutoDeploy 等)、更多的离线推理工具(如增加 LightLLM 等工具)、更多的离线训练工具(如增加 AlpacaloraFinetune、CollieFinetune 等工具)。
lazyllm install full
更多场景划分如下:
代码专家智能体的核心是'模块化组件协同 + 数据流驱动交互',基于 LazyLLM 的架构优势,我们将智能体拆解为 3 个核心模块:
LazyLLM 的组件化架构让这些模块无需手动编写复杂的衔接逻辑,通过 pipeline 让数据流自动串联,极大降低了开发难度。
| Alpaca 格式 | Chat 格式 | |
|---|---|---|
| 适合场景 | 单轮问答、指令微调 | 多轮对话、复杂任务 |
| 上下文处理 | 单轮任务、无上下文记忆 | 支持上下文记忆、连续对话 |
| 结构复杂度 | 简单 | 灵活多变 |
| 对话角色 | 单角色 | 多角色 (system, user, assistant) |
| 在线格式 | 本地格式 | |
|---|---|---|
| 适合场景 | 调研在线模型 | 本地启动推理服务 |
| 格式 | Json | 字符串 |
| 特点 | 会区分角色 | 会包含特殊标记,如 < |
首先创建项目文件 code_expert_agent.py,导入 LazyLLM 核心组件并配置基础参数:
import lazyllm
from lazyllm import pipeline, module, Input, Output
# 配置模型(支持本地模型或第三方 API,此处以开源模型为例)
llm = lazyllm.TrainableModule("Qwen2-72B-Instruct-AWQ").deploy_method(deploy.vllm).start()
# 配置代码处理工具(LazyLLM 内置工具链,无需额外开发)
agent = ReactAgent(llm, tools=['item_lookup', 'property_lookup', 'sparql_query_runner'])
基于 LazyLLM 的 module 装饰器,快速定义各功能模块,无需关心模块间的通信逻辑:
from lazyllm import Module, llm, json_loads, field
from typing import Optional, Dict
class ParseRequirementModule(Module):
"""解析用户代码需求的标准化模块(继承 LazyLLM ModuleBase)
功能:提取用户需求中的编程语言、核心功能、需求类型、附加信息,返回结构化字典
支持:配置自定义提示词、LLM 模型参数、超时控制
"""
# 模块可配置参数(通过 field 定义,支持序列化和命令行覆盖)
prompt_template: str = field(
"请严格分析以下用户代码需求,按要求提取关键信息:\n"
"1. 编程语言:明确用户使用的编程语言(如 Python/Java/JS,无则填\"未知\")\n"
"2. 核心功能:用户需要实现/处理的核心需求(简洁描述,不超过 50 字)\n"
"3. 需求类型:只能是\"生成\"(写新代码)、\"调试\"(修复报错)、\"优化\"(提升性能/可读性)之一\n"
"4. 附加信息:报错信息、版本约束、性能要求等额外条件(无则填\"\")\n"
"用户需求:{input_text}\n"
"注意:仅输出 JSON 字符串,不要添加任何额外内容,JSON 格式严格匹配:{\"language\": \"\", \"function\": \"\", \"type\": \"\", \"extra\": \"\"}\n"
"",
description="需求解析的提示词模板,{input_text} 为用户输入占位符"
)
llm_model: str = field(default="gpt-3.5-turbo", description="用于解析需求的 LLM 模型名称")
llm_temperature: float = field(default=0.1, ge=0.0, le=1.0, description="LLM 生成温度(越低越稳定,越高越灵活)")
timeout: int = field(default=30, ge=10, le=60, description="LLM 请求超时时间(单位:秒)")
def __init__(self, **kwargs):
"""初始化模块(支持通过关键字参数覆盖默认配置)"""
super().__init__(**kwargs)
# 初始化 LLM 客户端(绑定模型和参数)
self.llm_client = llm(model=.llm_model, temperature=.llm_temperature, timeout=.timeout)
() -> [, ]:
prompt = .prompt_template.(input_text=input_text.strip())
:
.logger.info()
result = .llm_client(prompt)
parsed = json_loads(result)
.logger.info()
{
: parsed.get(, ),
: parsed.get(, ),
: parsed.get(, ),
: parsed.get(, )
}
Exception e:
.logger.error(, exc_info=)
{
: ,
: input_text[:] + (input_text) > input_text,
: ,
:
}
() -> :
parse_requirement = ParseRequirementModule()
() -> ParseRequirementModule:
ParseRequirementModule(**kwargs)
利用 LazyLLM 的 pipeline 功能,将三个模块串联为完整的智能体,数据流将自动从输入流向输出:
from lazyllm import pipeline
# 1. 定义管道所需的核心函数(实际场景中需替换为真实实现)
def parse_requirement(input: str) -> dict:
"""第一步:解析用户需求,返回结构化数据"""
return {
"user_query": input,
"task_type": "code_generation",
"requirements": ["语法正确", "符合 PEP8 规范", "带注释"]
}
def code_process(input: dict) -> str:
"""第二步:根据解析结果生成/处理代码"""
query = input["user_query"]
# 示例逻辑:根据需求生成简单代码(实际需对接大模型或代码生成逻辑)
if "计算斐波那契" in query:
return '''def fibonacci(n):
"""斐波那契数列生成函数(根据用户需求实现)"""
a, b = 0, 1
result = []
for _ in range(n):
result.append(a)
a, b = b, a + b
return result'''
return f"# 根据需求生成的代码:{query}\nprint('实现逻辑待补充')"
def format_output(input: str) -> str:
"""第三步:格式化输出结果,提升可读性"""
return f""" ### 代码生成结果
```python
{input}
```"""
LazyLLM 支持多种部署方式,此处以本地 Web 部署为例,无需额外编写前端代码:
from lazyllm import pipeline, component_register, WebModule, RequestModel
from pydantic import Field
# --------------------------
# 1. 定义智能体核心组件(复用前序逻辑)
# --------------------------
component_register.new_group("code_agent")
@component_register("code_agent")
def parse_requirement(input: str) -> dict:
"""第一步:解析用户需求"""
return {
"user_query": input,
"task_type": "code_generation",
"requirements": ["语法正确", "符合 PEP8 规范", "带注释"]
}
@component_register("code_agent")
def code_process(input: dict) -> str:
"""第二步:处理/生成代码"""
query = input["user_query"]
# 示例:根据不同需求生成对应代码
if "斐波那契" in query:
return '''def fibonacci(n: int) -> list[int]:
"""计算前 n 项斐波那契数列
Args:
n: 数列长度(正整数)
Returns:
斐波那契数列列表
"""
if n <= 0:
raise ValueError("n 必须为正整数")
a, b = 0, 1
result = [a]
for _ in range(1, n):
a, b = b, a + b
result.append(a)
return result'''
elif "排序" query query:
:
() -> :
{
: ,
: ,
: {
: ,
:
}
}
lazyllm
code_expert_agent = pipeline(
lazyllm.code_agent.parse_requirement,
lazyllm.code_agent.code_process,
lazyllm.code_agent.format_output
)
():
():
user_requirement: = Field(..., description=, example=)
port: = Field(, ge=, le=, description=)
():
().__init__()
.agent = agent
.title =
.description =
():
result = .agent(request.user_requirement)
result
__name__ == :
web_service = CodeAgentWebService(code_expert_agent)
web_service.run(server=, port=, reload=, docs=)
运行代码后,终端会输出访问链接(http://localhost:8080),打开浏览器即可与智能体交互。
针对代码专家智能体显示进行优化,顶部增加了功能说明区域,明确了可支持的编程语言和服务范围,还设置了官方教程文档的入口。输入区域的提示更具体,给出了代码需求的示例,底部新增了快捷功能按钮,降低了用户的使用门槛。
Prompt:python 目前前景?
AI 回复完整效果展示了富文本格式,支持一键复制。
LazyLLM 不仅重构了 AI 应用的开发路径,更降低了大模型技术的使用门槛,让开发者能聚焦创新本身。无论是个人开发者快速验证想法,还是企业团队落地复杂业务场景,它都能成为高效得力的开发工具。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online