当前位置: 首页 > news >正文

一键部署 Deepseek网页聊天系统(基于 Spring Boot + HTML 的本地对话系统)

🔥 全网最轻量的 Deepseek WebChat 项目!
零依赖,零配置,几分钟即可本地启动自己的 AI 聊天界面。


🧠 一、项目介绍

Deepseek WebChat 是一个基于 Spring Boot 后端 + HTML 前端 的简洁 AI 聊天演示项目,
可以与 Deepseek API 进行实时流式对话,支持 Markdown 高亮和代码块渲染。

👉 效果演示:

在这里插入图片描述

特点:

✅ 支持流式输出(即打字机式回复)
✅ 支持 Markdown 格式(含代码高亮)
✅ 前后端独立,结构简单易部署
✅ 纯本地运行,不依赖外部服务


🧩 二、技术栈

模块技术
后端Spring Boot 3 + WebFlux + Jackson
前端原生 HTML + JS + Markdown-it + Highlight.js
通信方式SSE(Server-Sent Events)流式传输
构建工具Maven

⚙️ 三、快速启动教程

1️⃣ 克隆项目

git clone https://github.com/MTQ851/deepseek-webchat.git
cd deepseek-webchat

⚠️ 如果你在中国大陆地区访问 GitHub 较慢,可以使用镜像或代理。


2️⃣ 修改配置(可选)

打开 src/main/java/com/deepseek/controller/ai/DeepSeekController.java,设置你的 Deepseek API Key

private static final String DEEP_SEEK_API_KEY = "Bearer sk-xxxxxxxxxxxxxxxx";

3️⃣ 启动后端服务

在项目根目录下执行:

mvn spring-boot:run

启动成功后,控制台会输出:

2025-10-27 16:06:35.139  INFO 48652 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2025-10-27 16:06:35.144  INFO 48652 --- [           main] com.deepseek.DeepSeekApplication         : Started DeepSeekApplication in 0.865 seconds (JVM running for 1.183)
2025-10-27 16:06:35.164  INFO 48652 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2025-10-27 16:06:35.164  INFO 48652 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2025-10-27 16:06:35.166  INFO 48652 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 2 ms
请手动打开浏览器访问 http://localhost:8080/

4️⃣ 打开前端页面

前端页面地址:

http://localhost:8080/

默认访问接口地址为:

http://localhost:8080/api/deepseek/stream

然后输入内容,就能实时看到模型回答啦!


💬 四、项目结构

deepseek-webchat/
├── src/
│   ├── main/
│   │   ├── java/com/deepseek/controller/ai/DeepSeekController.java
│   │   ├── resources/static/index.html
│   │   └── resources/application.yml
├── pom.xml
└── README.md

🧩 五、核心代码示例

后端流式接口(简化版)

  @GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)public Flux<String> stream(@RequestParam String prompt, HttpServletRequest request) {//todo 历史记录可加上下文联系逻辑自行补充List<Map<String, String>> chatHistory = new LinkedList<>();// 添加用户输入Map<String, String> userInput = new HashMap<>();userInput.put("role", "user");userInput.put("content", prompt);chatHistory.add(userInput);// 组装 OpenAI API 参数Map<String, Object> paramMap = new HashMap<>();paramMap.put("model", "deepseek-chat");paramMap.put("messages", chatHistory);paramMap.put("stream", true);ObjectMapper objectMapper = new ObjectMapper();StringBuilder answerBuffer = new StringBuilder();StringBuilder answerThinkBuffer = new StringBuilder();return webClientByDeepSeek.post().uri("/v1/chat/completions").contentType(MediaType.APPLICATION_JSON).bodyValue(paramMap).retrieve().bodyToFlux(String.class).doOnNext(json -> {// 跳过 [DONE] 标记,避免 JSON 解析错误if ("[DONE]".equals(json)) {return;}// 保持返回内容不变,但提取回答保存try {// 解析 JSON 文本为树形结构JsonNode root = objectMapper.readTree(json);// 提取聊天回答内容(模型输出)String extracted = root.path("choices").get(0).path("delta").path("content").asText("");answerBuffer.append(extracted);// 提取模型推理内容(有些模型返回 reasoning_content)String extractedThink = root.path("choices").get(0).path("delta").path("reasoning_content").asText("");answerThinkBuffer.append(extractedThink);} catch (JsonProcessingException e) {log.error("解析回答失败: {}", json, e);}}).doFinally(signal -> {//todo 可补充保存内容逻辑log.info("模型输出: " + answerBuffer);log.info("模型推理: " + answerThinkBuffer);}).delayElements(Duration.ofMillis(50)); // 控制节奏}

前端请求逻辑

const url = `http://127.0.0.1:8080/api/deepseek/stream?prompt=${encodeURIComponent(prompt)}`;
const response = await fetch(url);

🌈 六、常见问题

❓Q1:API Key 从哪里来?

👉 前往 Deepseek 官网 申请并在配置文件中填入。


📦 七、源码地址

GitHub 开源地址:https://github.com/MTQ851/deepseek-webchat.git


❤️ 八、支持一下

如果本项目对你有帮助:

  • ⭐ 给仓库一个 Star!
  • 💬 在评论区留言支持!
  • 🔁 分享给需要的小伙伴!

✍️ 九、作者寄语

本项目初衷是帮助开发者更快上手 Deepseek API,
并提供一个简单、美观的本地可运行界面。

欢迎 Fork、改进、再创作 ❤️!


http://www.dtcms.com/a/537700.html

相关文章:

  • 那个网站都有做莱的图片湖北响应式网站设计制作
  • 一家专做二手手机的网站叫什么手机网站开发与建设的原则
  • 前端可视化工具推荐
  • 建筑网站设计方案手机如何制作网站和网页
  • 鞍山百度做网站网络推广软文怎么写
  • Vue3 响应式系统深度解析:Proxy 为何能替代 Object.defineProperty?
  • 忻州网站建设有些电影网站是怎么做的
  • 兰溪网站建设公司经营性质的网站
  • 项目实践5—全球证件智能识别系统(Qt客户端开发+FastAPI后端人工智能服务开发)
  • 苏州网网站建设企业网站源码带后台
  • 做学术研究的网站惠州市住房和城乡建设厅网站
  • iis应用程序池 网站塘沽网站制作公司
  • 海外网站哪个最好沈阳网站建设58同城
  • ArcGIS Pro与Python下空间数据采集与管理
  • 单片机跑飞原因及解决方法
  • 什么是网站交互全国最大工地招工网
  • 推广网站有哪些平台海外运营工作内容
  • 响应式网站开发 三合一建站备案后修改网站名称
  • 佘山做网站wordpress底部footer
  • 哪个网站做漂流瓶任务做网站外国的
  • 可以做设计赚钱的网站外包公司辞退员工补偿标准
  • 网站共享备案可以申请支付接口网站维护协议
  • 信息技术应用创新 | 基于KylinV10的达梦数据库DM8基本操作
  • 如何租用服务器做网站温州做网站公司
  • 泉州网站开发公司旺道seo软件
  • AOI设备在光伏制造领域的核心应用
  • 网页网站建设的步骤流程图网上搞钱的野路子
  • 安徽池州做企业网站新东方英语线下培训学校
  • 2025年mathorcup大数据竞赛B题【物流理赔风险识别及服务升级问题】原创论文分享
  • EECS 498 Deep Learning for Computer Vision Winter 2022 A2