目录
1. 我一开始把AI应用开发理解得太简单了
2. 看完40条招聘信息,岗位需求高度集中
3. JD里的技术名词,不能只看表面
3.1 RAG不只是向量检索
3.2 Agent不是让大模型自由调用工具
3.3 MCP和Skill不只是另一种函数调用方式
3.4 Prompt不是写一段更聪明的话
4. 企业需要的不是一个AI功能,而是一条完整的交付链路
5. Java开发转AI,过去的经验并没有作废
6. 为了验证这些判断,我开源了一套Java AI业务应用
7. 分析完岗位后,我重新调整了学习优先级
7.1 企业级RAG
7.2 Agent、Workflow和MCP的边界
7.3 Prompt工程化
7.4 AI服务工程化
7.5 企业安全边界
8. 如果重新学习一次,我会按照这条路线
9. 总结
前言
刚开始转向 AI 应用开发时,我一直在思考一个问题:
企业招聘AI应用开发工程师,到底需要什么能力?
是会写 Prompt?
会调用大模型 API?
还是会使用 Spring AI、LangChain、Dify 这些框架?
最开始,我觉得只要能够接入大模型,实现一个聊天页面,再做一个简单的知识库,就算进入 AI 应用开发了。
但随着学习越来越深入,技术名词反而越来越多:
- RAG
- Agent
- Workflow
- MCP
- Skills
- Function Calling
- Multi-Agent
- AI Gateway
每一个概念看起来都需要学习,每一个框架似乎都不能错过。
可真正让我困惑的并不是“还有多少技术没学”,而是:
我现在学习的这些东西,真的是企业需要的吗?
为了弄清楚这个问题,我集中查看了北京地区“AI应用开发”相关招聘信息。
这次样本包括:
- 招聘列表信息 40 条;
- 其中相关岗位 38 条;
- 进一步查看岗位详情 8 条。
分析完这些岗位后,我得出了一个比“应该学习哪个框架”更重要的结论:
企业真正需要的,不是一个会调用大模型API的人,而是一个能够把AI能力接入业务系统,并且稳定完成交付的人。
这也让我重新理解了什么是 AI 应用开发。
1. 我一开始把AI应用开发理解得太简单了
我真正开始接触 AI 开发,是从调用大模型接口开始的。
最早的时候,我使用RestTemplate调用大模型 API。
需要自己处理:
- 请求地址;
- Header;
- Bearer Token;
- 请求参数;
- JSON序列化;
- 响应对象;
- 异常信息。
后来开始学习 Spring AI,原来一百多行的模型调用代码,可以被压缩到十几行。
当时我觉得:
只要能够调用模型、设计Prompt,再接入一个聊天页面,应该就算进入AI应用开发了。
但现在回头看,这只能算完成了第一步。
会调用大模型 API,就像传统后端开发中会调用一个 HTTP 接口。
它当然是必要能力,但很难单独构成岗位竞争力。
因为企业真正遇到的问题,并不是:
- 大模型接口怎么调用;
- Header应该怎么传;
- JSON应该怎么解析;
- 某个框架的API怎么使用。
企业真正关心的是:
- 内部文档怎样安全地交给大模型使用?
- 大模型怎样查询已有的业务系统?
- 不同用户的数据权限怎样隔离?
- Agent调用错误工具怎么办?
- 模型生成错误参数怎么办?
- 模型超时或者不可用怎么办?
- 一次调用消耗了多少Token?
- 模型成本越来越高怎么办?
- AI生成的内容是否可以直接执行?
- 系统怎样部署到企业内网?
- 出现问题后怎样定位和审计?
这些问题,才真正构成了企业 AI 应用开发。
2. 看完40条招聘信息,岗位需求高度集中
这批岗位来自不同类型的公司。
有的在做企业知识库,有的在做智能客服,有的在做金融投研,有的在做机器人,还有的在做安全分析。
业务方向虽然不同,岗位要求却高度集中在几个方向。
| 能力方向 | 常见关键词 | 企业希望解决的问题 |
|---|---|---|
| 企业知识库 | RAG、Embedding、向量数据库、文档解析、重排 | 让模型使用企业自己的知识 |
| 智能任务执行 | Agent、Workflow、Multi-Agent、ReAct | 让模型参与复杂业务流程 |
| 工具与系统集成 | MCP、Skills、Tool Calling、Function Calling | 让模型调用已有业务系统 |
| 效果优化 | Prompt、Few-shot、CoT、结构化输出 | 提高模型输出的稳定性 |
| 后端服务 | Java、Python、Go、微服务、接口开发 | 将AI能力封装成业务服务 |
| 工程治理 | 限流、熔断、超时、降级、日志、审计 | 保证AI服务安全、稳定、可控 |
| 部署交付 | Docker、Linux、Nginx、私有化部署 | 将系统真正部署到企业环境 |
在这批岗位中,高频出现的主要是:
- Prompt Engineering;
- RAG与企业知识库;
- Agent、Workflow与Multi-Agent;
- Python后端;
- Docker与Linux;
- 企业业务系统集成。
中高频出现的是:
- MCP、Skills和Function Calling;
- 向量数据库;
- 文档解析和数据清洗;
- LangChain、LangGraph和LlamaIndex;
- Java或者Go服务端开发。
反而纯模型训练、深度微调、算法论文等能力,并不是这批 AI 应用开发岗位的主要要求。
这并不代表算法和模型训练不重要。
而是因为:
AI应用开发工程师和大模型算法工程师,本身就是两个不同的岗位方向。
算法岗位更加关注:
- 模型结构;
- 数据训练;
- 模型微调;
- 推理性能;
- 算法效果。
AI应用开发岗位更加关注:
- 如何选择和接入模型;
- 如何连接企业数据;
- 如何编排业务流程;
- 如何控制模型风险;
- 如何将AI能力封装成稳定服务;
- 如何部署、监控和持续优化。
3. JD里的技术名词,不能只看表面
以前看招聘要求时,我很容易把注意力放在技术名称上。
看到 LangGraph,就想着要不要把它的 API 全部学一遍。
看到 MCP,就想着怎么快速写一个 MCP Server。
看到 Multi-Agent,就担心自己的项目里是不是也必须增加多个 Agent。
但重新分析这些岗位后,我开始关注另一个问题:
企业为什么会在JD中写下这个技术?
| JD关键词 | 容易产生的误解 | 企业真正考察的能力 |
|---|---|---|
| LangGraph | 会使用框架API | 状态管理、节点编排、失败恢复、执行链路可观测 |
| RAG | 会调用向量数据库 | 文档解析、切分、召回、重排、权限、评估、幻觉控制 |
| Docker | 会写Dockerfile | 环境隔离、服务交付、日志排查、资源限制、服务恢复 |
| MCP / Skill | 会注册一个函数 | Schema、参数校验、权限、幂等、审计、失败降级 |
| Prompt | 会写一段提示词 | 模板、版本、Few-shot、结构化输出、Badcase复盘 |
| Multi-Agent | 创建多个Agent | 任务拆解、角色边界、协作顺序、冲突处理、人工兜底 |
技术名称只是表象。
企业最终关心的,还是它能不能解决真实业务问题。
3.1 RAG不只是向量检索
招聘要求中写 RAG,企业真正考察的通常不只是能不能查询向量数据库。
一套完整的 RAG 系统至少涉及:
- 文档上传;
- 文档解析;
- 数据清洗;
- Chunk切分;
- Embedding;
- 向量召回;
- 元数据过滤;
- 重排;
- 权限控制;
- Prompt组装;
- 引用返回;
- 效果评估;
- 幻觉控制。
向量检索只是其中一个环节。
如果文档解析错误,后面的检索再准确也没有意义。
如果切片不合理,召回结果可能丢失上下文。
如果没有权限过滤,检索越准确,数据泄露的风险反而越高。
如果没有来源引用,用户也很难判断答案是否可信。
3.2 Agent不是让大模型自由调用工具
Agent确实可以根据任务,自主选择和调用工具。
但企业真正关心的是:
- Agent有哪些能力边界?
- 工具参数怎样定义?
- 怎样校验模型生成的参数?
- 工具调用失败怎么办?
- 怎样防止工具被重复调用?
- 怎样限制最大执行次数?
- 怎样控制整条任务的执行时间?
- Agent能不能调用敏感工具?
- 高风险操作是否需要人工确认?
如果只是把几个方法注册成 Tool,然后全部交给大模型决定,系统虽然看起来更加“智能”,但也会变得更加不可控。
在真实业务中,Agent通常需要和Workflow配合。
确定性较强的步骤,交给Workflow。
存在动态判断的局部环节,再交给Agent。
3.3 MCP和Skill不只是另一种函数调用方式
MCP和Skill真正解决的,是企业工具能力标准化的问题。
一个可以进入企业系统的工具,至少要考虑:
- 工具名称和描述;
- 输入参数Schema;
- 参数格式校验;
- 用户权限;
- 数据权限;
- 幂等设计;
- 调用超时;
- 重试策略;
- 操作日志;
- 安全审计;
- 异常降级;
- 版本管理。
大模型能不能发现工具,只是第一步。
工具能不能被安全、稳定、可追踪地调用,才决定它能不能真正进入业务系统。
3.4 Prompt不是写一段更聪明的话
Prompt Engineering也不仅是修改几句话。
真正进入项目之后,还需要考虑:
- Prompt模板;
- System Prompt和User Prompt的边界;
- Few-shot示例;
- 结构化输出;
- 输出结果校验;
- Prompt版本管理;
- Badcase复盘;
- 不同模型的兼容;
- A/B测试;
- 业务效果评估。
Prompt不是一次性写完的配置。
它更像是一段需要持续维护和优化的业务规则。
4. 企业需要的不是一个AI功能,而是一条完整的交付链路
一个知识库问答功能,可以很快做出Demo。
最简单的流程是:
上传文档 ↓ 文本切片 ↓ 向量化 ↓ 向量检索 ↓ 拼接Prompt ↓ 大模型回答这条链路能够证明方案可以实现。
但如果要真正上线,还会继续遇到很多问题:
- PDF、Word、Excel分别怎样解析?
- 扫描件和复杂表格怎样处理?
- 文档更新后,旧向量怎样清理?
- 不同部门能够看到哪些文档?
- 检索结果不准确怎样排查?
- 同一份文档召回太多内容怎么办?
- 模型答案怎样返回引用?
- 没有找到依据时,应该拒答还是自由生成?
- 敏感内容怎样脱敏?
- 调用过程怎样审计?
- 模型不可用时怎样降级?
- 应用怎样完成私有化部署?
从Demo到企业应用,中间隔着的并不是几个大模型API。
而是一整套工程问题。
一个相对完整的企业 AI 应用,通常需要经过下面这条链路:
业务需求 ↓ AI能力设计 ↓ Prompt / RAG / Agent / Workflow ↓ Java / Python后端服务 ↓ 数据库、知识库与业务系统 ↓ 权限、Guardrails与人工确认 ↓ 日志、审计、限流、熔断与降级 ↓ Docker / Linux / 私有化部署 ↓ 反馈、评估与持续优化模型只是整个系统中的一个能力组件。
在模型之前,需要理解业务问题、准备数据、设计知识和任务流程。
在模型之后,还需要完成:
- 系统集成;
- 权限控制;
- 异常处理;
- 服务治理;
- 部署运维;
- 效果评估。
5. Java开发转AI,过去的经验并没有作废
这是我分析完这些岗位后,最大的一个认知变化。
刚开始转 AI 时,我也担心过:
AI生态以Python为主,做了多年Java,现在转型是不是要全部重新开始?
但分析完实际岗位后,我发现并不是这样。
AI应用最终仍然需要变成企业服务。
而企业服务仍然离不开:
- 业务建模;
- 接口设计;
- 数据库设计;
- 缓存;
- 微服务;
- 权限;
- 并发;
- 稳定性;
- 系统集成;
- 部署上线。
这些恰恰是传统 Java 开发积累的能力。
| Java后端能力 | 在AI项目中的迁移 |
|---|---|
| Spring Boot | 构建AI业务服务和统一接口 |
| MySQL / PostgreSQL | 保存文档、任务、审计和业务数据 |
| Redis | 会话状态、缓存、记忆和分布式协调 |
| 微服务 | 对接企业内部多个业务系统 |
| API设计 | 封装模型、RAG、Agent和工具能力 |
| Gateway | 统一模型路由、鉴权、限流和统计 |
| 服务治理 | 处理超时、重试、熔断和降级 |
| Docker / Linux | 完成应用部署和环境交付 |
| 业务经验 | 判断哪些流程适合AI,哪些必须保持确定性 |
当然,Python仍然需要了解。
因为大模型 SDK、数据处理、RAG组件和部分Agent框架的Python生态更加丰富。
但这并不意味着Java开发必须放弃过去的技术体系。
在很多企业项目中,更合理的方式可能是:
- Java负责核心业务系统和企业级服务;
- Python负责模型能力、数据处理或者独立AI服务;
- 两者通过HTTP、RPC或者消息队列进行协作。
真正重要的不是语言之争。
而是能不能根据业务、团队和现有系统,设计出合理的技术边界。
对于Java开发来说,转向AI应用开发并不是完全从零开始。
更准确地说,是:
在原有后端工程能力上,增加一套大模型应用能力。
6. 为了验证这些判断,我开源了一套Java AI业务应用
看完岗位要求后,我不想再做一个只有聊天窗口的AI Demo。
因为单纯的聊天功能,很难体现 AI 进入企业业务后真正需要解决的问题。
因此,我开源了一个基于 Java 和 Spring AI 的项目:
Spring AI Business Copilot
它是一套可以直接运行、学习和二次开发的 Java AI 业务应用套件,目前包含:
- Data Copilot:自然语言查询数据库;
- Knowledge Copilot:企业知识库助手;
- Support Copilot:智能客服辅助。
项目关注的重点并不是“大模型接口怎么调用”,而是 AI 进入业务系统后必须面对的问题:
- SQL安全校验;
- 来源引用;
- 无依据拒答;
- 敏感信息处理;
- 人工确认;
- Guardrails;
- 操作审计。
三个模块虽然业务场景不同,但遵循的是同一个原则:
大模型可以负责理解、检索和生成建议,但关键业务必须由规则、系统和人共同控制。
这正是我在分析岗位时看到的“企业AI应用交付能力”:不仅要让功能跑起来,还要让它安全、可控、可确认、可追踪。
项目基于 Java 21、Spring Boot 4.1、Spring AI 2.0、PostgreSQL、pgvector、Flyway 和 Maven 多模块架构构建,并提供 Docker Compose 启动方式。
项目地址:
Spring AI Business Copilot - Gitee
如果你也是Java开发,正在学习Spring AI、RAG或者企业AI应用开发,可以直接克隆项目运行。
如果项目对你有帮助,也欢迎点一个 Star。
后面我会单独写一篇文章,详细介绍:
- 为什么要开源这个项目;
- 三个业务模块分别能学到什么;
- 为什么要加入Guardrails、人工确认和审计;
- Java开发应该按照什么顺序阅读和改造项目;
- 怎样从一个可运行项目逐步理解企业AI应用开发。
本篇暂时不展开
7. 分析完岗位后,我重新调整了学习优先级
分析完招聘要求,再结合实际开发过程,我重新调整了自己的学习重点。
7.1 企业级RAG
不只是理解Embedding和向量数据库,而是能够完整讲清楚:
- 文档怎样解析;
- Chunk怎样设计;
- TopK怎样选择;
- 相似度阈值怎样设置;
- 是否需要重排;
- 怎样做权限过滤;
- 怎样返回来源引用;
- 怎样评估召回效果;
- 怎样处理无依据问题;
- 怎样降低幻觉。
7.2 Agent、Workflow和MCP的边界
重点不是堆叠Agent数量,而是理解:
- 哪些流程适合固定编排;
- 哪些步骤适合交给Agent判断;
- 工具怎样注册和发现;
- 参数怎样校验;
- 工具失败怎样兜底;
- 敏感操作怎样授权;
- 哪些节点必须人工确认。
7.3 Prompt工程化
不仅要会写Prompt,还需要逐步补齐:
- Prompt模板;
- Few-shot;
- 结构化输出;
- 输出校验;
- 版本管理;
- Badcase复盘;
- 效果评估。
7.4 AI服务工程化
包括:
- 多模型接入;
- 模型路由;
- 超时和重试;
- 限流和熔断;
- Token与成本统计;
- 日志和链路追踪;
- Docker和Linux部署;
- Java业务系统与Python AI服务协作。
7.5 企业安全边界
这是我以前容易忽略,但现在越来越重视的部分:
- 输入校验;
- 输出校验;
- 敏感字段脱敏;
- 数据权限;
- 工具权限;
- 人工确认;
- 服务端状态管理;
- 全链路审计。
目前不需要投入大量时间的方向是:
- 纯模型训练;
- 深度微调;
- 复杂算法论文;
- 与目标岗位关系不大的泛前端技术;
- 为了追逐名词而堆叠更多框架。
对于AI应用开发岗位来说,掌握十个框架,不一定比完整交付一个业务模块更有价值。
8. 如果重新学习一次,我会按照这条路线
如果让我重新规划一次Java转AI的学习路线,我不会再从大量技术名词开始。
我会按照下面的顺序逐步推进:
大模型基础与API调用 ↓ Spring AI应用框架 ↓ Prompt与结构化输出 ↓ RAG企业知识库 ↓ Tool Calling ↓ Agent与Workflow ↓ MCP与Skills ↓ 模型治理与安全边界 ↓ 部署、评估和持续优化更重要的是,每学习一种能力,都要把它放进具体业务场景中思考。
学习RAG时,不只问“向量怎么查询”,还要继续问:
- 企业为什么需要它?
- 数据从哪里来?
- 权限怎样处理?
- 检索错误怎样定位?
- 怎样证明回答是可信的?
学习Agent时,不只问“工具怎么注册”,还要继续问:
- 为什么一定要让大模型决定?
- Workflow能不能完成?
- 调错工具会造成什么后果?
- 业务能够接受多大的不确定性?
学习MCP时,也不能只停留在Server和Client启动。
还需要继续考虑:
- 工具Schema;
- 权限;
- 幂等;
- 审计;
- 超时;
- 降级;
- 版本兼容。
只有这样,分散的技术点才会逐渐连接成一套完整的企业AI应用能力。
9. 总结
看完这40条北京AI应用开发招聘信息后,我终于明白:
企业并不缺少会调用大模型API的人。
真正需要的是能够把下面这些事情连接起来的人:
- 理解业务;
- 设计Prompt;
- 构建RAG;
- 编排Agent和Workflow;
- 接入企业系统;
- 控制权限和风险;
- 处理超时与异常;
- 完成部署和交付;
- 根据Badcase持续优化。
对于Java开发来说,转向AI应用开发并不是放弃过去,重新开始。
过去积累的Spring、数据库、缓存、微服务、系统集成、稳定性治理和项目交付经验,并没有失效。
它们只是需要被重新连接到AI场景中。
现在我对AI应用开发的理解是:
AI不是独立于业务之外的一套新系统,而是进入现有业务系统的一种新能力。
会调用模型,只是起点。
能够让它安全、稳定、可控地接入业务,并真正解决问题,才是AI应用开发。
下一篇,我会完整介绍自己开源的:
Spring AI Business Copilot
它不是一个只有聊天窗口的Demo,而是从自然语言查数、企业知识库和智能客服三个场景出发,尝试回答一个问题:
一个Java AI功能,从“可以运行”走向“可以接入业务”,中间还需要补齐什么?
如果你也在学习Java转AI、Spring AI或者企业AI应用开发,欢迎关注后续更新。
项目地址:
Spring AI Business Copilot - Gitee
如果项目对你有帮助,欢迎点一个 Star,这也是对开源项目最直接的支持。
📚 推荐专栏
🤖AI 技术专栏
从 0 到 1 学习 AI 应用开发,持续分享 Spring AI、RAG、Agent、企业级 AI 项目实战。
👉 https://blog.csdn.net/qupengkun/category_13184360.html
🚀AI 转型日记
记录一名 10 年 Java 开发者从传统后端转向 AI 应用开发的全过程。
👉 https://blog.csdn.net/qupengkun/category_13183497.html
👨💻 关于作者
QCoding
专注 AI 应用开发与 Java 技术实践。
持续分享 Spring AI、RAG、Agent、企业级 AI 项目实战、架构设计与职业成长。