消息队列核心原理与分布式系统实践指南
2026/10/27 6:56:53
org.springframework.ai.retry.NonTransientAiException: HTTP404- No response body available at org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration$2.handleError(SpringAiRetryAutoConfiguration.java:109)~[spring-ai-autoconfigure-retry-1.0.0.jar:1.0.0]at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:58)~[spring-web-6.2.10.jar:6.2.10]at org.springframework.web.client.StatusHandler.lambda$fromErrorHandler$1(StatusHandler.java:71)~[spring-web-6.2.10.jar:6.2.10]at org.springframework.web.client.StatusHandler.handle(StatusHandler.java:146)~[spring-web-6.2.10.jar:6.2.10]at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.applyStatusHandlers(DefaultRestClient.java:838)~[spring-web-6.2.10.jar:6.2.10]at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.lambda$readBody$4(DefaultRestClient.java:827)~[spring-web-6.2.10.jar:6.2.10]at org.springframework.web.client.DefaultRestClient.readWithMessageConverters(DefaultRestClient.java:216)~[spring-web-6.2.10.jar:6.2.10]at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.readBody(DefaultRestClient.java:826)~[spring-web-6.2.10.jar:6.2.10]这个NonTransientAiException错误提示表明 Spring AI 在调用大模型服务时,收到了 HTTP 404 状态码,且服务器没有返回任何错误信息。这意味着请求的地址无法被找到。
结合常见的 Spring AI 使用场景,这通常不是代码逻辑的错误,而是配置或网络环境的问题。以下是几个主要排查方向:
这是最常见的原因。你需要确认配置文件(如application.yml或application.properties)中指定的 API 地址是否正确。
/v1/,/api/v1/),请确保你使用的地址与服务提供商的最新文档一致。http://localhost:11434/api)。如果你确定 URL 没有拼写错误,那么可能是网络层面的问题。
在某些情况下,如果请求的模型名称 (model name) 在服务端不存在,服务端也可能返回 404 而不是更具体的 400 错误。
spring.ai.chat.options.model(或其他类似配置项)的值是服务端支持的、完全正确的模型名称。例如,不要将qwen-plus错误地写成qwen。最有效的方法是开启 HTTP 客户端的调试日志,查看 Spring AI 实际发出的完整请求地址。
在application.yml中添加:
logging:level:org.springframework.web.client:DEBUG启动应用后,仔细查看控制台输出的Request URL,复制这个完整的 URL 到浏览器或 Postman 中直接访问,观察返回结果,这能帮你最直观地判断是地址错了还是网络不通。