Spring Boot 集成硅基流动免费Qwen大模型实战——从零搭建支持多轮对话的网页应用
目录前言一、为什么选择硅基流动二、如何申请账号1、注册账号2、实名认证3、分配秘钥三、环境准备1、创建项目与引入依赖2、配置 application.yml3、定义数据模型3.1. 消息实体 ChatMessage3.2. 请求体 ChatRequest3.3. 响应体 ChatResponse四、封装调用服务1、控制器与多轮会话管理2、Thymeleaf 聊天页面3、运行与测试4、temperature 与 max_tokens 参数详解5、生产环境进阶建议五、总结前言大模型应用正快速走进日常开发但对很多同学来说『如何在一个普通 Spring Boot 项目里真正调通一个大模型接口』依然是第一步的门槛。本文以硅基流动SiliconFlow平台的免费模型 Qwen/Qwen2.5-7B-Instruct 为例手把手带你从零搭建一个支持多轮会话的网页对话应用所有代码均可直接复制运行。读完本文你将掌握如何用 Spring Boot 调用 OpenAI 兼容接口、如何设计多轮对话的上下文管理、以及如何用 Thymeleaf 快速做出可用的聊天界面。一、为什么选择硅基流动硅基流动是国内一家提供大模型推理 API 的云平台对开发者非常友好免费额度新用户注册即送额度Qwen2.5-7B-Instruct 等模型可免费试用适合学习与做 Demo如果只是想验证大模型的能力并不想直接部署一个大模型或者真的去购买千问的或最新Kimi的最新能力那么我们完全可以使用公开部署的免费模型OpenAI 兼容接口与 OpenAI 的 /v1/chat/completions 完全一致代码可直接复用迁移成本低模型丰富除 Qwen 系列外还提供 DeepSeek、GLM、Llama 等多种开源模型按需切换即可国内访问稳定无需科学上网延迟低文档与控制台均为中文。二、如何申请账号如果不想自己搭建本地大模型也不想只体验一种大模型那么完全可以使用硅基流动这种私有化了很多种常见大模型的网站平台助力你的AI应用。本节将来介绍一下如何注册申请账号以及申请key。1、注册账号硅基流动的网页地址如下硅基流动注册地址输入地址后在相应的页面中输入必要的信息完整注册即可。2、实名认证注册成功后在系统中需要进行实名认证界面如下按照网站的要求进行认证即可。3、分配秘钥与OpenAI一样要想在外部平台集成硅基流动中的模型也需要分配key然后在自己的应用程序中进行配置使用。管理界面如下输入信息描述之后点击新建就可以完成信key的创建一定要注意的是这里创建的key一定妥善保管不要泄露给第三方。经过以上的步骤后就可以进入下一步调用硅基流动中的大模型了。三、环境准备JDK 17 及以上本文基于 Java 17Maven 3.6 及以上一个硅基流动 API Key任意 IDEIntelliJ IDEA / Eclipse或者AI编辑器比如CodeBuddy或者Trae都可以。1、创建项目与引入依赖新建一个 Maven 项目只需要 Web、Thymeleaf 两个起步依赖即可。核心 pom.xml 如下?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.3.5/version relativePath/ /parent groupIdcom.example/groupId artifactIdsiliconflow-qwen-demo/artifactId version1.0.0/version namesiliconflow-qwen-demo/name descriptionSpring Boot Thymeleaf demo for SiliconFlow Qwen2.5-7B-Instruct chat/description properties java.version17/java.version /properties dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-thymeleaf/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency /dependencies build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId /plugin /plugins /build /project这里无需额外引入 OKHttp 或 OpenAI 的 SDK我们直接使用Spring 自带的 RestClient 已经足够好用。2、配置 application.yml接下来把模型名、接口地址和密钥放到配置文件中密钥建议用环境变量注入避免硬编码进代码仓库这里为了演示简单直接将密钥拷贝到配置文件中server: port: 8080 spring: application: name: siliconflow-qwen-demo thymeleaf: cache: false encoding: UTF-8 mode: HTML # 硅基流动配置 siliconflow: # 在 https://cloud.siliconflow.cn 注册后于“API密钥”页面生成 api: #key: 在此填入你的SiliconFlow_API_Key key: your_key url: https://api.siliconflow.cn/v1/chat/completions # 使用的模型 model: Qwen/Qwen2.5-7B-Instruct temperature: 0.7 max-tokens: 20483、定义数据模型硅基流动的请求/响应是标准的 OpenAI 格式我们先定义三个实体类。3.1. 消息实体 ChatMessagepublic class ChatMessage { private String role; // user / assistant / system private String content; // 省略构造方法、getter/setter }3.2. 请求体 ChatRequestpublic class ChatRequest { private String model; private ListChatMessage messages; private Double temperature; private Integer max_tokens; private Boolean stream; // 省略构造方法、getter/setter }3.3. 响应体 ChatResponsepublic class ChatResponse { private ListChoice choices; public static class Choice { private ChatMessage message; // getter/setter } // getter/setter }四、封装调用服务本节将重点介绍如何进行服务调用以及如何实现控制器和多轮会话的管理。核心逻辑把完整对话历史组装成请求POST 到硅基流动接口取回模型回复。其中 Value 注入的 temperature 和 maxTokens 即为采样参数。Service public class SiliconFlowService { private final RestClient restClient RestClient.create(); Value(${siliconflow.api.key}) private String apiKey; Value(${siliconflow.api.url}) private String apiUrl; Value(${siliconflow.model}) private String model; Value(${siliconflow.temperature:0.7}) private Double temperature; Value(${siliconflow.max-tokens:2048}) private Integer maxTokens; public String chat(ListChatMessage messages) { ChatRequest request new ChatRequest(model, messages, temperature, maxTokens, false); ChatResponse response restClient.post() .uri(apiUrl) .header(Authorization, Bearer apiKey) .header(Content-Type, application/json) .body(request) .retrieve() .body(ChatResponse.class); return response.getChoices().get(0).getMessage().getContent(); } }1、控制器与多轮会话管理多轮对话的关键是把『历史消息』保存下来。最简单稳妥的做法是用 HttpSession每个浏览器会话独立保存一份消息列表每次请求都带着完整历史发给模型模型便能『记住』上下文。RestController RequestMapping(/api) public class ChatController { private static final String HISTORY_KEY chatHistory; private static final String SYSTEM_PROMPT 你是一个有帮助的、友好的中文智能助手。; PostMapping(/chat) public ResponseEntityMapString, Object chat(RequestBody ChatInput input, HttpSession session) { ListChatMessage history getOrInitHistory(session); // 取出历史 history.add(new ChatMessage(user, input.message())); // 追加用户消息 String reply siliconFlowService.chat(history); // 调用模型 history.add(new ChatMessage(assistant, reply)); // 追加助手回复 return ResponseEntity.ok(Map.of(reply, reply)); } PostMapping(/reset) public ResponseEntityMapString, String reset(HttpSession session) { // 清空历史仅保留 system 提示词 session.setAttribute(HISTORY_KEY, List.of(new ChatMessage(system, SYSTEM_PROMPT))); return ResponseEntity.ok(Map.of(status, ok)); } }多轮原理一句话总结用户消息 → 进历史 → 调模型带全量历史→ 助手回复进历史 → 下一轮继续。会话历史在服务端前端无需关心。2、Thymeleaf 聊天页面页面用纯 JavaScript 通过 fetch 调用 /api/chat拿到回复后动态追加到对话区无需任何前端框架async function sendMessage() { const text inputEl.value.trim(); if (!text) return; appendMessage(user, text); inputEl.value ; const typing appendMessage(assistant, 正在思考...); const resp await fetch(/api/chat, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ message: text }) }); const data await resp.json(); typing.textContent data.reply; }完整的 HTML/CSS 已包含在示例工程中templates/chat.html含消息气泡样式、Enter 发送、清空会话按钮等。3、运行与测试方式一编辑 application.yml 填入真实 API Key方式二推荐用环境变量覆盖避免密钥入库 —— Windows(PowerShell): $env:SILICONFLOW_API_KEY你的Key启动mvn spring-boot:run浏览器打开 http://localhost:8080 即可多轮对话完整演示录屏如下SpringBoot集成硅基流动Qwen2.5-7B大模型4、temperature 与 max_tokens 参数详解这两个是调用大模型时最高频、也最影响效果的两个参数结合本项目代码重点说明参数控制什么调小效果调大效果temperature输出随机性/创造性更确定、保守、可复现适合代码/事实问答更发散、有创意、易出错适合闲聊/写作max_tokens单次回复最大长度回答更短、可能被截断可输出更长、占更多资源补充说明temperature 常用区间 0~1.2本项目默认 0.7兼顾稳定与灵动max_tokens 是『输出』上限而非上下文总窗口Qwen2.5-7B 上下文约 32K长对话要预留输入余量硅基流动接口中 temperature 与 top_p 通常二选一调整不要同时大幅改动。5、生产环境进阶建议上下文截断当前示例把全量历史发给模型轮次多了会超出窗口。可按 token 预算保留最近 N 轮或摘要旧消息流式输出将 stream 设为 true用 SSE/WebFlux 逐字返回体验更接近官方聊天密钥安全密钥务必走环境变量或配置中心禁止提交到 Git容错与重试对接口超时、限流429增加重试与降级提示多用户隔离HttpSession 已按会话隔离集群部署需配合 Spring Session Redis。五、总结通过本文我们就已经实现用 Spring Boot Thymeleaf 完整跑通了硅基流动的免费 Qwen 模型并实现了服务端维护历史的多轮对话。核心只有三步定义 OpenAI 兼容的数据模型、用 RestClient 封装一次接口调用、用 HttpSession 保存多轮上下文。在此基础上流式输出、上下文管理、多模型切换都可以平滑扩展。行文仓促定有不足之处欢迎各位朋友在评论区批评指正不胜感激。

