LazyLLM黑科技 | 不装全家桶也能跑?LazyLLM 的按需动态加载方案

低代码Agent工厂:用LazyLLM快速克隆行业专属智能体 本文介绍了LazyLLM低代码框架如何帮助企业快速构建行业专属智能体,解决传统AI开发的技术门槛高、周期长和成本昂贵问题。通过模块化设计和RAG技术,LazyLLM支持教育培训、电商客服等场景的智能体快速克隆与定制,显著提升开发效率和应用效果。 阅读详情

背景|依赖增多导致环境复杂度上升

如何才能在真正使用到某个依赖时动态加载该依赖呢?

import lazyllm
# 只用核心能力时,我们不希望触发 tools/rag 依赖检查
chat = lazyllm.OnlineChatModule(source="openai")
print("core ok")
# 一旦访问 Document,才会触发懒加载链路:
# lazyllm.Document
# -> import lazyllm.tools
# -> import lazyllm.tools.rag
# -> check_dependency_by_group('rag')
from lazyllm import Document  # 若缺少 rag 依赖,会在这里抛 ImportError

在较为复杂的 Python 项目中,常见问题是:代码尚未进入核心逻辑,运行环境会因为依赖冲突、缺失或版本不兼容而失败;不同模块往往依赖不同的第三方库。若将所有依赖统一安装,环境会迅速膨胀;若仅安装部分依赖,又容易在执行过程中因缺少依赖而中断。更进一步,即使框架自身依赖关系已经梳理清楚,也仍可能与用户本地环境产生版本或分发差异。这是 Python 生态中常见的依赖管理上的典型挑战。

难点|依赖库难以管理,且相关报错不友好

业界常见的解决方案以及难点:

1️⃣全量安装依赖

import lazyllm
# 如果此句直接加载全量依赖会耗时很长,且会导致环境臃肿。用户不会用到的依赖白白占用空间。

2️⃣在用到某依赖时动态import

def func():
  from lazyllm import OnlineChatModule
  pass
# 调用到func时再加载某些依赖会过晚暴露问题,增加开发难度,降低开发者的用户体验

3️⃣缺少依赖或依赖冲突的导致的问题直接打印在海量日志中:关键依赖缺失信息会淹没在其他日志中,增加用户修复环境的成本。

解决方案|按需加载与集中检查相结合

LazyLLM 采用按需加载策略:未使用的功能不预先要求安装 ;当用户首次调用相关能力时,框架对该功能组的依赖进行集中校验。

以 rag 为例,当用户首次使用相关能力时,LazyLLM 会:

1.一次性检查该功能组所需的全部依赖

2.明确列出缺失的包列表

3.给出统一的安装指令:lazyllm install rag

依赖组的版本约束由 LazyLLM 的预置逻辑管理,用户无需手动查阅兼容矩阵或推断版本组合。总体体验可以概括为:未使用的能力不引入依赖;使用时一次性补齐依赖并可直接继续运行。

下文进入实现细节👇

机制总览

LazyLLM 的延迟加载三层模型:

接下来依次揭开他们的神秘面纱👇

1️⃣顶层懒加载:lazyllm.getattr

  • 解决的问题:

加载顶层模块时直接加载所有依赖。

  • lazy的方法:

通过__getattr__ 实现动态加载用户想要加载的子模块,在模块名合法的情况下动态调用该子模块内部的依赖加载流程,能让用户省略子模块路径。

getattr 的作用:当用户访问不存在的属性时,python会调用 obj.getattr(name) 以动态实现属性加载逻辑。

  • 关键代码:
# 文件:lazyllm/__init__.py
def __getattr__(name: str):
    if name == 'tools': # 调用中间模块的加载逻辑
        return importlib.import_module('lazyllm.tools')
    elif name in __all__:
        tools = importlib.import_module('lazyllm.tools')
        builtins.globals()[name] = value = getattr(tools, name)  # 导入后会缓存导入结果以避免后续重复导入
        return value
    raise AttributeError(f"module 'lazyllm' has no attribute '{name}'") # 保证加载在顶层init中声明/暴露出来的子模块
  • 效果:

