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

Spring AI同一AI聊天提供商多模型自动配置可行性咨询

同一AI提供商多模型的Spring AI自动配置方案

核心结论

可以借助Spring AI的自动配置逻辑扩展实现多模型客户端,无需完全放弃自动配置从头编写;同时目前AWS Bedrock的Spring AI集成不支持通过ChatOptions在请求时动态指定模型,必须为不同模型单独配置客户端。

实现方案:复用自动配置创建多模型客户端

Spring AI的自动配置会自动初始化BedrockApi实例(包含AWS凭证、区域等基础配置),我们可以基于这个实例,自定义多个对应不同模型的AnthropicChatClient Bean,既复用自动配置的便利,又实现多模型需求。

步骤1:保留基础Bedrock自动配置

在application.yml中配置Bedrock的基础参数,让Spring AI自动初始化BedrockApi:

spring:
  ai:
    bedrock:
      aws:
        region: us-east-1
        access-key: ${AWS_ACCESS_KEY}
        secret-key: ${AWS_SECRET_KEY}

步骤2:自定义多模型客户端配置类

创建配置类,基于自动注入的BedrockApi,分别创建对应不同Anthropic模型的客户端Bean:

@Configuration
public class BedrockAnthropicMultiModelConfig {

    // 对应claude-instant-v1模型的客户端
    @Bean("claudeInstantChatClient")
    public AnthropicChatClient claudeInstantChatClient(BedrockApi bedrockApi) {
        return new AnthropicChatClient(bedrockApi, AnthropicChatOptions.builder()
                .model("claude-instant-v1")
                .temperature(0.7f)
                .build());
    }

    // 对应anthropic.claude-v2模型的客户端
    @Bean("claudeV2ChatClient")
    public AnthropicChatClient claudeV2ChatClient(BedrockApi bedrockApi) {
        return new AnthropicChatClient(bedrockApi, AnthropicChatOptions.builder()
                .model("anthropic.claude-v2")
                .temperature(0.9f)
                .maxTokens(4096)
                .build());
    }
}

步骤3:业务代码中注入指定客户端

通过@Qualifier注解指定要注入的模型客户端,实现不同模型的调用:

@Service
public class AIChatService {

    private final AnthropicChatClient claudeInstantClient;
    private final AnthropicChatClient claudeV2Client;

    public AIChatService(@Qualifier("claudeInstantChatClient") AnthropicChatClient claudeInstantClient,
                         @Qualifier("claudeV2ChatClient") AnthropicChatClient claudeV2Client) {
        this.claudeInstantClient = claudeInstantClient;
        this.claudeV2Client = claudeV2Client;
    }

    public String getFastResponse(String userPrompt) {
        return claudeInstantClient.call(userPrompt);
    }

    public String getDetailedResponse(String userPrompt) {
        return claudeV2Client.call(userPrompt);
    }
}

关键说明

  • 这种方式没有脱离Spring AI的自动配置体系,BedrockApi的初始化、AWS凭证管理等逻辑依然由自动配置处理,只是额外扩展了多模型客户端的Bean定义。
  • AWS Bedrock的不同模型(即使是同一厂商的)在请求结构、端点上存在差异,因此Spring AI的Bedrock集成没有提供类似OpenAI的OpenAiChatOptions#model动态切换能力,必须为每个模型单独创建客户端。

内容的提问来源于stack exchange,提问作者Jugi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 07:40:15