第1集:Java老手被派做AI项目,第一反应:完蛋,要学Python了
系列导读老张38岁Java后端12年ERP系统的活字典。某天总监拍着他说下季度给客服系统加个AI助手你来负责。老张的第一反应完了要学Python了。本系列将讲述老张如何用Spring AI在Java世界里玩转AI从环境搭建到企业级Agent全程实战代码开源。一、故事开场老张的晴天霹雳周三下午总监老李把老张叫进会议室。“小张啊公司客服系统用户量涨了5倍人力客服忙不过来。董事会说要加个AI助手自动回答常见问题。你技术栈熟这个项目你来带。”老张愣了三秒。AI助手他脑子里蹦出的第一个念头是Python、PyTorch、Transformers……那些他完全没碰过的东西。“李总这……我得先学Python吧”老李摆摆手“不用那么复杂就用你们熟悉的Java搞。现在有个叫Spring AI的东西国内还做了阿里云版直接调百炼的大模型就行。”老张的内心独白Java AI这不是跨服聊天吗就像让一个厨师突然去开飞机——原理相通但控制杆完全不一样啊二、技术破冰什么是Spring AI2.1 Spring AI是什么一句话定义Spring AI是Spring官方推出的AI应用开发框架让Java开发者能用熟悉的Spring Boot习惯开发AI应用。传统AI开发Spring AI开发Python PyTorch/TensorFlowJava Spring Boot手写API调用、异常处理Autowired注入ChatModel手动管理向量库连接Starter自动装配换模型改一堆代码改配置、换Starter2.2 双生态架构关键这是很多教程没讲清楚的┌─────────────────────────────────────────────┐ │ Spring AI上游官方 │ │ 提供ChatModel、EmbeddingModel、 │ │ RAG、向量库抽象、工具调用、记忆 │ │ 统一API跨厂商可移植 │ └─────────────────────────────────────────────┘ ↓ 扩展 ┌─────────────────────────────────────────────┐ │ Spring AI Alibaba阿里云版 │ │ 在Spring AI基础上增加 │ │ • DashScopeChatModel百炼大模型 │ │ • Agent能力工具调用循环、Skills │ │ • Graph编排、多Agent协作 │ │ • MCP协议支持 │ └─────────────────────────────────────────────┘老张的理解就像Android系统和MIUI的关系——Spring AI是底层系统Spring AI Alibaba是加了本地化能力的定制版。三、第一步搭建环境3.1 快速开始5分钟搞定打开 start.spring.io勾选Spring Boot3.2Spring AI AlibabaDashScope StarterSpring Web后续做接口用或者直接复制Maven依赖!-- 百炼大模型Spring AI Alibaba构建在 Spring AI 1.1 之上 --dependencygroupIdcom.alibaba.cloud.ai/groupIdartifactIdspring-ai-alibaba-starter-dashscope/artifactId!-- 版本随 Spring AI Alibaba 发版同步与配套仓库 pom.xml 一致1.1.2.2 --version1.1.2.2/version/dependency3.2 配置API Key在application.yml里填入你的百炼API Key去百炼平台申请spring:ai:dashscope:api-key:sk-xxxxxxxxxxxxxxxxxxxxxxxxchat:options:model:qwen-max# 选大模型还是qwen-turbo看预算老张的吐槽“这就完了不需要装Python、不需要pip install、不需要配虚拟环境Spring AI你是懂Java程序员的痛。”四、第一个对话ChatClient4.1 传统方式 vs Spring AI方式传统调用大模型API// 你得自己拼HTTP请求、处理JSON、管理TokenCloseableHttpClienthttpClientHttpClients.createDefault();HttpParamsparamsnewBasicHttpParams();// ... 50行代码后终于拿到结果Spring AI方式ServicepublicclassAiService{AutowiredprivateChatClientchatClient;// 直接注入框架帮你装配好publicStringchat(Stringquestion){returnchatClient.prompt().user(question).call().content();}}4.2 跑起来试试写个Controller测一下RestControllerRequestMapping(/ai)publicclassAiController{AutowiredprivateChatClientchatClient;GetMapping(/chat)publicStringchat(RequestParamStringquestion){returnchatClient.prompt().user(question).call().content();}}访问http://localhost:8080/ai/chat?question你好老张的惊喜“返回了一段完整的问候语没有报错、没有异常就这么简单”五、进阶让AI记住你多轮对话5.1 问题每问一次都是陌生人默认情况下ChatClient每次请求都是独立的。问你叫什么名字答完再问我刚才问了什么AI一脸茫然。5.2 解决方案带历史的PromptpublicStringchatWithHistory(Stringquestion,ListMessagehistory){PromptpromptnewPrompt(history);// 把历史消息传进去prompt.addMessage(newUserMessage(question));ChatResponseresponsechatClient.prompt(prompt).call().getResult();// 把回复也加入历史为下一轮做准备history.add(response.getResult().getOutput());returnresponse.getResult().getOutput().getText();}老张的类比“这就像跟同事聊天——你不会每次见面都重新自我介绍一遍对吧Spring AI的对话记忆就是让你’带着上下文继续聊’。”六、实战项目老张的客服助手原型老张花了一晚上写出了第一个可用版本RestControllerRequestMapping(/customer-service)publicclassCustomerServiceController{AutowiredprivateChatClientchatClient;// 用Map存储每个用户的对话历史privatefinalMapString,ListMessagememorynewConcurrentHashMap();PostMapping(/ask)publicStringask(RequestBodyAskRequestrequest){StringuserIdrequest.getUserId();// 获取或创建该用户的历史ListMessagehistorymemory.computeIfAbsent(userId,k-newArrayList());// 构建带历史的PromptPromptpromptnewPrompt(history);prompt.addMessage(newUserMessage(request.getQuestion()));// 调用AIChatResponseresponsechatClient.prompt(prompt).call().getResult();// 记录回复到历史history.add(response.getResult().getOutput());returnresponse.getResult().getOutput().getText();}}测试效果用户你们退货政策是什么 AI根据我们的规定7天内可无理由退货... 用户需要寄回原包装吗 AI是的需要保持原包装完整... 用户那运费谁承担 AI非质量问题由买家承担运费...老张的成就感“这就跑通了比我想象的简单太多了”七、下一集预告老张刚把客服助手demo跑起来总监老李又发来消息“不错但这只能回答通用问题。能不能让它学会我们公司的文档比如产品手册、FAQ这些”AI学会了提问但还没学会读书。下一集《给AI装上知识库RAG入门》将讲述什么是RAG检索增强生成为什么单纯的大模型不够用如何让AI基于你的文档回答问题 完整代码仓库所有代码已开源GitHubhttps://github.com/yinclei/SpringAITutorial分支chapter01-first-chat✅代码状态本集代码见配套仓库SpringAITutorial的ep01/包已按 Spring AI 1.1.4GA编译验证2026-08-23。文中片段为教学简化示意以仓库代码为准API Key 用百炼免费额度自备。 互动环节老兵问答你在AI学习中遇到的最大障碍是什么A. Python环境配置B. 数学公式看不懂C. 不知道从哪学起D. 其他评论区说说下周一晚9点我们继续老张的故事作者Java老兵搞AI | 关注我看Java如何玩转AI