👉顶层 API 暴露完整,但实际导入延后到首次访问

👉导入后写入 globals(),后续访问几乎无额外开销

2️⃣工具子模块懒加载:lazyllm.tools.getattr

  • 解决的问题:

加载子模块时直接加载所有依赖。

  • lazy的方法:

与顶层__init_.py 类似,lazyllm.tools 也不会一次性导入所有子模块,而是根据名称映射到具体模块并按需加载。

  • 关键代码:
# lazyllm/tools/__init__.py
def __getattr__(name: str):
    if name == 'fc_register':
        agent = import_module('.agent', package=__package__)
        globals()['fc_register'] = value = agent.register
    elif name in _SUBMOD_MAP:
        return import_module(f'.{name}', package=__package__)
    elif name in _SUBMOD_MAP_REVERSE:
        module = import_module(f'.{_SUBMOD_MAP_REVERSE[name]}', package=__package__)
        globals()[name] = value = getattr(module, name)
    return value

其中_SUBMOD_MAP, _SUBMOD_MAP_REVERSE 用于指定"类名 → 子模块"之间的映射。​​​​​​​


_SUBMOD_MAP = {
    'rag': ['Document', 'Reranker', 'Retriever', 'SentenceSplitter', 'LLMParser'],
    'agent': ['ToolManager', 'FunctionCall', 'ReactAgent', 'PlanAndSolveAgent', 'ReWOOAgent'],
    'sql': ['SqlManager', 'MongoDBManager', 'DBManager', 'DBResult', 'DBStatus'],
    # 其他模块略
}
  • 效果:

当用户编写 from lazyllm.tools import Document 时,才会实际导入 lazyllm.tools.rag。

3️⃣依赖集中检查:子模块导入时统一检测

  • 解决的问题:

👉实际使用依赖时才暴露缺少依赖。

👉多个同时需要的依赖出现异常时,提示分散在不同的场景、log、时间等维度。

  • lazy的方法:

在子模块被导入时触发整个依赖组的检查。

  • 关键代码:
# lazyllm/tools/rag/__init__.py
from lazyllm.thirdparty import check_dependency_by_group
check_dependency_by_group('rag') # 模块init中指定该子模块隶属于哪个依赖组
# lazyllm/thirdparty/__init__.py
def check_dependency_by_group(group_name: str):
    missing_pack = []
    for name in load_toml_dep_group(group_name): # 依赖分组信息直接从整个工程的配置toml文件中获取
        real_name = package_name_map_reverse.get(name, name)
        if not (config['init_doc'] and real_name in module_names or check_package_installed(real_name)):
            missing_pack.append(name)
    if len(missing_pack) > 0:
        msg = f'Missing package(s): {missing_pack}\nYou can install them by:\n    lazyllm install {group_name}'
        LOG.error(msg) # 提示安装依赖组的命令
        raise ImportError(msg)
  • 效果:

👉对功能组进行整体校验

👉一次性列出缺失依赖

LazyLLM 将功能组(如 rag、rag-advanced、agent-advanced)的依赖声明在 pyproject.toml 的 extras 中,同时 lazyllm install 基于同一份配置解析并安装对应版本约束。因此,报错信息与安装命令在同一来源上生成:提示缺什么、安装什么、版本约束是什么保持一致。

👉提供明确的安装命令

4️⃣BONUS: 第三方包的延迟导入封装

当用户确实需要使用特定的三方依赖时也可以复用lazyllm中的延迟加载逻辑

  • lazy的方法:

LazyLLM 对第三方库(例如 torch、transformers)也提供了延迟加载封装。在lazyllm.thirdparty 中使用__getattribute__ 动态检查依赖的安装情况。

  • 关键代码:
