30分钟实现自己的AI聊天机器人(SpringBoot接入DeepSeek API)

发布时间:2026/7/10 7:41:05

30分钟实现自己的AI聊天机器人(SpringBoot接入DeepSeek API)
前言刚开始学习AI的时候。我和很多Java开发一样。每天都在看AgentRAGWorkflowMCP越看越焦虑。感觉每个概念都很复杂。直到后来我才发现。自己走错了方向。对于传统开发来说。学习AI最好的方式不是先研究各种框架。而是先做出一个真正能运行的AI应用。而AI应用里最简单的是什么答案就是聊天机器人。这一篇文章。我就分享一下当时是如何用SpringBoot在30分钟内实现自己的第一个AI聊天机器人的。AI聊天机器人的本质是什么很多人第一次接触AI的时候。会觉得ChatGPT太神奇了其实从开发角度看。一个聊天机器人本质上只有三部分用户问题 ↓ Prompt ↓ 大模型 ↓ 返回答案说白了。就是一次HTTP请求。所以不要被AI吓到。先把它当成一个普通接口服务。很多东西反而更容易理解。为什么不直接用网页版DeepSeek很多人可能会问既然网页版已经能聊天。为什么还要调用API原因很简单。网页版是给人使用的。API是给程序使用的。只有通过API。才能集成到自己的系统开发AI助手实现RAG知识库实现Agent实现Workflow后面所有AI应用开发能力。几乎都是建立在API调用之上的。所以学会调用API。就是传统开发者进入AI开发的第一步。准备工作获取你的第一个大模型API在开始写代码之前。首先需要一个能够调用的大模型。目前国内外主流平台都提供开放API例如DeepSeek阿里百炼OpenAI智谱AI这里我使用的是 DeepSeek。原因很简单便宜。对于学习阶段来说完全够用。注册地址链接注册完成后1、充值10元足够练习很久2、创建API Key3、保存生成的sk开头密钥这里要特别注意API Key相当于银行卡密码。千万不要提交到GitHub或者上传到公开仓库。否则别人调用消耗的是你的余额。创建完成后。就可以开始编写代码了。创建过程如下这里要特别注意API Key 相当于银行卡密码不要上传到 GitHub 或公开仓库。最后附上DeepSeek的接口文档地址链接)代码实现请求流程其实整个AI聊天机器人本质上就是一次HTTP调用。理解了这一点。后面学习Spring AI、Agent、RAG都会轻松很多。前端页面 ↓ Controller ↓ ChatService ↓ DeepSeek API ↓ 返回结果业务代码项目中调用这里以Java为例Python等其他语言同理。这里先用Http RestTemplate方式调用。是不是很熟悉呢。完整代码我会同步上传到 GitHub。 后续 Spring AI、RAG、Agent 相关代码也会持续更新。GitHub地址 仓库地址private static final String DEEPSEEK_URL https://api.deepseek.com/chat/completions; private static final String SYSTEM_PROMPT 你是一个AI助手; private final RestTemplate restTemplate; private final String apiKey; /** 会话 id - 该会话的 messages 历史第一条固定为 system */ private final ConcurrentHashMapString, ListChatMessage conversations new ConcurrentHashMap(); public ChatConversationService(RestTemplate restTemplate, Value(${deepseek.api-key}) String apiKey) { this.restTemplate restTemplate; this.apiKey apiKey.strip(); } public ChatResponse chat(String conversationId, String userMessage) { //处理会话ID可忽略 String convId (conversationId null || conversationId.isBlank()) ? UUID.randomUUID().toString() : conversationId.trim(); //如果get(id)的值不存在则把新list封装后返回否则直接返回list 可忽略 ListChatMessage history conversations.computeIfAbsent(convId, id - { ListChatMessage list new ArrayList(); list.add(new ChatMessage(system, SYSTEM_PROMPT)); return list; }); synchronized (history) { history.add(new ChatMessage(user, userMessage)); DeepSeekChatRequest body new DeepSeekChatRequest(); body.setModel(deepseek-v4-flash); body.setMessages(new ArrayList(history)); HttpHeaders headers new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); headers.setBearerAuth(apiKey); HttpEntityDeepSeekChatRequest entity new HttpEntity(body, headers); //http调用大模型接口 DeepSeekChatResponse apiResponse restTemplate.postForObject( DEEPSEEK_URL, entity, DeepSeekChatResponse.class ); String reply ; if (apiResponse ! null apiResponse.getChoices() ! null !apiResponse.getChoices().isEmpty() apiResponse.getChoices().get(0).getMessage() ! null) { String content apiResponse.getChoices().get(0).getMessage().getContent(); reply content ! null ? content : ; } history.add(new ChatMessage(assistant, reply)); return new ChatResponse(reply, convId); } }其实整个流程总结下来只有三步用户问题 ↓ 组装Message ↓ HTTP调用大模型 ↓ 返回答案这也是后面所有AI应用的基础。包括Spring AILangChain4jAgentRAG本质上都建立在这个流程之上。运行结果启动项目后。发送请求返回因为我增加了会话ID的设置系统保存了历史消息。所以第二次提问模型依然能够结合上下文回答。这也是最简单的会话记忆实现方式这一步也可以忽略后面会详细讲大模型记忆机制。第一个版本为什么不用Spring AI很多人看到这里可能会问为什么不用Spring AI原因很简单。学习任何新技术。第一步都应该先理解底层原理。如果一上来就使用框架chatClient.prompt() .user(question) .call()虽然很方便。但很难理解Message是什么Prompt是什么Token是什么请求到底发给了谁所以我的第一版故意选择RestTemplate HTTP直接调用模型接口。先把整个流程跑通。之后再引入Spring AI。这样学习效率反而更高。写在最后做到这里。其实你已经完成了自己的第一个AI应用。虽然它还很简单。但已经具备了会话能力Prompt能力大模型调用能力而这也是后面所有AI项目的基础。很多人做到这里会产生一个错觉AI开发好像也没那么难事实上。你只是刚刚完成了AI开发 Hello World接下来真正的学习路线通常是聊天机器人 ↓ Spring AI ↓ 流式输出SSE ↓ 会话记忆 ↓ Function Calling ↓ RAG知识库 ↓ Agent ↓ Workflow ↓ 企业级AI应用而我接下来也会按照自己的学习路径。把这些内容一步步记录下来。

