使用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
繁體地址,請注明出處:http://hk.pswp.cn/web/83526.shtml
英文地址,請注明出處:http://en.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…