# lazyllm/thirdparty/__init__.py
class PackageWrapper(object):
    def __getattribute__(self, __name):
        if self._Wrapper__lib is None:
            try:
                self._Wrapper__lib = importlib.import_module(self._Wrapper__key, package=self._Wrapper__package)
            except ImportError:
                pip_cmd = get_pip_install_cmd([self._Wrapper__key])
                err_msg = f'Cannot import module `{self._Wrapper__key}`, please install it by `{pip_cmd}`'
                raise ImportError(err_msg) from None
        return getattr(self._Wrapper__lib, __name)
  • 效果:

👉该机制将"运行到一半才报错"的问题前置到"首次使用即报错",并提供可直接执行的安装建议(包含版本约束时亦可体现)。

👉这样导入时 from lazyllm.thirdparty import transformers,lazyllm并不会立即导入真实库;直到首次访问其属性时才进行导入,并在缺失时给出明确的安装建议。

使用方式(覆盖常见场景)

情况1️⃣:如果你想仅使用最简功能,可以仅加载顶层模块​​​​​​​

import lazyllm
llm = lazyllm.OnlineChatModule(source="openai")

核心模块属于 lazyllm 的基础依赖,不需要额外安装。

情况2️⃣:如果你的开发涉及 RAG,可以通过顶层模块加载子模块(推荐方式​​​​​​​

from lazyllm import Document, Retriever
docs = Document(dataset_path="/path/to/data", embed=lazyllm.OnlineEmbeddingModule())
retriever = Retriever(docs)

首次导入 Document 时会触发 rag 依赖检查。若缺少依赖,将提示:​​​​​​​

Missing package(s): [...]
You can install them by:
    lazyllm install rag

然后用户可执行安装命令一次性补全依赖:

lazyllm install rag

情况3️⃣:如果你清楚的知道自己需要什么,可以直接使用子模块

from lazyllm.tools.rag import Document, SentenceSplitter

该方式会直接导入 lazyllm.tools.rag,因此依赖检查会立即触发。

情况4️⃣:如果你需要使用全部 RAG 或 Agent的能力,则需要手动安装相关依赖组

若使用向量数据库、Embedding 微调或 MCP 等高级能力,可安装对应扩展组:​​​​​​​

lazyllm install rag-advanced
lazyllm install agent-advanced

这些扩展组来自 pyproject.toml 的 extras 配置,安装时会自动应用版本约束,通常无需人工拼装依赖版本。更多可安装的依赖场景见官网**安装引导文档(https://docs.lazyllm.ai/zh-cn/stable/)**或项目根目录中 pyproject.toml 的配置。

情况5️⃣:如果你想使用某个具体的第三方库,可以使用lazyllm.thirdparty 导入​​​​​​​

from lazyllm.thirdparty import transformers
tokenizer = transformers.AutoTokenizer.from_pretrained("...")

若缺少依赖,会直接提示执行带版本约束的 pip install …。

小结

通过上面的介绍,相信你已经对 LazyLLM 这套"按需加载 + 集中检查"的依赖管理思路有了更直观的认识:不用的能力不必提前安装,真正用到时再一次性把依赖校验清楚,并给出可直接执行的安装指令。

简单回顾一下它解决的核心问题:

  • 让环境更轻量: 未使用的功能不引入额外依赖,避免安装集合不断膨胀。

  • 让报错更友好: 缺失依赖在首次使用时就明确提示,并一次性列全,减少反复试错。

  • 让安装更稳定: 依赖组与版本约束统一来源于同一份配置,提示与安装行为一致。

如果你也在维护一个功能模块多、依赖差异大的 Python 项目,这种设计思路通常会带来非常实际的收益:启动更快、环境更稳、问题暴露更早,用户使用门槛也更低。

欢迎升级体验 LazyLLM最新版本,请大家去github上点一个免费的star,支持一下~(也欢迎关注LazyLLM gzh哦!)

LazyLLM项目仓库链接🔗:

  • https://github.com/LazyAGI/LazyLLM

  • https://github.com/LazyAGI/LazyLLM/releases/tag/v0.7.1

LazyLLM实战指南:基于RAG+Agent构建智能教学辅助系统 本文详细介绍了如何利用LazyLLM框架结合RAG和Agent技术构建智能教学辅助系统。通过模块化设计和动态调整能力,系统能够快速生成个性化学习材料,显著提升教学效率。实战案例显示,AI辅助备课时间减少81.5%,学生满意度和通过率均有显著提升。 阅读详情

相关推荐

【HALCON+C#实战】3D点云测量系统开发全攻略:从源码解析到工业应用

本文详细介绍了基于HALCON和C#开发3D点云测量系统的全流程,从环境搭建、核心算法实现到工业应用优化。通过源码解析和实战技巧,帮助开发者解决点云数据处理、几何测量及系统集成中的常见问题,提升工业检测的精度与效率。

brown的博客 209

LazyLLM,(万象应用开发平台 AppStudio)商汤大装置

开发平台。

qq_59527512的博客 859

【RandLA-Net实战】从零构建隧道点云数据集并训练大场景语义分割模型

本文详细介绍了如何使用RandLA-Net构建隧道点云数据集并进行大场景语义分割模型训练。从数据采集、标注到模型训练与优化,提供了完整的实战指南,特别针对隧道场景的特殊挑战提出了解决方案。通过实际案例展示了RandLA-Net在处理大场景点云数据时的高效性和准确性,为隧道巡检等工程应用提供了可靠的技术支持。

weixin_30485379的博客 113

LazyLLM 生态集成测试:与主流开源软件的协同效果评测

本文评测了LazyLLM与主流开源工具(Pandas、LangChain)的集成效果。测试结果表明,LazyLLM实现了零侵入式集成,平均适配时间不足30分钟,核心功能测试通过率达100%。该框架提供统一接口设计,支持自由切换模型提供商,与Pandas的深度集成实现"数据+AI"智能分析,与LangChain的完美兼容支持复杂工作流构建。LazyLLM显著降低了AI应用开发门槛和集成成本,使开发者能专注于业务创新而非底层技术细节,是构建企业级AI应用的理想选择。

笃行其道的博客 920

基于大模型的恶性胸腔积液全周期预测与诊疗方案研究

本研究基于大模型技术构建了恶性胸腔积液全流程预测与诊疗体系,涵盖术前风险评估、术中方案优化、术后恢复预测及并发症预防。通过整合多源医疗数据,实现了手术风险概率预测(准确率80%)、并发症预警(AUC值0.85)及个性化康复方案制定,显著提升诊疗精准度。研究创新性地将Transformer架构与多模态数据融合,在100例临床验证中显示良好性能,但存在数据样本局限、模型可解释性不足等问题。未来将扩大多中心临床验证,优化算法可解释性,探索与基因检测等技术的结合应用,推动恶性胸腔积液的精准诊疗发展。

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1896

若依框架二次开发——若依 Vue3 版本前端样式优化指南

若依框架二次开发——若依 Vue3 版本前端样式优化指南

bjzhang75的博客 1690

LazyLLM 学习

本文介绍了基于LazyLLM框架构建PDF知识问答系统的实现过程。

lsswear的专栏 1135

【蓝凌表单】JSP组件常用语法整理

【代码】【蓝凌表单】JSP组件常用语法整理。

烧硬盘 706

PPIO × 商汤 LazyLLM: 一站式构建 Multi-Agent |实操指南

以上就是本次联合解决方案的完整实操指南。PPIO 的算力底座配合 LazyLLM 的一站式工具链,为 AI 应用开发提供了一条“即开即用”的捷径。我们希望通过这一标准化的流程,帮助大家从繁琐的底层调试中解放出来。目前,双方的适配已全面上线,欢迎各位开发者即刻接入体验,我们期待看到更多富有创造力的智能体应用在这一生态中诞生。

730

8、硬件工程师笔试面试知识器件篇——二极管(2025版本)

当二极管正向偏置时(阳极相对于阴极为正电压),PN结内部的电场减小,允许电子和空穴复合,形成电流。而当二极管反向偏置时,PN结的电场增强,阻止电流通过。在接触区域,P型半导体中的空穴和N型半导体中的自由电子会相互扩散和复合,形成一个没有自由载流子的耗尽区。在设计电子电路时,平衡二极管的正向电压降(Vf)和最大电流(I)是一个重要的考虑因素,因为这两者直接影响电路的性能和效率。通过这些步骤,可以确保在设计电子电路时选择的二极管能够安全地处理预期的最大正向电流和最大反向电压,从而提高电路的可靠性和安全性。

XU157303764的博客 3500

【camera-radar】基于ROS的多传感器融合感知系统实现(雷达+相机)(2)

实现功能:代码下载地址:下载地址 1)基于深度学习的目标检测;2)基于雷达的距离估计和预测;3)多传感器感知结果融合模块。 相机感知模块解析 4. Run nodes: python3 fusion_node/main.py python3 gps_node/main.py python3 radar_node/main.py python3 2d_detection_node/main.py #(additional instructions in 2d_detection_node/README.m