相关新闻

Python 3.12 文件操作实战:3种异常处理策略保障数据统计任务100%成功

Python 3.12 文件操作实战:3种异常处理策略保障数据统计任务100%成功

2026/7/10 7:31:04

Python 3.12 文件操作实战:3种异常处理策略保障数据统计任务100%成功在数据处理领域,文件读写是最基础却最容易出错的环节。一个健壮的Python脚本不仅需要完成核心统计功能,更要能优雅处理各种意外情况。本文将深入探讨三种不同层级的异常处理…

Pearcleaner:彻底解决macOS应用残留问题的专业清理工具

Pearcleaner:彻底解决macOS应用残留问题的专业清理工具

2026/7/10 7:31:04

Pearcleaner:彻底解决macOS应用残留问题的专业清理工具 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 你是否曾经卸载了macOS上的应用程序&…

Grok AI助手:多模态交互与实时信息获取技术解析

Grok AI助手:多模态交互与实时信息获取技术解析

2026/7/10 7:31:04

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来看一个备受关注的项目——Grok AI助手。作为SpaceXAI开发的人工智能助手,Grok最近发布了全新标语"Just Gr…

还在为论文开题报告头秃?这5个AI论文工具让你效率翻倍!

还在为论文开题报告头秃?这5个AI论文工具让你效率翻倍!

2026/7/10 12:11:34

朋友们,写论文是不是让你抓狂?对着空白文档发呆、查重率压不下来、导师催稿催到心慌……别急!今天给大家推荐几款AI工具,只要用对了工具,真的能让你从焦虑中解脱! 不过先说清楚哈——AI不能替你写论文&…

Kotlin 协程 1.7 面试避坑指南:3个高频并发陷阱与解决方案

