本文对比了Feat AI、Spring AI和LangChain4j三个AI框架的代码风格、Fat-Jar包尺寸及核心差异。通过Lambda链式配置、Spring风格组件组装和Builder模式,展示了不同框架在代码简洁性、可维护性和灵活性上的取舍。文章还探讨了流式输出实现方式,并提供了各框架适用场景建议,帮助开发者根据项目需求选择合适的AI框架。

图片

最近写了三个 AI 框架的对比示例,发现同样是调用大模型,代码风格差异还挺大的。


先上代码

Feat AI:链式 Lambda

ChatModel chatModel = FeatAI.chatModel(opts ->
    opts.model("Qwen3-235B-A22B")
        .system("你是一个乐于助人的助手。")
);

chatModel.chat("你好,请介绍一下 Feat AI 的特点。");

特点:Lambda 配置 + CompletableFuture,代码密度高。


Spring AI:Spring 风格

OpenAiApi openAiApi = new OpenAiApi("https://ai.gitee.com/", apiKey);

OpenAiChatOptions options = OpenAiChatOptions.builder()
    .withModel("Qwen3-235B-A22B")
    .build();

ChatModel chatModel = new OpenAiChatModel(openAiApi, options);

Prompt prompt = new Prompt("你好,请介绍一下 Spring AI 的特点。");
ChatResponse response = chatModel.call(prompt);

特点:显式组件组装,职责分离清晰。


LangChain4j:Builder 模式

ChatLanguageModel model = OpenAiChatModel.builder()
    .apiKey(apiKey)
    .modelName("Qwen3-235B-A22B")
    .baseUrl("https://ai.gitee.com/v1/")
    .build();

String response = model.generate("你好,请介绍一下 LangChain4j 的特点。");

特点:Builder 配置灵活,同步 API 简单直接。


Fat-Jar 包尺寸对比

实际构建后的体积差异很直观:

框架 Fat-Jar 大小 核心依赖
Feat AI 2.9 MB feat-core + fastjson
LangChain4j 11 MB 核心库 + OpenAI 适配器
Spring AI 31 MB Spring Framework + Reactor + Jackson

核心差异一览

维度 Feat AI Spring AI LangChain4j
代码行数 最少 中等 较少
JDK 要求 JDK 8+ JDK 17+ JDK 8+
Spring 依赖 必需
多轮对话 自动保持上下文 手动管理 手动管理消息列表
流式输出 回调监听 Reactor Flux 泛型回调

流式输出对比

流式输出是大模型交互的重要特性,能让用户实时看到生成内容。三个框架的实现方式差异明显:

Feat AI:Consumer 回调

chatModel.chatStream("请写一首关于春天的诗", chunk -> {
    System.out.print(chunk.getContent());  // 实时输出每个片段
});

特点:简单直接的回调式 API,符合 Java 8 习惯,无需额外学习成本。


Spring AI:Flux 响应式流

Flux<String> stream = chatModel.stream(prompt)
    .map(response -> response.getResult().getOutput().getContent());

stream.subscribe(System.out::print);  // 响应式订阅

特点:基于 Reactor 的响应式编程,适合已使用 WebFlux 的项目,但增加了学习曲线。


LangChain4j:StreamingResponseHandler

model.generate("请写一首关于春天的诗", new StreamingResponseHandler<>() {
    @Override
    public void onNext(String token) {
        System.out.print(token);  // 处理每个 token
    }
    
    @Override
    public void onComplete(Response<AiMessage> response) {
        System.out.println("/n生成完成");
    }
    
    @Override
    public void onError(Throwable error) {
        error.printStackTrace();
    }
});

特点:接口回调模式,提供完整的生命周期钩子(onNext/onComplete/onError),代码相对冗长。


流式实现对比

维度 Feat AI Spring AI LangChain4j
API 风格 Consumer 函数式 Reactor Flux 接口回调
代码量 最少(1 行) 中等(2-3 行) 较多(需实现接口)
学习成本 低(Java 8 标准) 高(需了解响应式) 中(框架特定接口)
错误处理 异常抛出 响应式错误流 专用 onError 回调
JDK 兼容 JDK 8+ JDK 17+ JDK 8+

怎么选?

场景 推荐
追求极简、JDK 8 项目 Feat AI
已用 Spring Boot + JDK 17+ Spring AI
Spring 项目但 JDK 8/11 Feat AI(Spring AI 要求 JDK 17+)
需要完整 AI 工具链 LangChain4j
Serverless / 边缘计算 Feat AI(包小启动快)

一点感想

写这三个示例的过程中,发现一个有趣的现象:三个框架的 API 设计都遵循"配置与执行分离",但实现路径截然不同。

Feat AI 选择 Lambda 链式,追求的是代码密度——用最少的字符表达最多的意图。这种风格在快速原型和脚本化场景中特别顺手。

Spring AI 坚持显式组装,体现的是设计显式化——每个组件的职责和依赖都清晰可见。这在大型团队协作中更有优势,代码的可维护性更高。

LangChain4j 采用 Builder 模式,平衡了灵活性和可读性——配置可以分步骤进行,也便于后续扩展。

这三种风格没有高下之分,只是不同的取舍。Feat AI 牺牲了部分显式性换取简洁;Spring AI 牺牲了部分简洁换取可维护性;LangChain4j 在两者之间找了个中间点。

这让我想起一个老话题:框架设计是价值观的外化。选择哪个框架,其实是在选择你认同的编程哲学。

但不管选哪个,它们都指向同一个方向——AI 调用应该像调用本地方法一样简单。这是 Java 社区在 AI 时代的共识,也是开发者最大的福音。


小白/程序员如何系统学习大模型LLM?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