Spring AI Alibaba示例代码(其他平台模型及vllm-chat 400错误解决)

上一章我们初识了 Spring AI Alibaba 的 helloworld 模块,完成了环境搭建与快速入门,并成功调用了阿里云百炼平台的模型。那么有个疑问,之前私有化部署的时候使用过ollama、vllm部署,调用和目前一致吗?本章将带大家深入样例代码,一探究竟!

本章将探究spring-ai-alibaba-chat-example模块,该模块提供了常见的大模型平台dashscope(阿里云百炼)、deepseel、ollama、openai、qwq(阿里云百炼)、vllm(openAI标准)、zhipuai(智谱)

1. dashscope-chat

我们登录阿里云百炼平台申请api-key(有免费提供的token),直接替换application.yml里面的api-key。按照dashscope-chat.http脚本里面提供的地址访问controller接口,即可和AI模型交互。
spring ai alibaba提供了DashScopeChatOptions用来初始化ChatClient和模型交互。 2. deepseek-chat

我们登录deepseek,进入APi开放平台,充值1元(结合自己实力)生成apikey后直接替换application.yml里面的api-key。按照deepseek-chat.http脚本里面提供的地址访问controller接口,即可和AI模型交互。
spring ai提供了DeepSeekChatModel、DeepSeekChatOptions用来和模型交互。 3. vllm-chat 之前ollama私有化部署后续切换成vllm部署,因此直接测试vllm模型,在此模块遇到么阻塞很久的问题,一直没测试成功

按照vllm部署的参数配置了application.yml,启动后一直报错

less 复制代码
400 - {"object":"error","message":"[{'type': 'missing', 'loc': ('body',), 'msg': 'Field required', 'input': None}]"}

问题原因:Spring AI 默认使用基于 WebClient 或 RestTemplate 的 HTTP 客户端,以分块编码(chunked) 发送请求体。 vLLM 服务端无法解析分块编码的请求体,导致报错。

解决办法:完全禁用 Spring WebClient 的分块传输编码(chunked transfer encoding),通过底层 Reactor Netty 客户端进行配置。

xml 复制代码
<dependency>
    <groupId>io.projectreactor.netty</groupId>
    <artifactId>reactor-netty-http</artifactId>
</dependency>
kotlin 复制代码
package com.alibaba.cloud.ai.example.chat.vllm.conf;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.reactive.ReactorClientHttpConnector;
import org.springframework.web.reactive.function.client.WebClient;

import reactor.netty.http.client.HttpClient;

@Configuration
public class WebClientConfig {

    @Bean
    public WebClient webClient() {
        // 创建并配置 Netty 的 HttpClient
        HttpClient httpClient = HttpClient.create()
                .headers(headers -> headers
                        .remove("Transfer-Encoding")  // 显式移除分块头
                        .set("Connection", "close")   // 强制关闭连接避免分块
                )
                .compress(false);  // 禁用压缩

        return WebClient.builder()
                .clientConnector(new ReactorClientHttpConnector(httpClient))
                .build();
    }
}

通过 spring-ai-alibaba-chat-example 模块的实践,我们成功实现了第三方大模型平台的调用集成,并重点解决了 vLLM 私有化部署模型 的常见调用错误问题。

相关推荐
松树戈2 小时前
滥用AI生图引起的JavaScript heap out of memory排查记录
vue.js·ai编程
测试_AI_一辰4 小时前
项目实践笔记13:多用户事实碎片 Agent 的接口测试与约束设计
开发语言·人工智能·ai编程
codezzzsleep4 小时前
fuClaudeBackend:面向fuclaude的轻量后端代理 + Key 管理后台
ai·github·ai编程
Anarkh_Lee5 小时前
在VSCode中使用MCP实现智能问数
数据库·ide·vscode·ai·编辑器·ai编程·数据库开发
智算菩萨6 小时前
2026年2月AI大语言模型评测全景:GPT-5.2与Claude 4.5的巅峰对决及国产模型崛起之路
人工智能·ai编程·ai写作
逻极6 小时前
OpenClaw「Clawdbot/Moltbot」 深入解析:核心架构深度剖析
python·ai·架构·agent·ai编程·moltbot·openclaw
云起SAAS7 小时前
实时双人对战游戏平台你画我猜知识竞猜斗兽棋五子棋H5抖音快手微信小程序看广告流量主开源
游戏·ai编程·看广告变现轻·实时双人对战游戏平台·你画我猜知识竞猜斗兽棋五子棋
逻极7 小时前
Claude Code实战——打造智能研报 CLI 工具:45分钟零构建智能研报助手CLI,解锁AI编程效率革命
microsoft·ai编程·ai辅助编程·claude code·python实战·cli开发
暴躁的鱼11 小时前
Trae使用体验SOLO模式体验
ai编程
人工智能训练19 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm