使用spring-ai-alibaba接入大模型

  spring-ai-alibaba 是Spring AI生态里与阿里巴巴相关的组件,借助它能够实现接入各类大模型。以下为你详细介绍如何使用 spring-ai-alibaba 接入不同大模型:

接入open ai

项目环境准备

        首先要创建一个Spring Boot项目,并且在 pom.xml 里添加必要的依赖。接入openapi为例(我这里使用硅基流动和openapi一样)官网:SiliconFlow

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.5.0</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.sqz</groupId><artifactId>spring-ai-deepseek</artifactId><version>0.0.1-SNAPSHOT</version><name>spring-ai-deepseek</name><description>spring-ai-deepseek</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>21</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--接入openapi--><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai-spring-boot-starter</artifactId><version>1.0.0-M6</version></dependency><!--接入ollama--><!--<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-ollama-spring-boot-starter</artifactId><version>1.0.0-M6</version></dependency>--><!--接入 通义千问--><!--   <dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter</artifactId><version>1.0.0-M6.1</version></dependency>--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></repository><repository><id>aliyunmaven</id><name>aliyun</name><url>https://maven.aliyun.com/repository/public</url></repository></repositories><pluginRepositories><pluginRepository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories>
</project>

配置认证信息

在 application.properties 或者 application.yml 中配置硅基流动认证信息,例如:

spring:application:name: alibaba-ai-demoai:openai:api-key: your-api-key  #apiKey到硅基流动官网获取免费的base-url: https://api.siliconflow.cnchat:options:model: Qwen/QwQ-32B  #使用通义千问模型

这里的 your-api-key 要替换成自己获取的API Key。

 编写代码接入大模型

下面是一个简单的Java代码示例,展示了如何使用 spring-ai-alibaba 接入openapi模型:

package com.sqz.springaideepseek.controller;import org.springframework.ai.chat.client.ChatClient;
import org.springframework.http.MediaType;
import org.springframework.http.codec.ServerSentEvent;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;@RestController
public class ChatController {private final ChatClient chatClient;public ChatController(ChatClient.Builder builder) {this.chatClient = builder.defaultSystem("你是一个万能助手,你可以回答任何问题。").build();}@GetMapping("/chat")public String chat(@RequestParam(value = "input") String input) {return this.chatClient.prompt().user(input).call().content();}/*** ChatClient 流式响应*/@GetMapping(value = "/stream/response", produces =  "text/event-stream;charset=UTF-8")public Flux<ServerSentEvent<String>> simpleChat(@RequestParam String message) {return chatClient.prompt().user(message).stream().content().map(content -> ServerSentEvent.<String>builder().data(content).build());}
}

测试:http://localhost:8080/chat?input=%E4%BD%A0%E6%98%AF%E8%B0%81

接入ollama 

将配置文件改为ollama配置:

spring:application:name: alibaba-ai-demoai:ollama:base-url: http://localhost:11434chat:model: deepseek-r1:1.5b

pom文件注释掉openapi,依赖 放开ollama注释

        <!--接入openapi--><!--<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai-spring-boot-starter</artifactId><version>1.0.0-M6</version></dependency>--><!--接入ollama--><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-ollama-spring-boot-starter</artifactId><version>1.0.0-M6</version></dependency>

接入阿里云大模型

pom文件注释掉openapi和ollama,打开alibaba

<dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter</artifactId><version>1.0.0-M6.1</version>
</dependency>

修改配置文件

spring:application:name: alibaba-ai-demoai:dashscope:api-key: your-api-key

这里的 your-api-key 要替换成你自己在阿里云获取的API Key。就可以测试了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/83526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字符串的向量处理技巧:KD树和TF-IDF向量

使用下面的技术&#xff0c;可以构建不用DL的搜索引擎。 向量搜索引擎使用KD-Tree KD-Tree 搭建以字符串向量为索引的树&#xff0c;以 O ( l o g n ) O(logn) O(logn) 的时间复杂度快速查找到最近的向量 代码来源&#xff1a;https://github.com/zhaozh10/ChatCAD/blob/ma…

Modbus TCP 转Canopen网关连接台达伺服驱动器的配置案例

本案例是使用欧姆龙PLC通过开疆智能ModbusTCP转Canopen网关连接台达A2伺服驱动器的配置案例。 配置过程&#xff1a; 首先打开PLC组态软件“Sysmac Studio”&#xff0c;新建项目并进行配置。 编写ModbusTCP的通讯程序。 设置连接的IP地址&#xff0c;端口号等参数。 设置Modb…

Vim Z 开头的视图滚动/折叠命令完整学习笔记

Vim Z 开头的视图滚动/折叠命令完整学习笔记 文章目录 Vim Z 开头的视图滚动/折叠命令完整学习笔记1. 核心概念2. 垂直滚动对齐命令2.1 基础对齐2.2 重画增强版 3. 横向滚动命令3.1 字符级滚动3.2 半屏滚动 4. 代码折叠命令4.1 基础折叠操作4.2 高级折叠操作4.3 全局折叠控制4.…

【Keepalived】Keepalived-2.3.4 已恢复对 CentOS 7 支持

之前在CentOS 7.9系统中对 Keepalived 2.3.2、2.3.3 版本进行编译和安装测试&#xff0c;都出现了编译报错&#xff0c;且官方文档中也给出了不再支持RHEL 7的申明&#xff0c;但是6月10日&#xff0c;Keeplived-2.3.4版本在CentOS 7.9系统中编译、安装成功。 对于此问题&#…

Java NIO 面试全解析:9大核心考点与深度剖析

