Spring AI ChatClient$Builder空指针异常求助(附代码日志)
Spring AI集成OpenAI的正确实现指导
问题分析
你遇到的NullPointerException核心原因是控制器中的ChatClient.Builder未被Spring容器注入——仅声明了私有变量但未完成初始化,调用build()方法时触发空指针异常。
修复步骤
1. 修复控制器的依赖注入
使用Spring推荐的构造注入或@Autowired注解,让容器自动管理ChatClient.Builder实例:
构造注入实现(推荐)
@RestController public class AIController { private final ChatClient.Builder chatClientBuilder; // 构造方法注入实例 public AIController(ChatClient.Builder chatClientBuilder) { this.chatClientBuilder = chatClientBuilder; } @GetMapping("/spring-ai/prompt") public Flux<String> promptResponse(@RequestParam("message") String message) { ChatClient chatClient = chatClientBuilder.build(); return chatClient.prompt(message).stream().content(); } }
@Autowired注解实现
@RestController public class AIController { @Autowired private ChatClient.Builder chatClientBuilder; @GetMapping("/spring-ai/prompt") public Flux<String> promptResponse(@RequestParam("message") String message) { ChatClient chatClient = chatClientBuilder.build(); return chatClient.prompt(message).stream().content(); } }
2. 添加API配置
在application.properties或application.yml中配置OpenAI(或DeepSeek)的密钥与模型信息:
application.properties配置示例
# OpenAI配置 spring.ai.openai.api-key=你的OpenAI API密钥 spring.ai.openai.chat.model=gpt-3.5-turbo # DeepSeek配置(替换OpenAI配置即可) # spring.ai.openai.base-url=https://api.deepseek.com/v1 # spring.ai.openai.api-key=你的DeepSeek API密钥
application.yml配置示例
spring: ai: openai: # OpenAI配置 api-key: 你的OpenAI API密钥 chat: model: gpt-3.5-turbo # DeepSeek配置(替换上述OpenAI配置) # base-url: https://api.deepseek.com/v1 # api-key: 你的DeepSeek API密钥
3. 依赖版本说明
你当前使用的spring-ai-openai版本为1.0.0-M6里程碑版本,后续可替换为官方发布的稳定版(如1.0.0及以上),里程碑版本可能存在功能变动或潜在bug。
内容的提问来源于stack exchange,提问作者Vineet Tripathi
相关产品推荐
相关产品推荐