相关新闻

0104-python相关-面向对象、封装继承多态

0104-python相关-面向对象、封装继承多态

面向对象之类和对象面向过程和面向对象面向过程编程(Procedural Programming)和面向对象编程(OOP)是两种不同的编程范式Python是一种混合型的语言,既支持面向过程的编程,也支持面向对象的编程。面向过程的编…

2026/8/26 14:55:01 阅读更多 →
soloMD的“设置”居然藏在“视图”下很深

soloMD的“设置”居然藏在“视图”下很深

soloMD的“设置”居然藏在“视图”下很深, 这种GUI设计的思路真是太奇葩了。目前还看不出取代Typora 和 Markdown Monster的可能;但是MIT开源,意味着没有上限、没有天花板!! 等我有富裕的高端算力和时间,我…

2026/8/26 16:17:02 阅读更多 →
Nature子刊 IF=15.1 | AI辅助ICD编码的真实世界部署与评估:基于大模型与临床文档标准化

Nature子刊 IF=15.1 | AI辅助ICD编码的真实世界部署与评估:基于大模型与临床文档标准化

引言 国际疾病分类(ICD)编码是医院运营的基石,但手动编码过程耗时费力且易出错,已成为全球医疗机构的沉重负担。尽管人工智能(AI)技术为自动化编码带来了希望,但现有模型往往难以适应真实世界中…

