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

Spring AI 集成 vLLM 部署 Qwen3.5:关闭思考过程实战

Qwen3.5 默认输出<think>推理标签,生产场景中常需隐藏该过程。本文记录如何通过Spring AI + vLLM正确关闭思考输出。

✅ 核心结论:客户端使用.extraBody()传递chat_template_kwargs,服务端需 vLLM ≥ 0.6.4 ,我用的0.17.1,并配置专用解析器。


1. vLLM 服务端启动(关键)

nohuppython-mvllm.entrypoints.openai.api_server\--modelQwen/Qwen3.5-9B\--host0.0.0.0\--port11454\--served-model-name qwen3\--max-num-seqs32\--max-model-len262144\--enable-auto-tool-choice\--tool-call-parser qwen3_coder\--reasoning-parser qwen3\--uvicorn-log-level debug\>~/Documents/logs/vllm.log2>&1&

🔑 必配参数

参数说明
--reasoning-parser qwen3启用 Qwen3.5 推理解析,否则enable_thinking无效
--tool-call-parser qwen3_coder匹配工具调用格式
--served-model-name qwen3客户端调用时的模型短名

⚠️ vLLM 版本必须≥ 0.6.4,低版本会忽略chat_template_kwargs参数。


2. Spring AI 客户端配置

2.1 依赖 (pom.xml)

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai-spring-boot-starter</artifactId><version>1.0.2</version></dependency>

2.2 核心代码:关闭思考

publicChatOptionsoptionBuilder(StringmodelName){returnOpenAiChatOptions.builder().model(modelName)// 对应 --served-model-name.temperature(0.7)// 温度:高发散/低保守.maxTokens(32768)// ✅ 关键:通过 extraBody 传递 chat_template_kwargs.extraBody(Map.of("chat_template_kwargs",Map.of("enable_thinking",false))).build();}

2.3 调用示例

ChatResponseresponse=chatModel.call(newPrompt("Where is this?",optionBuilder("qwen3")));Stringcontent=response.getResult().getOutput().getContent();System.out.println(content);// 输出不含 <think>

3. 常见问题排查

❌ 日志警告参数被忽略

WARNING ... ignored: {'enable_thinking', 'extra_body'}

原因:vLLM 版本过低(< 0.6.4)
解决

pipinstall-Uvllm vllm--version# 确认 ≥ 0.6.4

❌ 思考标签仍未消失

  1. 确认启动命令包含--reasoning-parser qwen3
  2. 用 curl 直测服务端,排除客户端问题:
curlhttp://localhost:11454/v1/chat/completions\-H"Content-Type: application/json"\-d'{ "model": "qwen3", "messages": [{"role": "user", "content": "Hello"}], "chat_template_kwargs": {"enable_thinking": false} }'

4. 多模态支持(可选)

importorg.springframework.ai.chat.messages.UserMessage;importorg.springframework.ai.content.Media;importorg.springframework.core.io.UrlResource;Mediamedia=newMedia("image/png",newUrlResource("https://example.com/image.png"));UserMessagemsg=newUserMessage("Where is this?",List.of(media));ChatResponseresp=chatModel.call(newPrompt(msg,optionBuilder("qwen3")));

5. 总结

环节关键点
vLLM 版本≥ 0.6.4 我用的0.17.1
启动参数--reasoning-parser qwen3必配
客户端传参.extraBody({"chat_template_kwargs": {"enable_thinking": false}})
模型名称--served-model-name保持一致

配置完成后,Qwen3.5 将直接输出最终答案,不再包含<think>思考链路,更适合生产环境集成。

💡 提示:若需开启思考,将enable_thinking设为true或移除该参数即可。

http://www.cnnetsun.cn/news/1249249.html

相关文章:

  • 安装PyQt5报错‘qmake‘,
  • 计算机毕业设计springboot社区信息管理系统 基于SpringBoot的智慧社区综合服务平台设计与实现 SpringBoot框架下的小区数字化治理系统开发
  • MySQL Access denied for user ‘root‘@‘localhost‘ (using password: YES) 出现这个可能是mysql有多个任务在进行
  • WAF规则配置误区:10大常见防护漏洞,90%的人都踩过
  • 实现面试题一:什么是服务熔断 (Circuit Breaker)
  • 让文本生成模型具备多模态能力:BLIP-2如何架起视觉与语言的桥梁
  • 毕设程序java餐饮娱乐行业收银管理系统 基于SpringBoot的餐饮娱乐一体化经营服务平台 智慧餐饮娱乐门店运营与结算系统
  • Day2-MySQL-SQL-1
  • 2026金三银四Java面试通关宝典流出
  • 浙江润鑫轴线车超限汽车检测地磅:坚固耐用精度高,重载检测更可靠
  • js基础和数据类型
  • 从奖励驱动到目标驱动:AI Agent的范式演变与融合
  • Java的三大特性:封装、继承、多态
  • SQL概念及DDL
  • AI Agent 两大 “神辅助” 对决:MCP vs Skills 谁更能打?
  • 告别“代码民工”,拥抱“智能体架构师”:我的 2025 复盘与 2026 OpenClaw+VibeCoding 实战宣言
  • sqlilabs less-3 笔记
  • 从全网爆火的 OpenClaw 说起:为什么“个人数字员工”撑不起企业的 AI 野心?
  • OpenClaw(龙虾) + Qwen3-32B 踩坑实录:那些文档里没写的“血泪教训”
  • 贴心售后RFID设备资深厂家
  • 平滑加权轮询负载均衡的底层逻辑
  • . 使用TFloatKeyAnimation关键帧创建弹跳球动画 . 使用TColorKeyAnimation关键帧动画眩目背景变换 ...
  • Docker Desktop里搭建RabbitMq ..集群的保姆级教程
  • 2026年AI写作与创作利器:7款高效工具助你事半功倍
  • 写一段提取PDF单线图材料表的代码,能支持各种格式的PDF
  • 彼岸花会盛开在理想的他乡
  • Spring AI + RAG 从 0 到 1 落地:本地知识库 + 联网搜索,一套代码直接跑通
  • 推理框架极简入门与实战指南(非常详细),Nano-vLLM从入门到精通,收藏这一篇就够了!
  • 14K Star开源RAG项目实战全解(非常详细),检索优化从入门到精通,收藏这一篇就够了!
  • windows 安装openclaw的优势