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

Spring-Ai-Alibaba [03] multiple-llm-client-demo

Spring-Ai-Alibaba [03] multiple-llm-client-demo概述开发环境项目结构pom.xml 文件config 配置类控制层启动类验证千问模型DeepSeek 模型概述本文是 Spring AI Alibaba 框架学习系列第三篇介绍 项目中如何使用多个模型当前 Demo 中同时使用千问、DeepSeek两个模型。代码上传至 Giteehttps://gitee.com/xbjct/spring-ai-alibaba-demo开发环境基础框架: Spring Boot 3.5.14AI 框架: Spring AI 1.1.2 Spring AI Alibaba 1.1.2.2大模型: 阿里云通义千问 (qwen-plus)构建工具: Maven 3.9.11JDK 版本: 21.0.10项目结构pom.xml 文件projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.junjiu.spring.ai.alibaba.demo/groupIdartifactIdSpring-AI-Alibaba-Demo/artifactIdversion1.0-SNAPSHOT/version/parentartifactId03-multiple-llm-client-demo/artifactIdpackagingjar/packagingdescription实现多个 LLM 模型并使用不同的模型进行对话/descriptionname03-multiple-llm-client-demo/nameurlhttp://maven.apache.org/urlpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/properties/projectconfig 配置类packagecom.junjiu.spring.ai.alibaba.demo.config;importcom.alibaba.cloud.ai.dashscope.api.DashScopeApi;importcom.alibaba.cloud.ai.dashscope.chat.DashScopeChatModel;importcom.alibaba.cloud.ai.dashscope.chat.DashScopeChatOptions;importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.ai.chat.model.ChatModel;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;/** * program: Spring-AI-Alibaba-Demo * ClassName: LLMConfig * description: * * author: 君九 * create: 2026-05-22 22:02 * version: 1.0 **/ConfigurationpublicclassLLMConfig{privatefinalStringDEEP_SEEK_MODELdeepseek-v4-pro;privatefinalStringQWEN_MODELqwen3.7-max;Value(${spring.ai.dashscope.base-url})privateStringbaseUrl;Value(${spring.ai.dashscope.api-key})privateStringapiKey;/** * 创建 ChatModel 模型对象并注入到 Spring 容器中。 * return */BeanpublicChatModelqwenChatModel(){returnDashScopeChatModel.builder().dashScopeApi(DashScopeApi.builder().baseUrl(baseUrl).apiKey(apiKey).build()).defaultOptions(DashScopeChatOptions.builder().model(QWEN_MODEL).build()).build();}Bean(nameqwenChatClient)publicChatClientqwenChatClient(){returnChatClient.create(qwenChatModel());}/** * 创建 ChatModel 模型对象并注入到 Spring 容器中。 * return */BeanpublicChatModeldeepSeekChatModel(){returnDashScopeChatModel.builder().dashScopeApi(DashScopeApi.builder().baseUrl(baseUrl).apiKey(apiKey).build()).defaultOptions(DashScopeChatOptions.builder().model(DEEP_SEEK_MODEL).build()).build();}Bean(namedeepSeekChatClient)publicChatClientdeepSeekChatClient(){returnChatClient.create(deepSeekChatModel());}}控制层package com.junjiu.spring.ai.alibaba.demo.controller; import jakarta.annotation.Resource; import org.springframework.ai.chat.client.ChatClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * program: Spring-AI-Alibaba-Demo * ClassName: HelloController * description: * * author: 君九 * create: 2026-05-22 22:13 * version: 1.0 **/ RestController RequestMapping(/hello) public class HelloController { Resource(name qwenChatClient) private ChatClient qwenChatClient; Resource(name deepSeekChatClient) private ChatClient deepSeekChatClient; /** * 调用 qwen 模型 * param message * return */ GetMapping(/qwen) public String qwen(RequestParam(name message, defaultValue 你是谁) String message) { return qwenChatClient.prompt() .user(message) .call() .content(); } /** * 调用 deepseek 模型 * param message * return */ GetMapping(/deepSeek) public String deepSeek(RequestParam(name message, defaultValue 你是谁) String message) { return deepSeekChatClient.prompt() .user(message) .call() .content(); } }启动类packagecom.junjiu.spring.ai.alibaba.demo;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.boot.context.event.ApplicationReadyEvent;importorg.springframework.context.ApplicationListener;importorg.springframework.core.env.Environment;/** * program: Spring-AI-Alibaba-Demo * ClassName: MultipleLLMApplication * description: * * author: 君九 * create: 2026-05-22 21:29 * version: 1.0 **/SpringBootApplicationpublicclassMultipleLLMApplication{publicstaticvoidmain(String[]args){SpringApplication.run(MultipleLLMApplication.class,args);}publicApplicationListenerApplicationReadyEventreadyEventApplicationListener(Environmentenv){returnevent-{System.out.println(\n);System.out.println(✅ Application is ready!);System.out.println(AIALI_API_KEYSystem.getenv(AIALI_API_KEY));System.out.println(\n);};}}验证打开浏览器访问千问模型http://localhost:5826/hello/qwenDeepSeek 模型http://localhost:5826/hello/deepSeek代码上传至 Giteehttps://gitee.com/xbjct/spring-ai-alibaba-demo若有转载请标明出处https://blog.csdn.net/CharlesYuangc/article/details/161324362
http://www.gsyq.cn/news/1355981.html