2026/8/26 15:39:59 阅读更多 →

最新新闻

Linux软件编程学习笔记(二)——标准IO

Linux软件编程学习笔记(二)——标准IO

一、什么是 IOIO 是:I:Input 输入 O:Output 输出例如:键盘 ─────→ 程序输入程序 ─────→ 屏幕输出文件 ─────→ 程序输入程序 ─────→ 文件输出在 Linux 软件编程中,IO 主要包括&#x…

2026/8/26 18:16:53 阅读更多 →
新手第一台电钢琴怎么选?4款热门机型参数对比+选购指南(2026实测)

新手第一台电钢琴怎么选?4款热门机型参数对比+选购指南(2026实测)

最近收到不少私信问:"第一台电钢琴到底该怎么选?是不是越贵越好?"这个问题我当年也纠结了很久。作为过来人,选琴和学琴一样,都需要理清思路。今天把我当初做功课的完整思路整理出来,从核心参数到…

2026/8/26 18:16:53 阅读更多 →
Vue 高级开发:状态管理、路由系统、插件与登录权限控制

Vue 高级开发:状态管理、路由系统、插件与登录权限控制

一、组件通信方式回顾 Vue 组件之间可以通过多种方式通信:父传子使用 props,子传父使用 $emit,父组件需要命令式操作子组件时可以使用 $refs。数据层级较深、多个页面共同使用的数据,则更适合交给 Vuex 或 Pinia 管理。 二、混入 …

2026/8/26 18:16:53 阅读更多 →
ImHex:能“读懂“二进制的现代化十六进制编辑器

ImHex:能“读懂“二进制的现代化十六进制编辑器

ImHex:能"读懂"二进制的现代化十六进制编辑器面向逆向工程与文件格式分析的十六进制编辑器,支持 Pattern 语言解析结构、反汇编、YARA 规则和丰富的内置工具。📖 背景说明 ImHex 是一款现代化的十六进制编辑器,由 WerWo…

2026/8/26 18:16:53 阅读更多 →
室内设计师一般去哪里找 3D 模型?常用渠道与避坑建议

室内设计师一般去哪里找 3D 模型?常用渠道与避坑建议

室内设计师一般去哪里找 3D 模型?常用渠道与避坑建议 做室内效果图、全屋定制、工装方案时,3D 模型往往决定了建模效率。 很多设计师刚开始会自己建柜体、灯具、沙发、装饰品,但实际项目时间紧,重复建模成本很高。更常见的做法是&…

2026/8/26 18:16:53 阅读更多 →
电机模块注意事项

电机模块注意事项

一、TIM3_PWM_Init1.硬件模块介绍TB6612 电机驱动模块 VM 最高电压最好不超过 10V。高于 10V 时,刚上电会有比较高的脉冲电压,这样容易击穿 16V 的钽电容。因为淘宝很多商家的钽电容的耐压值都是 16V 的,因为成本原因,耐压值 25V …

2026/8/26 18:15:52 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →