别再只会CRUD了!Java程序员用Spring AI转型AI Agent开发,薪资翻倍不是梦!

别再只会CRUD了!Java程序员用Spring AI转型AI Agent开发,薪资翻倍不是梦!

1 概 述

随着AI大模型底层技术的不断突破,大模型解决实际问题的能力也在千行百业展现。在此,我们听到最多的一个词就是“AI Agent”,那什么是AI Agent, 什么是Agent开发,以及与Agent开发相关的一些技术栈,本文将以一个JAVA应用开发工程师的视角来一探究竟。

1.1 什么是AI Agent

根据百度翻译,Agent 的中文意思是“代理人”,因此从字面意义来讲,AI Agent就是 AI代理人 的意思。结合目前AI主要指大模型技术,尤其是大语言模型技术(Large Language Model,LLM),因此,AI Agent又可进一步理解为 大语言模型的代理。具体的,AI Agent是指基于人工智能大模型,如DeepSeek-R1,开发的软件应用,它作为大模型的代理,接收用户的自然语言指令,配合大模型来完成特定的业务场景功能。

1.2 AI Agent开发现状

目前,AI Agent的主流开发语言是Python,这到不是说其它开发语言无法进行基于大模型的应用研发,而是Python语言在前期以模型和算法研发为主的AI领域,积累了大量生态,这样用Python来开发相对更方便一点。比如,目前AI Agent开发的主流框架是LangChain,它就是一个面向Python的开发框架。

而在JAVA领域,Spring官方也借鉴LangChain相应推出了一个大模型应用开发框架Spring AI,同时,国内阿里进一步对该框架作升级,推出了Spring AI Alibaba框架,以更符合国内的Agent开发生态。由于自互联网发展以来,JAVA技术栈积累了最大的应用开发生态系统(不管是人员规模,还是技术生态),相信在不久的将来,AI Agent的研发人员中,JAVA开发人员会占据重要的席位。

再说就业市场,Agent的研发,是目前最热门的方向(没有之一),类似于早年的移动互联网,而且整个行业处于较早期阶段。虽说现在经济大环境不好,企业人力资源在收缩,但Agent研发方向的岗位,还是很多的,而且普遍薪资偏高,如下是从猎聘网搜到的Agent研发岗位。

1.3 AI Agent开发概述

Agent与大模型之间的交互,主要围绕着一个对话接口(以下称chat接口)展开,如下为DeepSeek类模型提供的chat接口,且各大模型厂家的chat接口格式都大同小异,都是参照的openai接口格式。

因此,对于Agent开发者来说,其一个核心工作就是如何调用chat接口,以让大模型来作正确的回答。但大模型并不总是能正确回答用户的提问,这是由大模型本身的局限性决定的:

(1)没有记忆

大模型的chat接口是无状态的,因此与大模型的每次交互都是独立的,大模型本身不会在两次对话间保存上下文信息。

(2)知识有限

大模型本身的知识储备,只代表了它在训练期间的知识输入。一旦提问范围超出了它的知识储备,它无法正确回答用户的提问。

(3)无法调用外部资源

大模型本身,只能回答用户的提问,而无法直接调用外部的资源,去增强模型的知识储备或执行用户特定的指令。

对于以上大模型在回答问题时的局限性,在Agent端各有相应的解决方案来增强模型的能力。

对于大模型没有记忆的问题,可以在Agent端做session处理,且保存对话历史记录。每次与大模型交互时,把当前对话session内合适的对话记录,连同当次提问一起发送给大模型,这样在当次对话中,大模型在作回答时,就能和历史的记录关联起来。

对于大模型知识有限的问题,有专门的RAG技术(Retrieval-Augmented Generation,检索增强生成),该技术简单来说,就是在Agent端构建一个知识库,在每次Agent向大模型发起提问时,会先去这个知识库中搜索出相关性较高的知识,并把这些知识与原始的用户提问一起发送给大模型,大模型会结合所发送的额外知识来回答用户的提问。

RAG技术典型的技术架构如上图所示,它包含两个过程:(1)知识的向量化,(2)提问的相似性检索。首先,在知识库构建阶段,把知识向量化成一个多维数组,存储到向量库中(也会存储向量化前的知识信息)。接着,在用户提问时,将用户的提问以同样的规则进行向量化,向量化后的提问,发给向量库去作相似性检索(其实就是向量间的距离计算和排序),搜索出相似性较高的知识。这些相似的知识信息,会连同原始用户提问一起发送给大模型作处理,以得到合适的回答。

对于无法调用外部资源的问题,可以让Agent来执行真正的资源调用,并把调用的结果通过chat接口反馈给大模型,这样就相当于大模型间接拥有了调用外部资源的能力。但前提是,Agent要告诉大模型,它所能调用的外部资源有哪些,以及调用方式。告知的方式,也是通过chat接口把资源信息连同原始提问发送给大模型,大模型若需要调用外部资源来回答用户的提问,则会在返回中通过特定的协议,指示Agent去作外部资源的调用。基于该原理,有专门的Function Call、MCP(Model Context Protocol)等技术来支撑大模型对外部资源的调用能力。

2 JAVA开发AI Agent

如前文所述,目前与大模型对接的Agent开发,主要还是基于Python技术栈。但由于JAVA在互联网时代积累了大量的用户规模和技术生态,以及大模型的对接本身与语言无关,随着开源社区和互联网巨头(如阿里)的引领,用JAVA来开发Agent会逐渐增多。

2.1 JAVA开发框架

Spring AI是JAVA开发AI Agent的基础代码框架,由Spring官方负责维护。国内阿里,在此基础上,结合自身AI生态,又发展了Spring AI Alibaba,极大方便了国内JAVA开发人员。两者分别于2025年5月和6月发布了首个GA版本,即正式版本。

Spring AI定位为AI Agent开发的底层框架能力,提供了Agent开发所需的底层抽象,如模型通信、提示词、检索增强生成、对话记忆、工具调用、模型上下文协议等。Spring AI Alibaba依赖于Spring AI框架,在实际应用层面作了更高层级的封装,同时深度集成了阿里内部的一些产品和服务,如阿里云百炼平台。在实际项目中,推荐用Spring AI Alibaba,它对国内用户更为友好,提供了详尽的中文学习文档,中文讨论社区,以及国内的AI生态支持。

2.2 典型开发案例

本文基于Spring AI Alibaba对Agent开发作简单探索,代码见:https://gitee.com/gbs-blog/llm-app-sample

那么,如何系统的去学习大模型LLM?

作为一名深耕行业的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。

所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。

由于篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~

👉大模型学习指南+路线汇总👈

我们这套大模型资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。

在这里插入图片描述


在这里插入图片描述

👉①.基础篇👈

基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。

在这里插入图片描述

👉②.进阶篇👈

接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。

在这里插入图片描述

👉③.实战篇👈

实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。

在这里插入图片描述

👉④.福利篇👈

最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到ZEEKLOG,朋友们如果需要可以微信扫描下方ZEEKLOG官方认证二维码免费领取【保证100%免费】

相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!

Read more

【Linux】线程池(一)C++ 手写线程池:基于策略模式实现高性能日志模块

【Linux】线程池(一)C++ 手写线程池:基于策略模式实现高性能日志模块

文章目录 * 池化技术 * 线程池的日志模块 * 日志与策略模式 * 日志模块 * 两个核心问题 * 设计文件等级 * 刷新策略 * 获取日志时间 * logger类实现 * 内部类LogMessage实现 * 日志刷新流程图及源码 池化技术 池化技术可以减少很多的底层重复工作,例如创建进程、线程、申请内存空间时的系统调用和初始化工作,例如线程池,先预先创建好一些线程,当任务到来时直接将预先创建好的线程唤醒去处理任务,效率会远远高于任务到来时临时创建线程。例如内存池,但我们要用1mb空间时内存池会一次性申请20mb空间,效率会远远高于用多少空间申请多少空间(申请空间会调用系统调用)。 线程池是执行流级别的池化技术,STL中的空间配置器和内存池是内存块管理级别的池化技术。 线程池的日志模块 下⾯开始,我们结合我们之前所做的所有封装,进⾏⼀个线程池的设计。在写之前,我们要做如下准备。 * 准备线程的封装 * 准备锁和条件变量的封装 * 引⼊日志,对线程进⾏封装 日志与策略