相关新闻

外贸开发市场图谱.主要国家外贸领域介绍.核心市场梯队与重点国家介绍

外贸开发市场图谱.主要国家外贸领域介绍.核心市场梯队与重点国家介绍

外贸开发市场图谱.主要国家外贸领域介绍.核心市场梯队与重点国家介绍.哪个国家外贸最好做.外贸人必看,10个值得深耕的国家.有什么值得开发的外贸市场?哪些国家可以做外贸开发?外贸企业必看:全球六大海外市场分析。全球外球市场多元,中国外贸企业可结合…

2026/10/15 7:28:20 阅读更多 →
DSM7引导编译器Tinycore-redpill使用教程

DSM7引导编译器Tinycore-redpill使用教程

2023.5.8 https://github.com/llm-y2k/tinycore-redpill 小更一把,可直接编译,需要的速度吧。程序命令有变化,使用rploader-cn.sh 编译命令举例: 查看支持机型:sudo ./rploader-cn.sh serialgen 生成指定机型序列号…

2026/10/16 5:53:10 阅读更多 →
Claude Opus 5在24小时AI协作编程中的游戏开发实践

Claude Opus 5在24小时AI协作编程中的游戏开发实践

在 AI 编程领域,Claude Opus 5 作为 Anthropic 最新发布的大语言模型,其代码生成和复杂任务规划能力备受关注。实际测试中,让 AI 模型连续运行 24 小时构建完整游戏,不仅考验模型的代码生成质量,更涉及项目规划、模块拆…

