Spring AI、LangChain4j 、LangChain 三者之间的区别

SpringBoot整合Langchain4j -langchain4j起步依赖--> 阅读详情
AI摘要

本文详细分析了Spring AI、LangChain4j和LangChain三者的区别。Spring AI是由Spring官方推出的项目,旨在将生成式AI能力整合进Spring生态系统,使开发者能通过熟悉的编程模型调用AI功能。文章重点比较了其与LangChain及LangChain4j在设计思路和技术实现上的差异。

Spring AI

Spring AI 是 Spring 官方团队推出的一个项目,旨在将 人工智能(AI),特别是 生成式 AI(Generative AI) 的能力无缝集成到 Spring 生态系统中。它的核心理念是让熟悉 Spring 的开发者能够用他们熟悉的编程模型(如模板、Repository、响应式编程等)来轻松地使用 AI 功能,而无需深入了解底层复杂的 AI 模型和 API。

您可以把它看作是 Spring 对 AI 时代的回答,类似于当年 Spring Data 统一了数据库访问,Spring AI 的目标是统一对各大 AI 模型提供商(如 OpenAI, Anthropic, Cohere 等)的访问。
在这里插入图片描述

Spring AI vs. LangChain:核心对比

在这里插入图片描述

Spring AI vs. LangChain4j:核心对比

在这里插入图片描述

Langchain4j框架-Java程序员的大模型框架 LangChain4j 可以理解是Java版本的LangChain,是一个旨在简化将大型语言模型(LLM)集成到 Java 应用程序中的框架。它帮我们封装了不同LLM 提供商(如 OpenAI、Google Vertex AI)的专有API方便在不同 LLM 或嵌入式存储之间切换,而无需重写代码。该项目于 2023 年初启动,旨在填补 Java 生态系统中缺乏 LLM 库和框架的空白。 阅读详情

相关推荐

大模型开发之Langchain4j(看这一篇就够了)

本文介绍了SpringBoot与Langchain4j结合开发AI应用的技术方案。首先阐述了大模型的定义、特点及其在NLP、CV等领域的分类,包括通用(L0)、行业(L1)和垂直(L2)三个层级,并列举了大语言模型的主要应用场景。随后对比了Java生态的三大AI开发工具:LangChain4J(功能全面,支持15+主流模型)、Spring AI(深度集成Spring生态)和Spring AI Alibaba(对接阿里云大模型)。重点分析了LangChain4j作为Java专用LLM集成库的核心功能,包括多模

m0_74436895的博客 4445

Java开发者LLM实战——使用LangChain4j构建本地RAG系统

RAG(Retrieval-Augmented Generation)的核心思想是:将传统的信息检索(IR)技术与现代的生成式大模型(如chatGPT)结合起来。具体来说,RAG模型在生成答案之前,会首先从一个大型的文档库或知识库中检索到若干条相关的文档片段。再将这些检索到的片段作为额外的上下文信息,输入到生成模型中,从而生成更为准确和信息丰富的文本。RAG的工作原理可以分为以下几个步骤:1.接收请求:首先,系统接收到用户的请求(例如提出一个问题)。2.信息****检索(R)

京东科技开发者 3539

个人总结 - LangChain4j应用(完结)

LangChain4j是一个旨在简化大语言模型(LLMs)与Java应用程序集成的框架。 主要介绍:Classification、Image Models、Spring Boot 集成、Logging、Observability、Integrations(集成)

向前 3523

Java程序员的AI之LangChain4j(一)从零到企业级AI开发

让JAVA程序员更快的理解AI接入的LangChain4j

qq1071643762的博客 1万+

深度剖析:Spring AI 与 LangChain4j,谁才是 Java 程序员的 AI 开发利器?

首先介绍 AI 时代 Java 开发框架选择背景,接着对比两者功能特性(Spring AI 的生态集成与标准化设计、LangChain4j 的多模型适配与提示工程)、应用场景(企业级系统改造与创新产品开发)、开发体验(学习成本与调试工具)、生态扩展(Spring 商业支持与 LangChain4j 开源社区)、性能安全(企业级优化与自主安全实现)及成本趋势(短期投入、长期回报与技术演进),最后给出选型建议与混合架构方案。

博客 5445

IC617多线程仿真卡死?手把手教你用TigerVNC替换解决ADE XL Explorer问题(附Manjaro/Centos8实测)

本文针对IC617在Manjaro、CentOS 8等高版本Linux系统中运行ADE XL Explorer进行多线程仿真时出现的卡死问题,提供了详细的诊断与解决方案。文章指出问题根源在于软件内置的旧版VNC组件不兼容,并手把手指导用户通过使用TigerVNC替换原组件来彻底解决,附有在Manjaro和CentOS 8系统上的实测步骤与验证方法。

hill8的博客 774

LangChain4j系列:带你入门LangChain4j框架

本文所有示例均在 langchain4j 0.31.0 版本之上进行,langchain4j也是在快速发展的阶段。

2301_81940605的博客 1万+