相关文章:

  • 抖音无水印视频下载终极指南:免费快速获取高清素材
  • CANN 异步推理:隐藏推理延迟提升吞吐量的完整方案
  • Python EXE逆向工程实战指南:3步高效提取源代码的完整教程
  • OpCore-Simplify:三步搞定OpenCore EFI配置的终极解决方案
  • 如何用SUMO-RL构建智能交通信号系统:强化学习实战指南
  • 华硕笔记本性能优化终极指南:三步搞定轻量级控制神器GHelper
  • 甲言Jiayan:5大功能让文言文处理变得如此简单
  • PDF补丁丁:免费开源PDF工具箱,一键解决书签合并旋转等所有难题
  • Nodejs 后端服务如何集成多模型能力处理用户提问
  • 洛雪音乐音源:如何免费畅享全网无损音乐的终极指南
  • SolveSpace参数化CAD设计:5大核心功能深度解析与实战指南
  • Vue3与Element Plus在企业级后台系统中的架构设计与深度实践
  • 革命性macOS窗口管理:Topit智能窗口置顶工具的深度解析与实战指南
  • MATLAB机器人工具箱终极指南:从零到精通的快速入门完整教程
  • 全网最实用的网页完整保存手册:再也不怕点击才显示的内容消失了
  • 使用 Python 和 Taotoken 官方风格 SDK 实现你的第一个 AI 对话应用
  • 深度解析Python SECS/GEM协议实现:secsgem库的现代架构设计
  • 5个关键步骤:使用SUMO-RL构建城市智能交通信号控制系统
  • 洛雪音乐音源配置终极指南:5分钟打造你的专属音乐库
  • STM32开发实战:CubeMX与Visual Studio环境搭建的两种高效路径
  • 不止于调试:用Jetson Xavier NX的UART连接传感器与Arduino,打造边缘计算小项目
  • 手把手教你用ESP32C3驱动WS2812灯带:从RMT底层配置到彩虹灯效实现
  • AI Agent Runtime重构:Session事件日志如何解决上下文溢出顽疾
  • 华为交换机VRRP实战:如何用主备网关实现市场部与技术部的网络负载分担?
  • Claude学术写作辅助应用:今天不部署,下周组会PPT将暴露你仍用Word手动调格式
  • 仅限本周开放|Midjourney水效果渲染私藏参数库(含8个失效规避checklist+实时渲染反馈诊断表)
  • STM32F103C8T6+TJA1042+UTA0403:一个CAN通讯新手踩过的所有坑(附完整接线图与代码)
  • 扩散图神经网络在机器人嗅觉导航中的应用与优化
  • 企业级应用如何通过Taotoken统一管理多个AI模型API密钥
  • Kibana 将 dashboard 加载时间最高缩短 25% —— 其背后的 polling 策略揭秘