从Java后端到AI应用开发,我这两年做了什么

💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通

💪🏻 2. AI编程变现手册,从学会AI编程到实现变现都可以

😁 3. 毕业设计专栏,毕业季咱们不慌忙,几千款毕业设计等你选。
❤️ 4. DeepSeek+RPA提效从入门到变现实战

❤️5. 欢迎访问我的免费工具站

❤️ 6. Java高并发编程入门,打卡学习Java高并发。 Java高并发编程入门

文章目录

大家好,我是码农飞哥。

写了8年Java,CRUD写到手指发麻,微服务拆到天昏地暗,分库分表搞到怀疑人生。2024年初,我做了一个决定------从传统Java后端,转去做AI应用开发。

也不是什么深思熟虑的结果。就是项目上需要有人把大模型落地成产品,领导问了一圈没人接,最后问到我头上。我琢磨了一晚上,想着反正CRUD也写腻了,干脆试试。

然后我的技术栈就从Spring Boot + MySQL,变成了RAG + Agent + MCP + LangChain4j + Elasticsearch向量检索。

两年了。今天想跟大家掏心窝子聊聊------AI应用开发到底在干嘛?Java程序员转这个方向靠不靠谱?


AI应用开发 ≠ 调API

先说一个最大的误解。

每次跟朋友说我在做AI应用开发,对面的反应基本都是:

"不就是调一下大模型的API,套个壳嘛?"

说实话,没做之前我也这么想。做了之后我只想说------你来试试?

一个能上线的AI应用,大概是这么个结构:

四层,每一层都是坑。

就说一个最常见的需求:"用户上传一个PDF,AI能回答里面的问题"。听起来不难吧?

背后的链路是这样的:文档格式识别 → 内容解析 → 文本切分 → 向量化 → 存入向量库 → 用户提问时检索 → 检索结果精排 → Prompt拼装 → 调LLM → 流式输出。十几个环节,哪个崩了用户体验都是灾难

这不是写几行Python调LangChain就完事的,这是实打实的系统工程活。

而搞系统工程这件事,Java程序员还真不虚谁。


两年干了什么?说说几个硬骨头

RAG:看起来最简单,坑最深

RAG这个词现在烂大街了------让AI回答问题之前先去知识库里翻翻,带着参考资料再回答。原理一句话就说清楚了,但做起来,真的想骂人。

文档解析这一关就差点把我干趴下。

用户传上来的文件什么妖魔鬼怪都有------PDF、Word、Excel、PPT、图片,甚至一些你听都没听过的格式。每种格式的解析方式完全不同。

PDF是重灾区。文字版的还好,有PDFBox能对付;但扫描件呢?纯图片,得上OCR。更离谱的是有些论文排版是两栏的,普通解析出来直接乱码------左边半句拼右边半句,读起来像密码电报。

搞到最后,光文档解析我就弄了十来种策略,用策略工厂模式管理。不同的文件格式、不同的内容特征,走不同的解析管道。这套东西调了将近一个月才稳定下来。

然后是切分。 文档解析完了是长文本,得切成小块才能检索。问题是------切多大?按什么维度切?

切太大,检索的时候不精准,一大坨文本里混着你要的和不要的;切太小,上下文全丢了,检索出来的片段看都看不懂。

我最后搞了一个分层的切分架构,十几种切分策略:固定长度、按段落、按句子、LLM语义切分、按目录结构切分......不同类型的文档用不同的策略组合。没有万能方案,全靠case by case地调。

最后是检索。 你以为做完Embedding存进向量库就完了?too young。

只用向量检索(余弦相似度)效果就那样------有些场景,传统的BM25关键词检索反而更准。最后我是三种检索模式并行跑(向量、全文、混合),再叠Rerank精排模型做二次排序,效果才勉强拉上来。

有人问RAG难不难,我的回答是:跑通Demo一周够了,做到能上线至少三个月。 中间全是细节上的死磕。

Agent:让AI不只是"你问我答"

RAG解决了"AI能回答知识库里的问题",但用户的需求远不止这个。

"帮我根据这份资料生成一套题目"------这就不是简单问答了,AI得能理解意图、规划步骤、调用工具、拼装结果。这就是Agent干的活。