别再瞎调了!STM32 Systick延时函数避坑指南(正点原子、野火、慧净代码对比)

本文深入解析STM32 Systick延时函数的实现差异与优化策略,对比正点原子、野火、慧净等主流方案的优缺点。针对us和ms级延时精度问题,提供避坑指南和高级优化技巧,帮助开发者根据项目需求选择最佳方案,提升嵌入式系统的定时控制精度。

weixin_28717807的博客 340

Spring AI 与 LangChain4j 对比

SpringAI与LangChain4j对比分析 摘要:本文对比了Java生态中两大AI集成框架SpringAI和LangChain4j的核心差异。SpringAI基于Spring生态,采用便携式服务抽象(PSA)和依赖注入设计,强调配置驱动和框架集成;LangChain4j则提供统一API与模块化代理,通过显式构建者模式和动态代理实现声明式开发。在RAG实现上,SpringAI采用ETL管道模式,LangChain4j则提供一体化摄取器;工具调用方面,SpringAI依赖SpringBean管理,Lang

m0_68880377的博客 1517

别再手动画柜子了!用EPLAN导入STEP模型,5分钟搞定一个标准机柜

本文详细介绍了如何利用EPLAN Pro Panel的3D布局功能,快速将STEP模型转化为智能机柜宏,大幅提升电气工程设计效率。通过实战步骤解析,包括模型导入、智能解析、安装面定义及拼柜技巧,帮助工程师5分钟内完成标准机柜设计,避免传统手动建模的尺寸偏差问题。

weixin_26875109的博客 434

拯救者R9000P-2021-AMD5800H黑苹果EFI配置与优化指南

本文详细介绍了在联想拯救者R9000P 2021款(搭载AMD锐龙7 5800H处理器)上安装和优化黑苹果系统的完整指南。内容涵盖EFI配置、OpenCore引导设置、关键驱动(如NootedRed核显驱动)的调整,以及安装后的性能调优与常见问题解决,旨在帮助开发者和极客用户在这款游戏本上搭建稳定可用的macOS开发环境。

weixin_29291069的博客 285

LangChain4j 与 Spring AI 的关系、区别及优缺点

选型建议若你是Spring Boot 技术栈,开发企业级项目、追求快速落地和工程化能力,优先选择 Spring AI;若你是非 Spring 生态项目,或对LLM 流程有高度定制化需求(如复杂 Agent、精细 RAG 优化),优先选择 LangChain4j;若你在 Spring AI 项目中遇到功能瓶颈,可整合 LangChain4j 作为补充,兼顾生态优势和定制化能力。核心差异提炼。

朱朱博客,分享技术 1155

从零开始:在CentOS服务器上部署R Shiny应用的完整指南

本文提供了一份在CentOS服务器上部署R Shiny应用的完整实战指南。内容涵盖从创建专用用户、安装R语言环境、配置Shiny Server,到最终部署应用并配置防火墙的全过程。针对部署过程中常见的权限、端口及依赖问题,给出了详细的解决方案,旨在帮助数据分析师和开发者将本地Shiny应用稳定、安全地发布至生产环境。

weixin_29079743的博客 135

Spring-AI vs LangChain4J:Java生态的AI框架选型指南

最近在搞AI相关的项目,发现Java生态下有两个比较主流的框架:Spring-AI和LangChain4J。说实话,刚开始我也挺纠结选哪个,毕竟两个看起来都挺不错的。今天就来聊聊这两个框架的区别,以及在实际项目中怎么选。

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 4万+

【树莓派安装Homeassistant及基本配置】

时隔一年,我又重新开始玩Homeassistant,发现其中奥妙无穷,惊喜不断。在我浅薄的认知中要学好嵌入式,必须玩过Homeassistant,并且玩出自己的名堂!因为这是最贴切实际的生活应用没有之一,每月更新使得唯有活水来;拥抱大千使得永葆青春的活力;鬼斧神工的操作精彩纷呈,可以堪称软件与硬件的完美落地!

vor234的博客 1万+

Flutter框架GetX从入门到精通第二篇:路由管理-告别繁琐的Navigator

Flutter框架GetX从入门到精通第二篇:告别繁琐的Navigator。本系列将带你从零开始,一步步掌握 GetX 框架的核心功能与实战技巧。

鹏多多的博客 170

LangChain4j比SpringAI强在哪?一文读懂

LangChain4j 和 Spring AI 是 Java 生态中实现大模型应用开发的两个最重要的框架,但二者的区别是啥?生产级别又该使用哪种框架?令很多人犯了难,所以本文就来浅聊一下,希望给大家在技术选型时有一个简单的参考。LangChain4j 和 Spring AI 的功能是比较类似的,甚至两者可以配合使用,例如使用 Spring AI 实现 MCP 服务器端,再使用 LangChain4j 实现 MCP 客户端调用 Spring AI,二者可以无缝对接。那二者的区别是啥呢?总体来说,

2401_85375298的博客 2556

FlashBootloader01-基于UDS的Flash Bootloader【架构篇】