踟蹰横渡口,彳亍上滩舟。 9948

LazyLLM 第一讲:一文搞定 10 分钟拿下 Agent 快速部署

10 分钟部署 Agent,看到最后有福利

优快云高校俱乐部官方博客 3119

【YOLO11[基础]】分类任务的热力图可视化实践 | 论文必备 | 分类任务 | 即插即用 | 可选GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM, HiR

【YOLO11[基础]】分类任务的热力图可视化实践 | 论文必备 | 分类任务 | 即插即用 | 可选GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM, HiResCAM, LayerCAM, RandomCAM, EigenGradCAM等

静谧、淡雅 2389

拆解 LazyLLM:10 个你可能忽略的工程黑科技

如果你一路看到这里,说明你大概率已经在真实工程里和大模型打过交道了。后续文章里,我们会继续拆解更底层的东西:为什么要这样设计、当时有哪些取舍、哪些地方其实还在不断演进。如果你对这些工程细节感兴趣,欢迎持续关注。Lazy 的黑科技,等你来一起揭秘~欢迎升级体验 LazyLLM最新版本,请大家去github上点一个免费的star,支持一下~

SenseCore的博客 709

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LazyLLM黑科技 | 拒绝机翻,如何实现中英双语的API文档?

LazyLLM 的文档方案通过“