2026/10/14 15:19:33 阅读更多 →

最新新闻

GLSL mod() 取模函数深度解析:The Book of Shaders 中实现周期性平铺、索引与动画的基石

GLSL mod() 取模函数深度解析:The Book of Shaders 中实现周期性平铺、索引与动画的基石

【免费下载链接】thebookofshaders Step-by-step guide through the abstract and complex universe of Fragment Shaders. 项目地址: https://gitcode.com/gh_mirrors/th/thebookofshaders 点击查看 免费下载 导读 mod() 是 GLSL 中最基础也最高频的数学函数之一…

2026/10/16 5:52:44 阅读更多 →
ExplorerPatcher 配置指南:三套套餐把 Windows 11 任务栏与开始菜单改回 Win10 经典样式

ExplorerPatcher 配置指南:三套套餐把 Windows 11 任务栏与开始菜单改回 Win10 经典样式

ExplorerPatcher 配置指南:三套套餐把 Windows 11 任务栏与开始菜单改回 Win10 经典样式 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher…

2026/10/16 5:52:44 阅读更多 →
qwerty-learner 自定义词库导入:从一份 JSON 文件到完整个人词库,10 分钟走通

qwerty-learner 自定义词库导入:从一份 JSON 文件到完整个人词库,10 分钟走通

qwerty-learner 自定义词库导入:从一份 JSON 文件到完整个人词库,10 分钟走通 【免费下载链接】qwerty-learner 为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboar…

2026/10/16 5:52:44 阅读更多 →
AIRI Minecraft 集成:基于 Mineflayer 的 LLM 驱动 Bot 本地部署与配置全解

AIRI Minecraft 集成:基于 Mineflayer 的 LLM 驱动 Bot 本地部署与配置全解

人工智能AI AgentMCP 服务工具调用GUI 自动化语音数字人交互助手 【免费下载链接】airi 💖🧸 自托管、归你拥有的 Grok 风格 AI 伴侣与 waifu / 赛博生命灵魂容器,目标是接近 Neuro-sama 的高度;支持实时语音聊天、Minecraft 和 F…

2026/10/16 5:52:44 阅读更多 →
Python yield机制详解:从生成器到协程的核心原理与实践

Python yield机制详解:从生成器到协程的核心原理与实践

很多Python开发者接触到yield,是先听说"生成器"这个词,然后背下"yield像return但能返回多次"这种解释。实际上这个理解非常危险,它把yield的真正价值完全掩盖了。yield不是"返回多次",而是把一段代…

2026/10/16 5:52:44 阅读更多 →
OpCore-Simplify 一键生成可用的 OpenCore EFI:黑苹果自动化配置五步指南

OpCore-Simplify 一键生成可用的 OpenCore EFI:黑苹果自动化配置五步指南

OpCore-Simplify 一键生成可用的 OpenCore EFI:黑苹果自动化配置五步指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 当你准备在一台旧…

2026/10/16 5:51:44 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

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

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/15 9:49:14 阅读更多 →