Kotlin 协程 1.7 面试避坑指南:3个高频并发陷阱与解决方案

2026/7/10 12:11:34

Kotlin协程1.7高频并发陷阱实战解析:从面试误区到工程解决方案 在Android开发领域,Kotlin协程已成为异步编程的事实标准,而1.7版本引入的新特性让协程在复杂并发场景下的表现更加出色。本文将深入剖析三个最具迷惑性的协程并发问题&#xff0…

如何用哔咔漫画下载器打造个人离线图书馆:3步实现永久收藏

如何用哔咔漫画下载器打造个人离线图书馆:3步实现永久收藏

2026/7/10 12:11:34

如何用哔咔漫画下载器打造个人离线图书馆:3步实现永久收藏 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器,带图形界面 带收藏夹,已打包exe 下载速度飞快 项目地址: https://gitcode.com…

FPGA vs GPU vs ASIC:5个维度量化分析AI推理的硬件选型策略

FPGA vs GPU vs ASIC:5个维度量化分析AI推理的硬件选型策略

2026/7/10 12:11:34

FPGA vs GPU vs ASIC:5个维度量化分析AI推理的硬件选型策略当AI推理从实验室走向真实业务场景,硬件选型成为决定项目成败的关键因素之一。面对FPGA、GPU和ASIC这三种主流加速方案,技术决策者常常陷入"性能、成本、灵活性"的三角困境…

Betaflight飞控固件终极指南:2025年让你的穿越机飞行更稳定更智能

Betaflight飞控固件终极指南:2025年让你的穿越机飞行更稳定更智能

2026/7/10 12:11:34

Betaflight飞控固件终极指南:2025年让你的穿越机飞行更稳定更智能 【免费下载链接】betaflight Open Source Flight Controller Firmware 项目地址: https://gitcode.com/gh_mirrors/be/betaflight 还在为穿越机飞行抖动、信号不稳定而苦恼吗?Bet…

大数据毕设项目:基于 SpringBoot+Hadoop 的手机销售趋势预测分析系统的设计与实现 手机电商销售大数据分析系统 (源码+文档,讲解、调试运行,定制等)

大数据毕设项目:基于 SpringBoot+Hadoop 的手机销售趋势预测分析系统的设计与实现 手机电商销售大数据分析系统 (源码+文档,讲解、调试运行,定制等)

2026/7/10 12:01:33

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

2026/7/9 19:40:56

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

6个月转型AI工程师:实战路径与核心技能

6个月转型AI工程师:实战路径与核心技能

2026/7/9 18:28:30

1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公…

YOLOv5模型剪枝与量化实战:边缘设备部署优化

YOLOv5模型剪枝与量化实战:边缘设备部署优化

2026/7/10 6:57:56

1. 项目背景与核心价值在计算机视觉领域,YOLOv5因其出色的实时检测性能成为工业界宠儿。但当我们尝试将其部署到边缘设备(如树莓派、Jetson Nano或手机终端)时,立刻会遇到两个致命问题:模型体积庞大(原始YO…

终极原神FPS解锁器完整指南:轻松突破60帧限制

终极原神FPS解锁器完整指南:轻松突破60帧限制

2026/7/10 0:00:42

终极原神FPS解锁器完整指南:轻松突破60帧限制 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 原神FPS解锁器是一款专为《原神》玩家设计的开源工具,通过先进的Wri…

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?[特殊字符]

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?[特殊字符]

2026/7/10 0:00:42

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?🎵 【免费下载链接】YesPlayMusic 高颜值的第三方网易云播放器,支持 Windows / macOS / Linux :electron: 项目地址: https://gitcode.com/gh_mirrors/ye/YesPlayMusic…

从零实现红黑树:手写C++的set与map容器

从零实现红黑树:手写C++的set与map容器

2026/7/10 0:00:42

1. 项目概述:从STL容器到自研轮子在C的日常开发中,std::set和std::map是我们再熟悉不过的伙伴了。它们一个负责管理不重复的集合,一个负责维护键值对映射,底层都依赖一颗高效的红黑树来保证数据的有序性和操作的性能。但你是否曾想…