SenseCore的博客 933

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【LazyLLM】00 LazyLLM简介

商汤科技推出开源框架LazyLLM,旨在降低AI应用开发门槛。该框架支持低代码开发(最少10行代码),提供标准化工作流组件,实现多Agent协同、RAG检索等功能。特性包括跨平台部署、多模型支持、自动参数优化等,适用于从初学者到专业开发者的各类场景。核心模块涵盖文档处理、向量生成、智能体交互等,典型应用包括天气查询、知识库问答等复杂场景。通过模块化设计,LazyLLM简化了AI应用开发流程,提升迭代效率。

生命不息,折腾不止。 972

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LazyLLM黑科技 | 你的框架想“隐身”?聊聊 LazyLLM 的配置体系设计哲学

config读取环境变量时,会在前面加一个默认的前缀LAZYLLM_,比如上文中的CUDA_VISIBLE,使用环境变量设置时就要export LAZYLLM_CUDA_VISIBLE=xxx。**依赖逆置:**config本身是框架的底层模块,是其他业务模块的依赖,但是如果在config模块中要感知上层模块要配置什么类型的默认值,感知上层模块的业务,就打破了分层。:所有已注册的配置,统一进入 `lazyllm.config`,调用方只管 `lazyllm.config[“xxx”]`,不关心配置来自哪。

SenseCore的博客 326

硅基流动下的LazyLLM:快速入门教程

摘要:商汤LazyAGI团队推出LazyLLM一站式开发平台,解决多Agent应用开发中工具链复杂、流程繁琐的痛点。该平台整合了从应用搭建到部署评测的全流程,支持硅基流动大模型服务平台接入数百种前沿模型。基于LazyLLM构建的LazyCraft平台提供强大的资源管理和RAG技术支持。文章详细解析了硅基流动API配置方法、LazyLLM的延迟加载核心思想、软硬结合架构及动态调度机制,并通过性能优化案例展示了其在能效控制和资源利用方面的创新突破。该技术已在智能客服、金融风控等领域验证价值,代表了AI系统软硬件

