You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring AI集成ChatGroq自定义配置时遭遇API密钥错误与OpenAiApi构造器参数不匹配问题

Spring AI集成ChatGroq自定义配置时遭遇API密钥错误与OpenAiApi构造器参数不匹配问题

看起来你在Spring AI里自定义配置ChatGroq的时候碰到了两个头疼的问题,我来帮你一步步拆解解决:

问题1:BeanCreationException - OpenAI API key必须设置

问题原因

你已经禁用了Spring AI默认的Chat Client(spring.ai.chat.client.enabled=false),但Spring AI的自动配置还包含了音频相关的自动配置类(比如OpenAiAudioSpeechAutoConfiguration)。这些自动配置类会尝试创建OpenAI的音频模型Bean,而它们默认需要读取OpenAI的API密钥配置,但你并没有设置,所以就抛出了这个错误。

解决方案

有两种简单的解决方式,选一种适合你的就行:

方案A:禁用不需要的OpenAI自动配置类

如果你完全不需要Spring AI的OpenAI音频功能,直接在启动类里排除相关的自动配置类:

import org.springframework.ai.model.openai.autoconfigure.OpenAiAudioSpeechAutoConfiguration;
import org.springframework.ai.model.openai.autoconfigure.OpenAiAudioTranscriptionAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(exclude = {
    OpenAiAudioSpeechAutoConfiguration.class,
    OpenAiAudioTranscriptionAutoConfiguration.class
})
public class YourApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

方案B:配置一个占位符API密钥

如果你不想修改启动类,可以在application.properties里加一个dummy的OpenAI API密钥,只是用来让自动配置类通过初始化(实际不会用到这个密钥,因为你用的是Groq的自定义配置):

# 占位符,避免音频自动配置报错
spring.ai.openai.api-key=dummy
# 你的Groq配置
spring.ai.chat.client.enabled=false
groq.api-key=<your-actual-groq-api-key>
groq.base-url=https://api.groq.com/openai

问题2:OpenAiApi构造器参数不匹配

问题原因

你看到的官方文档可能对应了旧版本的Spring AI,而你当前使用的新版本中OpenAiApi的构造器参数已经更新了,不再支持直接传入(String baseUrl, String apiKey)这种简单形式,而是需要更完整的参数列表(包括ApiKey对象、RestClientBuilder等)。

解决方案

推荐使用Builder模式来创建OpenAiApi,这是最简洁且兼容不同版本的方式,就像你最开始代码里写的那样(我稍微优化一下):

@Configuration
public class ChatClientConfig {

    @Value("${groq.api-key}")
    private String groqApiKey;

    @Value("${groq.base-url}")
    private String groqBaseUrl;

    @Bean
    public OpenAiChatModel customGroqChatClient() {
        OpenAiApi groqOpenAiApi = OpenAiApi.builder()
                .baseUrl(groqBaseUrl)
                .apiKey(ApiKey.create(groqApiKey))
                .build();

        return OpenAiChatModel.builder()
                .openAiApi(groqOpenAiApi)
                .build();
    }
}

如果一定要用构造器方式(不推荐,因为参数多且易变),需要按新版本的要求传入所有必要参数:

import org.springframework.ai.openai.api.ApiKey;
import org.springframework.web.client.DefaultResponseErrorHandler;
import org.springframework.web.client.RestClient;
import org.springframework.web.reactive.function.client.WebClient;

// 构造器方式示例
String baseUrl = "https://api.groq.com/openai";
String apiKey = System.getenv("GROQ_API_KEY");

OpenAiApi groqOpenAiApi = new OpenAiApi(
        baseUrl,
        ApiKey.create(apiKey),
        null, // 自定义请求头,不需要就传null
        null, // 组织ID,不需要就传null
        null, // 默认模型,不需要就传null
        RestClient.builder(),
        WebClient.builder(),
        new DefaultResponseErrorHandler()
);

最后提醒

不同版本的Spring AI API可能会有差异,建议你:

  1. 确保查看的官方文档和你使用的Spring AI版本完全对应
  2. 优先使用Builder模式创建客户端,因为它比直接调用构造器更灵活、更易维护

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 09:58:04