By Ne0inhk
【C++初阶】C++入门相关知识(2):输入输出 & 缺省参数 & 函数重载

【C++初阶】C++入门相关知识(2):输入输出 & 缺省参数 & 函数重载

🎈主页传送门:良木生香 🔥个人专栏:《C语言》 《数据结构-初阶》 《程序设计》《鼠鼠的C++学习之路》 🌟人为善,福随未至,祸已远行;人为恶,祸虽未至,福已远离 上期回顾:在上一篇文章中,我们对C++进行了初步的认识,学习了C++的发展历史,第一个C++程序以及命名空间,我们知道,C++的出现就是为了改进和完善C语言的不足,使得程序更加高效,程序员编写起来更加方便快捷,那么本篇文章我们继续往下认识C++的入门相关知识 目录 一、C++的输入&输出 1.1、核心载体:头文件 1.2、核心的IO对象:cin与cout 1.2.1、std::cin 标准输入流 1.

By Ne0inhk
二叉搜索树深度解析:从原理实现到算法应用----《Hello C++ Wrold!》(18)--(C/C++)

二叉搜索树深度解析:从原理实现到算法应用----《Hello C++ Wrold!》(18)--(C/C++)

文章目录 * 前言 * 二叉搜索树(二叉排序树或二叉查找树) * 二叉搜索树的模拟实现 * 二叉搜索树和有序数组二分查找的比较 * 两个搜索模型 * 作业部分 前言 二叉搜索树(Binary Search Tree,简称 BST)作为一种重要的树形数据结构,在计算机科学领域有着广泛的应用。它凭借其基于键值的有序性,能够高效地支持数据的插入、删除和查找等操作,是许多复杂算法和系统的基础组件。 本文将围绕二叉搜索树展开全面而深入的探讨。首先,我们将从其核心定义和关键性质出发,帮助读者建立对二叉搜索树的基本认知,包括其通过中序遍历可得到升序序列这一重要特性。随后,详细剖析二叉搜索树的各项基本操作,如插入、查找、删除等,并通过 C++ 代码实现进行具体演示,同时对比递归与非递归实现方式的异同。 此外,我们还将对二叉搜索树与有序数组的二分查找进行对比分析,明确各自的优势与局限。最后,结合一系列经典的算法题目,如二叉搜索树与双向链表的转换、根据遍历序列构造二叉树、二叉树的非递归遍历等,展示二叉搜索树在实际问题中的应用,帮助读者巩固所学知识,提升解决复杂问题的

By Ne0inhk
【C++笔记】STL详解:vector容器的实现

【C++笔记】STL详解:vector容器的实现

前言:         在学习了vector类的基本使用的前提下,本文将重点分析vector类的常用接口及其应用实现。          一、vector成员变量          vector本质上是一个动态数组,通过原生指针来实现底层维护,为了使得STL接口调用的统一性,我们需要将原生指针重命名为迭代器。          其核心目的是:将数据结构(容器)与操作(算法)分离,并通过一种统一的接口(迭代器)将它们粘合在一起。          成员变量分析 template <class T> class vector { public: // 将原生指针重命名为迭代器,实现接口统一 typedef T* iterator; typedef const T* const_iterator; private: iterator _start; // 指向目前使用空间的头 iterator _finish; // 指向目前使用空间的尾 iterator _end_of_storage; // 指向目前可用空间的尾 };          成员变量分析:

By Ne0inhk