wudu_123456的博客 1494

硅基流动赋能LazyLLM:从理论到实战的效能跃迁指南

本文深入探讨了如何通过LazyLLM的延迟加载技术与硅基流动硬件平台实现软硬协同,从而显著提升大模型应用的资源利用率和响应速度。文章提供了从环境搭建、核心代码实战到生产环境优化的完整指南,并通过效能对比,展示了该方案如何解决多Agent应用开发中的资源碎片化与高延迟痛点。

weixin_29197051的博客 423

简化大模型工具LazyLLM

LazyLLM 是一个专注于简化大模型(如 GPT、LLaMA 等)应用开发的工具或框架,其核心理念是通过自动化或半自动化的方式降低大模型的使用门槛,提升开发效率。它可能涉及模型部署、推理优化、API封装等功能,适合快速构建基于大模型的应用程序。

find_element_by_id的博客 954

LazyLLM端到端实战:用RAG+Agent实现自动出题与学习计划的个性化学习助手智能体

在编写Git和开源技术书籍时,为提升配套习题和学习计划的效率,基于商汤科技开源的LazyLLM框架开发了学习助手Agent。该框架支持低代码开发,结合RAG技术实现精准内容检索与生成,仅需10行代码即可构建应用。通过文档加载、检索组件配置及大模型调用,Agent能自动生成高质量习题和教学计划。LazyLLM的模块化设计和灵活调整能力显著提升了书籍编写效率。

科技改变人类,技术成就未来 2万+

Python元类实现LazyLLM自动注册机制解析

元类作为Python的高级特性,是理解类创建过程的关键。通过重写__init__等方法,元类可以在类定义阶段实现自动注册等控制逻辑,这种机制在框架开发中尤为重要。LazyLLM框架创新性地利用元类实现了'继承即注册'的特性,相比传统显式注册或装饰器方案,大幅减少了样板代码。该技术在插件系统、策略模式等场景有广泛应用价值,特别是在需要动态加载组件的分布式系统中,结合WeakValueDictionary可避免内存泄漏问题。理解元类与注册表协同工作的原理,有助于开发者构建更灵活的Python架构。

weixin_32612263的博客 321

从“会聊”到“会干活”:LazyLLM + Skills 实战指南

很多团队做 Agent 都会经历同一个阶段:Demo 很快,落地很慢。新需求一来,就要重写 Prompt、重配工具、重测流程;场景一变,之前的能力几乎无法直接复用。看起来 Agent 已经能对话、能执行,但距离稳定交付,还缺一套可沉淀、可复用、可协作的能力组织方式。这正是 Skills 的价值:用自然语言描述任务能力,并结合可复用的文档与脚本,把能力封装成模块——像插件一样安装、复用、迭代。在 LazyLLM 最新版本(v0.7.5)中,你可以通过 LazyLLM 让自己的 Agent 快速接入 Skill

SenseCore的博客 695

免 Excel 熬夜:LazyLLM 框架构建自动化财报分析 Agent 的实用方法

财报分析 Agent 需整合文本解析、数值提取、趋势预测三大功能模块,避免人工操作 Excel 导致的重复劳动。分析引擎采用动态加载设计。财报 PDF 文档中的表格和文字段落需通过 OCR 技术转化为机器可读格式,同时保留原始排版逻辑。系统识别财报中的关键变化点,结合行业特性生成分析结论。对于重要指标异常,摘要中自动插入预警标识并给出可能的原因分析。对于关键指标,系统会比对历史数据和行业均值,偏差超过阈值时触发人工复核标记。当差异率超过 5% 时,自动生成数据疑问清单并标注可能出错的数据位置。

asfdsfgas的博客 345
上一篇: LazyLLM黑科技 | 拒绝机翻,如何实现中英双语的API文档?
下一篇: LazyLLM黑科技 | 你的框架想“隐身”?聊聊 LazyLLM 的配置体系设计哲学
商汤万象开发者
博客等级 码龄2年 174粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值