我设计的思路是:不是所有请求都需要Agent,大部分普通对话直接调LLM就行,别杀鸡用牛刀。

所以我在调LLM之前加了一道前置过滤:先查静态问答库,再匹配知识库,如果这两步就能回答,直接返回,根本不用走到LLM那一步。这个机制上线之后,LLM调用量直接砍掉一大截,省了不少token费。(别问多少,问就是肉疼。)

真正需要Agent介入的复杂请求,才交给LLM做场景规划------判断用户意图,拆解成子任务,再分发到对应的处理器去执行。

说白了,Agent的核心思想就一句话:让LLM只干该干的事,能不调就不调。

MCP:让AI从"能说"变成"能做"

MCP(Model Context Protocol)是Anthropic搞的一个标准协议,你可以理解成AI世界的"USB接口"------不管什么外部工具,只要实现了这个协议,AI就能即插即用地调用。

在Java里集成MCP,核心就三件事:发现工具(listTools)、调用工具(callTool)、管好连接的生命周期。

概念不复杂,但生产环境里的坑不少。SSE长连接隔三差五断掉要做自动重连,工具调用超时了要有降级方案,不同场景需要动态切换MCP服务配置......这些东西不写到线上你根本不知道有多烦。


Java程序员搞AI应用,靠谱吗?

两年干下来,我的感受是:不光靠谱,某些方面还挺有优势的。

首先是工程化能力。策略模式、工厂模式、责任链------这些Java程序员写了好多年的东西,在AI应用里全都能用上。你让一个写Python的人从头搭一套策略工厂来管十几种文档解析方案,他大概率要抓狂。而Java程序员?这不就是我们的日常吗。

其次,真正的ToB项目、大厂的生产系统,后端几乎还是Java的天下。Python写个Demo确实快,但要扛并发、要上微服务、要保证7×24稳定运行------Java还是那个最稳的选择。

再加上LangChain4j这个框架现在已经比较成熟了,RAG、Agent、工具调用都支持,API设计也是Java程序员熟悉的风格,上手门槛不高。

当然我得说句公道话------AI生态这块,Python确实遥遥领先。 论文实现、模型库、数据处理的工具链,Python的丰富程度不是Java能比的。做算法研究、搞模型训练,Python是唯一选择,这没什么好争的。

但反过来想,Python做AI应用开发的教程满大街都是,Java的呢?你搜搜看,几乎找不到成体系的内容。

稀缺就是机会。这个坑,我来填。


接下来的事

从今天开始,这个号就干一件事:

不扯理论、不搬论文,只聊我在实际项目里踩过的坑和跑通的方案。

后面会持续更新这几个方向:

  • RAG实战:文档解析、切分策略、检索方案、精排调优------每个环节怎么从"能用"到"好用"
  • Agent实战:工作流引擎怎么设计、策略路由怎么做、任务规划和MCP集成的细节
  • Java AI开发:LangChain4j怎么用、MCP SDK有哪些坑、跟Spring AI比怎么选
  • AI编程提效:Claude Code、Cursor这些AI编程工具,在日常开发中到底能帮多少忙
相关推荐
大龄码农-涵哥2 小时前
Spring Boot项目集成AI对话:使用Spring AI打造智能客服
人工智能·spring boot·spring
森林猿2 小时前
IDEA-控制台乱码
java·ide·intellij-idea
A-Jie-Y2 小时前
JAVA设计模式-工厂方法模式
java·设计模式
胡童嘉2 小时前
C语言考研《谭浩强C语言》教材第一章理论+实践汇总
c语言·开发语言·考研
Jmayday2 小时前
Pytorch:神经网络基础
人工智能·pytorch·神经网络
千云2 小时前
问题排查报告:一次因元空间溢出导致的CPU飙升与接口超时
java·后端
openKylin2 小时前
从单点登录到全域安全,openKylin支撑国家电投数字身份认证创新实践
大数据·人工智能·安全
初心未改HD2 小时前
Go语言Slice切片底层原理深度解析
开发语言·golang
Full Stack Developme2 小时前
MyBatis-Plus 注解教程
java·spring·mybatis