文章目录 &#x1f680; Java NIO 面试全解析&#xff1a;9大核心考点与深度剖析&#x1f4cc; 一、基础概念&#xff1a;BIO/NIO/AIO 终极对比&#x1f4cc; 二、Buffer核心机制&#xff1a;状态机设计精髓Buffer状态机原理 &#x1f4cc; 三、零拷贝原理&#xff1a;高性能IO…

C++提高编—(模板,泛型,异常处理)

一 模板 1.1 模板概论 以下图为例子&#xff0c;提供了三个西装的证件照&#xff0c;谁都可以取拍照&#xff0c;可以是小孩&#xff0c;男女人&#xff0c;也可以是某些动物等等等。n那么我们这个模板也是这样&#xff0c;它可以是任何类型&#xff0c;基础类型&#xff0c;c…

Python图像处理基础(六)

Python图像处理基础(六) 文章目录 Python图像处理基础(六)3.4 双层图像3.5 具有更多色阶的位图数据3.6 基于调色板的图像3.6.1 超过 256 种颜色的图像3.7 处理透明度3.7.1 Alpha 通道3.7.2 透明调色板条目3.7.3 透明颜色3.8 隔行扫描和交替像素排序3.4 双层图像 某些类型的…

卷积神经网络(一)

第七章 卷积神经网络 从今天开始学习卷积神经网络的内容。 本章的主题是卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;。 CNN被用于图像识别、语音识别等各种场合&#xff0c;在图像识别的比赛中&#xff0c;基于 深度学习的方法几乎都以…

OpenCV 多边形绘制与填充

一、知识点 1、void polylines(InputOutputArray img, InputArrayOfArrays pts, bool isClosed, const Scalar & color, int thickness 1, int lineType LINE_8, int shift 0 ); (1)、在图像上绘制多边形曲线。 (2)、参数说明: img: 输入、输出参数&#xff0…

C#接口代码记录

using System;namespace InterfacesExample {// 定义接口public interface INBAPlayable{void KouLan();}public interface ISupermanable{void Fly();}// 基类public class Person{public void CHLSS(){Console.WriteLine("人类吃喝拉撒睡");}}// Student 类实现多个…

SpringDataJpa实体类中属性顺序与数据库中生成字段顺序不一致的问题

自己写的代码覆盖hibernate中的代码 翻了翻源码发现&#xff0c;很多地方都是使用LinkedHashMap或者是List来传输Entity里面的fields&#xff0c;于是感觉Hibernate应该是考虑到使用Entity里面定义的fields的顺序来实现建表语句里的表字段顺序的。   于是就一步步跟踪下去&…

软件架构期末复习

题型 填空题 20分,2分/空,10空 选择题 30分,2分/题,15题 简答题 30分,6分/题,5题(概念+分析) 案例分析题 20分,5个小题(综合) 分值:体系结构、设计模式各占50% 考试内容 体系结构 SA基础(SA03PPT):SA概念、SA与软件过程(阶段)的关系、SA核心概念模型(重要…

Oracle ADG 日常巡检指南

一、基础状态检查 数据库角色与模式 SELECT db_unique_name, open_mode, database_role, switchover_status FROM v$database;预期状态&#xff1a; 主库&#xff1a;OPEN_MODEREAD WRITE, DATABASE_ROLEPRIMARY备库&#xff1a;OPEN_MODEREAD ONLY WITH APPLY, DATABASE_ROLE…

【MV】key_moments 与 continuous_timeline的编排权衡

一、编排顺序: key_moments → continuous_timeline* 建议使用顺序:key_moments → continuous_timeline 📊 两者关系 key_moments:从continuous_timeline中精选出来的重点(约11个关键时间点)continuous_timeline:完整的时间轴(37个片段,覆盖每句歌词)🎭 实际编…

Tomcat线程模型

目录 1 Linux I/O模型 2 Linux I/O模型分类 3 Tomcat支持的I/O模型 4 Tomcat I/O模型选型 5 Tomcat NIO实现 6 Tomcat异步IO实现 1 Linux I/O模型 I/O&#xff1a;在计算机内存和外部设备之间拷贝数据的过程程序通过cpu向外部设备发出读指令&#xff0c;数据从外部设置拷贝至内…

最新Spring Security实战教程企业级安全方案设计实现

最新Spring Security实战教程&#xff08;十七&#xff09;企业级安全方案设计 - 多因素认证&#xff08;MFA&#xff09;实现 1. 前言2. 为什么需要多因素认证&#xff1f; 传统认证的风险MFA的核心优势常见多因素认证实现方案 3. 多因素认证的核心原理4. 系统架构与流程设计…

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…

大话软工笔记—架构的概要设计

架构的概要设计是在需求工程分析成果的基础之上对整个系统进行的顶层规划&#xff0c;重点是确定设计规范&#xff08;理念、主线等&#xff09;&#xff0c;从大的范围和高度对业务进行规划和设计&#xff0c;架构概要设计的成果“业务架构图”&#xff0c;是后续各阶段设计的…

Flink CDC —部署模式

一、Standalone 模式 独立模式是Flink最简单的部署模式。本简短指南将向您展示如何下载最新稳定版本的Flink&#xff0c;安装和运行它。 您还将运行一个示例Flink CDC作业&#xff0c;并在web UI中查看它。 1、准备 Flink在所有类似UNIX的环境中运行&#xff0c;即Linux、Mac…

day029-Shell自动化编程-计算与while循环

文章目录 1. read 交互式初始化变量1.1 案例-安装不同的软件1.2 案例-比较大小 2. 计算2.1 bc2.2 awk2.3 expr2.4 let2.5 案例-计算内存的空闲率2.6 案例-检查域名过期时间和https证书过期时间 3. 循环3.1 循环控制语句3.2 for循环-c语言格式3.3 while循环3.3.1 案例-猜数字3.3…