当前位置: 首页 > news >正文

如何在 Spring Boot 应用中配置多个 Spring AI 的 LLM 客户端

1. 概述

越来越多的现代应用开始集成大型语言模型(LLM),以构建更智能的功能。如何使用Spring AI快速整合LLM能力到自己的Spring Boot应用,在之前的博文中有过很多篇关于使用Spring AI使用不同供应商LLM的整合案例。虽然一个 LLM 能胜任多种任务,但只依赖单一模型并不总是最优。

不同模型各有侧重:有的擅长技术分析,有的更适合创意写作。简单任务更适合轻量、性价比高的模型;复杂任务则交给更强大的模型。

本文将演示如何借助 Spring AI,在 Spring Boot 应用中集成多个 LLM。

我们既会配置来自不同供应商的模型,也会配置同一供应商下的多个模型。随后基于这些配置,构建一个具备弹性的聊天机器人,在故障时可自动在模型间切换。

2. 配置不同供应商的 LLM

我们先在应用中配置来自不同供应商的两个 LLM。

在本文示例中,我们将使用 OpenAI 和 Anthropic 作为 AI 模型提供商

2.1. 配置主 LLM

我们先将一个 OpenAI 模型配置为主 LLM。

首先,在项目的 pom.xml 文件中添加所需依赖:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId><version>1.0.2</version>
</dependency>

该 OpenAI Starter 依赖 是对 OpenAI Chat Completions API 的封装,使我们能够在应用中与 OpenAI 模型交互。

接着,在 application.yaml 中配置我们的 OpenAI API Key 和聊天模型:

spring:ai:open-ai:api-key: ${OPENAI_API_KEY}chat:options:model: ${PRIMARY_LLM}temperature: 1

我们使用 ${} 属性占位符从环境变量中加载属性值。另外,我们将温度设置为 1,因为较新的 OpenAI 模型只接受这个默认值。

在完成上述属性配置后,Spring AI 会自动创建一个 OpenAiChatModel 类型的 bean。我们使用它来定义一个 ChatClient bean,作为与 LLM 交互的主要入口

@Configuration
class ChatbotConfiguration {@Bean@PrimaryChatClient primaryChatClient(OpenAiChatModel chatModel) {return ChatClient.create(chatModel);}
}

ChatbotConfiguration 类中,我们使用 OpenAiChatModel bean 创建了主 LLM 的 ChatClient

我们使用 @Primary 注解标记该 bean。当在组件中注入 ChatClient 且未使用 Qualifier 时,Spring Boot 会自动注入它。

2.2. 配置次级 LLM

现在,我们将配置一个来自 Anthropic 的模型作为次级 LLM。

首先,在 pom.xml 中添加 Anthropic Starter 依赖:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-anthropic
http://www.dtcms.com/a/464913.html

相关文章:

  • 【实时Linux实战系列】实时系统的可观测性:Prometheus 与 Grafana 集成
  • HTML 元素:构建网页的基础
  • HTML应用指南:利用GET请求获取全国中国建设银行网点位置信息
  • AI编程 | 基于飞书知识库+多模态大模型,打造B站视频AI笔记自动生成系统
  • 专门做预售的网站做app需要学什么编程
  • [VoiceRAG] RAG工具集 | attach_rag_tools | _search_tool | _report_grounding_tool
  • ppo笔记2
  • 小九源码-springboot082-java旅游攻略平台
  • 从 Kotlin 编译器 API 的变化开始: 2.2.2X -> 2.3.0-Beta1
  • go中调用合约
  • 用Python可视化国庆期间旅游概况与消费趋势
  • InitLWIP() 初始化
  • Python爬虫实战:获取新浪旅游热门景点排行榜及数据分析
  • C++设计模式之行为型模式:中介者模式(Mediator)
  • 为什么苏州网络进不了网站ps设计网站
  • [C# starter-kit] Domain Entities | `AuditableEntity`基类 | 跟踪变化 | 软删除
  • 深度复盘+完整源码:我把 libuv 的高性能内存池,用现代 C++ 给你扒了个底朝天
  • GUI 自动化与接口自动化:概念、差异与协同落地
  • 网站建设公司是怎么找客户idc网站模板源码下载
  • kafka的数据消费通过flinksql 入数到Doris的报错(Connection timed out)
  • 【汽车篇】AI深度学习在汽车零部件外观检测——石墨电极板的应用
  • 花型图案设计网站做网站自己能做百度推广吗
  • Java求职面试实战:从Spring Boot到微服务架构的技术探讨
  • 网站做要钱提高美誉度的网络营销方式
  • 自己动手制作鲁大师AiNas手机无线数据线,Termux 安装kod桌面浏览器,打造私人NAS云盘,让电脑和手机零配置无线传输文件
  • 【开题答辩全过程】以 爱心捐赠物资管理系统为例,包含答辩的问题和答案
  • python进阶_Day3
  • 工控机如何联网
  • 温岭市住房和城乡建设局网站云阳如何做网站
  • 大模型应用比赛-表格知识挑战赛总结