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

发布时间:2026/9/23 10:47:58

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/9/3 20:46:06

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

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

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

2026/9/8 0:37:39

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/8/27 13:35:26

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

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/21 18:38:46

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/21 18:41:09

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/21 18:36:40

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/21 18:37:26

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/21 18:40:29

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/21 18:36:17

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/22 0:19:28

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/21 23:38:13

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/22 0:48:53

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…