文章目录1 Flash Bootloader的依赖项2 Flash Bootloader中使用的UDS的主要功能3 Flash Bootloader更新固件3.1 初始化MCU3.2 刷写流程 1 Flash Bootloader的依赖项 通常Flash Bootloader由以下四方面组成: UDS协议 上位机「编写Bootloader Sequence」 通信驱动(如CAN ) Flash Driver 2 Flash Bootloader中使用的UDS的主要功能 1. 10 02服务 客户端

3591

LangChain4j vs Spring AI

核心差异:LangChain4j是“大模型应用的核心能力库”,灵活但需自行处理工程化;Spring AI是“Spring生态的AI工程化框架”,标准化但绑定Spring;选型核心:看“生态绑定”和“逻辑复杂度”——非Spring/复杂逻辑选LangChain4j,Spring生态/工程化需求选Spring AI;最佳实践:两者可结合使用,用LangChain4j封装核心大模型逻辑,用Spring AI提供工程化底座(监控、容错、配置)。

jianzheng_xue的博客 908

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Spring-AI和LangChain4j区别

你的项目是纯 Spring Boot项目。你喜欢ChatClient这种流式构建 API。你希望由 Pivotal/Spring 官方团队背书,与 Spring Cloud 等组件深度集成。你习惯用FunctionBean 来定义工具。你还在观望,或者项目可能不用 Spring(比如用 Quarkus)。你需要对接一些冷门或特殊的模型/向量库(LangChain4j 目前支持的组件库比 Spring AI 多很多)。你喜欢 @AiService声明式接口。

sww_1026的博客 1054

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

spring Ai Alibaba 和 langChain4j的区别

Spring AI Alibaba:2024 年由 Spring 中国 & 阿里云联合开源,目标是“让 Java 企业 5 分钟接入通义/百炼”,属于 Spring 官方生态的“AI 子项目”,直接对标 Spring Data、Spring Cloud。需要先吃透“Chain、Agent、Tool、Memory”整套概念,例子多、社区活跃(Discord 日活 2 k+),GitHub issue 回复平均 4 小时;),支持“让 LLM 自己决定调哪个 Java 方法”,并带循环、条件分支、异常重试。

weixin_44984196的博客 1471

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Java AI 框架大比拼:Spring AI 与 LangChain4j 的挑战与优势

【摘要】本文对比分析Java生态两大AI框架:Spring AI和LangChain4j。Spring AI提供简洁API,适合快速集成基础AI功能;LangChain4j支持多步骤推理、智能Agent和自定义工作流,适合复杂应用。关键差异体现在:Spring AI与Spring生态深度集成但功能有限,LangChain4j具备记忆管理、工具集成等高级特性但学习成本较高。选型建议:轻量级应用选Spring AI,复杂智能系统推荐LangChain4j。开发者应根据项目复杂度、扩展需求和技术栈进行选择。

JEECG官方博客 2073

【Spring AI 】----LangChain4j 与 Spring AI 的关系、区别及优缺点

选型建议若你是Spring Boot 技术栈,开发企业级项目、追求快速落地和工程化能力,优先选择 Spring AI;若你是非 Spring 生态项目,或对LLM 流程有高度定制化需求(如复杂 Agent、精细 RAG 优化),优先选择 LangChain4j;若你在 Spring AI 项目中遇到功能瓶颈,可整合 LangChain4j 作为补充,兼顾生态优势和定制化能力。核心差异提炼。

记录生活 869

【Spring AI & LangChain4j 基础篇】LangChain4j快速上手:从核心特性到与Spring AI的选型边界,一篇搞定

本文对比了Java大模型开发框架LangChain4j和Spring AI的核心差异。LangChain4j轻量灵活,专注大模型工作流,适合快速开发Demo和小型项目;Spring AI深度集成Spring生态,提供标准化接口和企业级特性,适合复杂场景。通过代码示例展示了两者的实现方式,并提出了互补使用方案:Spring AI管理大模型,LangChain4j扩展业务逻辑,兼顾标准化和灵活性。开发者在选型时应根据项目规模、团队技术栈等综合考量。

m0_58782205的博客 1578

LangChain4j vs Spring AI:JavaAI框架巅峰对决,谁才是你的最佳选择?

LangChain4j与Spring AI对比摘要(148字) LangChain4j是专业化AI工具库,提供链式API、智能体工具和记忆管理等精细化功能,适合复杂AI应用开发,学习曲线较陡。Spring AI作为Spring生态的官方集成框架,采用声明式API,与Spring Boot无缝兼容,简化AI能力调用,适合快速对接主流模型。核心差异:LangChain4j侧重灵活构建复杂工作流,Spring AI强调标准化集成。选择建议:复杂智能体选LangChain4j,Spring项目快速集成选Spring

纳兰青华的博客 1866
上一篇: bank of river 和 bank of china 中的bank含义不一样。现代主流大模型是如何对bank的词向量进行计算并存储的?
下一篇: 提示词和用户的提问之间的关系?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值