SpringAI集成本地AI大模型ollama(調用篇)非常簡單!!

一,前提準備本地ai模型

1,首先需要去ollama官網下載開源ai到本地

網址:Ollama

直接下載到本地,然后啟動ollama

啟動完成后,我們可以在cmd中執行ollama可以看到相關命令行

2, 下載ai moudle

然后我們需要在這個ai中給它下載好一個已有模型給我們自己使用

將命令行運行即可下載。

二, 準備本地代碼

1,首先準備pom文件中的相關依賴
    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>3.2.5</version></dependency><dependency><groupId>io.springboot.ai</groupId><artifactId>spring-ai-ollama</artifactId><version>1.0.3</version></dependency></dependencies>
2,搭建一個簡單的springboot框架

啟動類

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
yaml配置
spring:ai:ollama:base-url: localhost:11434
具體代碼實現--controller
import com.rojer.delegete.OllamaDelegete;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class OllamaController {@Autowired(required=true)OllamaDelegete ollamaDelegete;@GetMapping("/ai/getMsg")public Object getOllame(@RequestParam(value = "msg") String msg) {return ollamaDelegete.getOllame(msg);}@GetMapping("/ai/stream/getMsg")public Object getOllameByStream(@RequestParam(value = "msg") String msg) {return ollamaDelegete.getOllameByStream(msg);}
具體代碼實現--impl
import com.rojer.delegete.OllamaDelegete;
import org.springframework.ai.chat.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.ollama.OllamaChatClient;
import org.springframework.ai.ollama.api.OllamaApi;
import org.springframework.ai.ollama.api.OllamaOptions;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;import java.util.List;
import java.util.stream.Collectors;@Service
public class OllamaImpl implements OllamaDelegete {OllamaApi ollamaApi;OllamaChatClient chatClient;{   // 實例化ollamaollamaApi = new OllamaApi();OllamaOptions options = new OllamaOptions();options.setModel("llama3");chatClient = new OllamaChatClient(ollamaApi).withDefaultOptions(options);}/*** 普通文本調用* * @param msg* @return*/@Overridepublic Object getOllame(String msg) {Prompt prompt = new Prompt(msg);ChatResponse call = chatClient.call(prompt);return call.getResult().getOutput().getContent();}/*** 流式調用* * @param msg* @return*/@Overridepublic Object getOllameByStream(String msg) {Prompt prompt = new Prompt(msg);Flux<ChatResponse> stream = chatClient.stream(prompt);List<String> result = stream.toStream().map(a -> {return a.getResult().getOutput().getContent();}).collect(Collectors.toList());return result;}}

三,調用展示

我們看看普通調用的展示

流式調用的展示(我們跟ai聊天,回答不是一下子就出來的,就是這種流式調用所展示的這般)

這里不做具體的代碼深挖,只做基本基礎的運用。后期有機會會出個人模型訓練方法。另外我們可以去spring官網查看,目前支持的ai模型有哪些,我這里簡單截個圖,希望各位看官老爺點個贊,加個關注,謝謝!Spring AI

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11441.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11441.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11441.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于C#開發web網頁模板流程-登錄界面

前言&#xff0c;首先介紹一下本項目將要實現的功能 &#xff08;一&#xff09;登錄界面 實現一個不算特別美觀的登錄窗口&#xff0c;當然這一步跟開發者本身的設計美學相關&#xff0c;像蒟蒻博主就沒啥藝術細胞&#xff0c;勉強能用能看就行…… &#xff08;二&#xff09…

【vector】迭代器

Vector的基本數據結構 可以看到end指向的是數組的最后一個元素&#xff1b; 那么在使用函數遍歷的時候就要注意這種清理&#xff1b; 比如計算一個數組前5個數字的最小值&#xff1b; vector<int> prices{2,1,4,2,0,52,12};auto iter_min min_element(prices.begin(),pr…

NSSCTF | [LitCTF 2023]我Flag呢?

這道題沒啥好說的&#xff0c;題目標簽為源碼泄露&#xff0c;我們直接CtrlU查看網頁源碼就能在最后找到flag 本題完

深入學習指針2

前言 hello,我又來了&#xff0c;今天有我繼續帶領大家深入的學習指針&#xff0c;通過上次的學習&#xff0c;我們已經了解到了指針的基本概念&#xff0c;指針如何使用&#xff0c;指針使用的益處&#xff0c;以及一些相關的概念&#xff0c;那今天我們就繼續深入的學習&am…

Vue3專欄項目 -- 二、自定義From組件(下)

需求分析&#xff1a; 現在我們還需要一個整體的表單在單擊某個按鈕的時候可以循環的驗證每個input的值&#xff0c;最后我們還需要有一個事件可以得到最后驗證的結果&#xff0c;從而進行下一步的操作 如下&#xff0c;我們應該有一個form表單包裹著全部的input表單&#xf…

Java面試八股之Java中的IO流分為幾種

Java中的IO流分為幾種 按數據單位分類&#xff1a; 字節流&#xff08;Byte Stream&#xff09;&#xff1a;以字節&#xff08;8位二進制數&#xff09;為基本單位進行數據讀寫。字節流適合處理所有類型的數據&#xff0c;包括文本、圖像、音頻、視頻等二進制文件。抽象基類…

打破地域界限,HubSpot海外獲客系統引領企業走向國際化

在全球化的浪潮中&#xff0c;企業如何精準把握海外市場、高效獲取并轉化目標客戶&#xff0c;已成為決定其市場地位與未來發展的關鍵因素。HubSpot海外獲客系統以其獨特的視角、強大的功能和卓越的性能&#xff0c;正在引領全球營銷進入一個新的時代。今天運營壇將深入剖析Hub…

阿里巴巴找黃金寶箱(II) - 貪心思維

系列文章目錄 文章目錄 系列文章目錄前言一、題目描述二、輸出描述三、輸入描述四、java代碼五、測試用例 前言 本人最近再練習算法&#xff0c;所以會發布自己的解題思路&#xff0c;希望大家多指教 一、題目描述 一貧如洗的樵夫阿里巴巴在去砍柴的路上&#xff0c;無意中發…

KUKA機器人專業名詞解釋

1、CCU Cabinet Control Unit &#xff08;控制柜控制單元&#xff09; 2、CIB Cabinet Interface Board &#xff08;控制柜接口板&#xff09; 3、HMI Human Machine Interface &#xff08;人機界面&#xff09;&#xff1b;KUKA.HMI 是 KUKA 操作界面。 4、KCB …

工作組PTH

文章目錄 簡述RID 500本地管理員密碼噴灑何為RIP 500 安全標識符SID與RIDPTH為何必須是RID 500CrackMapExec進行密碼噴灑 簡述 在工作組PTH中為什么只有administrator賬號可以,下面進行講解與利用。RID 500本地管理員密碼噴灑 何為RIP 500 安全標識符 安全標識符 安全標識符…

觸摸OpenNJet,云原生世界觸手可及

&#x1f308;個人主頁: Aileen_0v0 &#x1f525;熱門專欄: 華為鴻蒙系統學習|計算機網絡|數據結構與算法 ?&#x1f4ab;個人格言:“沒有羅馬,那就自己創造羅馬~” 文章目錄 導言OpenNJet云原生引擎介紹云原生平臺的介紹優化與創新 為什么選擇OpenNJet云原生引擎如何在windo…

Pytorch基礎:torch.cuda.set_device函數

相關閱讀 Pytorch基礎https://blog.csdn.net/weixin_45791458/category_12457644.html?spm1001.2014.3001.5482 torch.cuda.set_device函數用于設置當前使用的cuda設備&#xff0c;在當擁有多個可用的GPU且能被pytorch識別的cuda設備情況下&#xff08;環境變量CUDA_VISIBLE_…

【AI大模型】自動生成紅隊攻擊提示--GPTFUZZER

本篇參考論文為&#xff1a; Yu J, Lin X, Xing X. Gptfuzzer: Red teaming large language models with auto-generated jailbreak prompts[J]. arXiv preprint arXiv:2309.10253, 2023. https://arxiv.org/pdf/2309.10253 一 背景 雖然LLM在今天的各個領域得到了廣泛的運用…

計算方法實驗7:實現三次樣條插值算法

任務 point.txt文件中包含了21個壓鐵的位置信息 利用大M法計算出木條在壓鐵控制下的曲線&#xff0c;邊界條件取自然邊界條件&#xff1b;將第10個壓鐵的位置移動至(0,10)&#xff0c;計算出新的曲線&#xff0c;觀察每個區間內的三次函數是否改變。 算法 μ i M i ? 1 2 …

MacOS java多版本安裝與管理

Home - SDKMAN! the Software Development Kit Manager # 安裝sdkman curl -s "https://get.sdkman.io" | bashsource "$HOME/.sdkman/bin/sdkman-init.sh"sdk version正常出現sdkman版本號就安裝成功了 # 安裝java # 安裝java8 sdk install java 8.0…

論文筆記:僅一個進程故障就無法達成共識

僅一個進程故障就無法達成共識 僅一個進程故障指的是在異步的分布式系統中 摘要 異步系統的共識問題&#xff08;consensus&#xff09;涉及一組進程&#xff0c;其中有的進程可能不可靠&#xff08;unreliable&#xff09;。共識問題要求可靠的進程一致地從兩個侯選中決定&…

【MATLAB源碼-第207期】基于matlab的單相光伏并網系統仿真,并網策略采用基于擾動觀測法的MPPT模型和使用電壓電流雙閉環SPWM控制。

操作環境&#xff1a; MATLAB 2022a 1、算法描述 本文將重點分析光伏發電最大功率點跟蹤&#xff08;MPPT&#xff09;技術和逆變器的并網控制技術&#xff0c;并在Simulink環境下建立模擬系統&#xff0c;以體現這些技術的應用與效果。文章結構如下&#xff1a;首先簡介光伏…

OpenAI下周發布更新;TikTok將自動標記AIGC;智譜AI亮相2024 ICLR

OpenAI 官宣下周舉辦直播發布更新 OpenAI 今日凌晨官宣&#xff0c;將在當地時間 5 月 13 日上午十點&#xff08;北京時間 5 月 14 日凌晨兩點&#xff09;在官網進行直播&#xff0c;屆時將演示一些 ChatGPT 和 GPT-4 的更新。 OpenAI CEO Sam Altman 補充表示&#xff0c;屆…

【算法刷題day44】Leetcode:518. 零錢兌換 II、377. 組合總和 Ⅳ

文章目錄 Leetcode 518. 零錢兌換 II解題思路代碼總結 Leetcode 377. 組合總和 Ⅳ解題思路代碼總結 草稿圖網站 java的Deque Leetcode 518. 零錢兌換 II 題目&#xff1a;518. 零錢兌換 II 解析&#xff1a;代碼隨想錄解析 解題思路 先遍歷物品&#xff0c;再遍歷背包。 代碼…

2024軟件測試面試必備面試題大全

1. 請自我介紹一下(需簡單清楚的表述自已的基本情況&#xff0c;在這過程中要展現出自信&#xff0c;對工作有激情&#xff0c;上進&#xff0c;好學) 面試官您好&#xff0c;我叫###&#xff0c;今年26歲&#xff0c;來自江西九江&#xff0c;就讀專業是電子商務&#xff0c;…