A3. Springboot3.x集成LLama3.2實戰

本文將介紹集成ollama官網提供的API在Springboot工程中進行整合。由于沒找到java-llama相關合適的sdk可以使用,因此只好對接官方給出的API開發一套RESTFull API服務。下面將從Ollama以下幾個API展開介紹,逐漸的了解其特性以及可以干些什么。具體llama API說明可參數我前面寫的《A2. 大語言模型llama API服務調研》文章,根據官網整理出來的參數定義與數據響應說明等。

  • Ollama Version(版本接口)
  • List Local Models(列出本地可用的模型)
  • List Running Models(列出已加載到內存即正式運行的模型)
  • Create a Model(創建一個模型)
  • Show Model Information(查看模型信息)
  • Copy a Model(復制模型)
  • Delete a Model(刪除一個模型)
  • Pull a Model(拉取一個模型)
  • Push a Model(推送一個模型)
  • Generate Embeddings(文本嵌入-將文本轉換為固定維度的向量)
  • Generate a completion(根據提示生成答復性文本)
  • Load a Model (加載模型到內存)
  • Unload a Model(從內存中卸載模型)
  • Generate a chat completion(根據對話內容生成內容)

Springboot工程創建及基礎組件引用

這里請參考我前面寫的《Springboot3.x工程創建及必要引用(基礎篇)》這篇文章,因為這里直接用API方式,并未涉及其它特殊三方包的引用。

添加服務開發基礎框架

  1. 導入導入服務基礎依賴包

倉庫地址:https://mvn.geease.com/repository/cloud-group/

<dependency><groupId>com.eyinfo</groupId>    <artifactId>webx</artifactId><version>1.0.22</version>
</dependency>

Ollama服務基礎地址

即是你Springboot項目部署機器或容器所對應的主機地址(這里記為baseUrl=http://:)
以下接口實現服務的jar包已發布到mavenCentral中央倉庫,請前往下載后部署到自己的服務上即可。

Ollama Version(版本接口)

請求方式:GET
請求路徑:baseUrl/llama/version
響應參數:

字段描述
versionollama大模型工具盒子版本

響應示例:

{"code": 0,"msg": "success","data": {"version": "0.5.4"}
}

List Local Models(列出本地可用的模型)

請求方式:GET
請求路徑:baseUrl/llama/models
響應參數(結果中單個對象各字段說明):

字段描述
size模型大小,以字節為單位
name模型版本名稱
digest模型的校驗和,用于驗證模型的完整性。這個字段是一個哈希值,確保模型在傳輸過程中沒有被篡改。
model模型類型
details
|— parent_model父模型
|— format模型格式
|— family模型系列
|— families模型系列列表。這里重復提到了"mllama",可能是一個錯誤或者表示該模型屬于多個系列
|— parameter_size模型參數大小,以字節為單位
|— quantization_level量化級別
modified_at模型最后修改的時間

響應示例:

{"code": 0,"msg": "success","data": [{"size": 4661224786,"name": "mario_copy:latest","digest": "aa1ae71e221765d5e1d16003b62f275a28a14d5e9611fe5be769a13050732a67","model": "mario_copy:latest","details": {"parent_model": "","format": "gguf","family": "llama","families": ["llama"],"parameter_size": "8.0B","quantization_level": "Q4_0"},"modified_at": "2025-01-11T16:44:27.715875862+08:00"}]
}

List Running Models(列出已加載到內存即正式運行的模型)

請求方式:GET
請求路徑:baseUrl/llama/running/models
響應參數:參考List Local Models(列出本地可用的模型)
響應示例:參考List Local Models(列出本地可用的模型)

Create a Model(創建一個模型)

請求方式:POST
請求路徑:baseUrl/llama/model/create
請求參數:

參數名描述
model指定創建的模型名稱
modelfile(可選):模型文件的內容
stream(可選)如果是false,響應將作為單個響應對象返回,而不是對象流
path(可選):模型文件的路徑
quantize(可選):創建非量化(例如float16)模型 量化類型:q2_K、q3_K_L、q3_K_M、q3_K_S、q4_0、q4_1、q4_K_M、q4_K_S、q5_0、q5_1、q5_K_M、q5_K_S、q6_K、q8_0

請求示例:

curl baseUrl/llama/model/create -X POST -H "Content-Type: application/json" -d '{"model": "mario","modelfile": "FROM llama3\nSYSTEM You are mario from Super Mario Bros."
}'

調用模型(Java調用Ollama API創建模型關鍵代碼):

WebClient webClient = webClientBuilder.baseUrl(lLamaConfig.getHost()).build();
return webClient.post().uri("/api/create")//設置參數接收數據類型.contentType(MediaType.APPLICATION_JSON)//這里設置參數對象.bodyValue(modelRequest)//接收三方API流式響應數據類型,以文本流方式.accept(MediaType.TEXT_EVENT_STREAM).retrieve().bodyToFlux(String.class);

響應示例:

data:{"status":"using existing layer sha256:6a0746a1ec1aef3e7ec53868f220ff6e389f6f8ef87a01d77c96807de94ca2aa"}data:{

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

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

相關文章

面試:類模版中函數聲明在.h,定義在.cpp中,其他cpp引用引入這個頭文件,會有什么錯誤?

1、概述 類模版中函數聲明在.h&#xff0c;定義在.cpp中&#xff0c;其他cpp引用引入這個頭文件&#xff0c;會有什么錯誤?報編譯錯誤&#xff1a;error C2512: Demo<int>: no appropriate default constructor available 舉例如下代碼&#xff1a;demo.h 聲明模版類 …

記一次學習skynet中的C/Lua接口編程解析protobuf過程

1.引言 最近在學習skynet過程中發現在網絡收發數據的過程中數據都是裸奔&#xff0c;就想加入一種數據序列化方式&#xff0c;json、xml簡單好用&#xff0c;但我就是不想用&#xff0c;于是就想到了protobuf&#xff0c;對于protobuf C/C的使用個人感覺有點重&#xff0c;正好…

SQLAlchemy

https://docs.sqlalchemy.org.cn/en/20/orm/quickstart.htmlhttps://docs.sqlalchemy.org.cn/en/20/orm/quickstart.html 聲明模型 在這里&#xff0c;我們定義模塊級構造&#xff0c;這些構造將構成我們從數據庫中查詢的結構。這種結構被稱為 聲明式映射&#xff0c;它同時定…

Trimble自動化激光監測支持歷史遺產實現可持續發展【滬敖3D】

故事橋&#xff08;Story Bridge&#xff09;位于澳大利亞布里斯班&#xff0c;建造于1940年&#xff0c;全長777米&#xff0c;橫跨布里斯班河&#xff0c;可載汽車、自行車和行人往返于布里斯班的北部和南部郊區。故事橋是澳大利亞最長的懸臂橋&#xff0c;是全世界兩座手工建…

CentOS 和 Ubantu你該用哪個

文章目錄 **一、CentOS 和 Ubuntu 的詳細介紹****1. CentOS****1.1 基本信息****1.2 特點****1.3 缺點** **2. Ubuntu****2.1 基本信息****2.2 特點****2.3 缺點** **二、CentOS 和 Ubuntu 的異同****1. 相同點****2. 不同點****3. 使用體驗對比** **三、總結和選擇建議** Cent…

Android RIL(Radio Interface Layer)全面概述和知識要點(3萬字長文)

在Android面試時,懂得越多越深android framework的知識,越為自己加分。 目錄 第一章:RIL 概述 1.1 RIL 的定義與作用 1.2 RIL 的發展歷程 1.3 RIL 與 Android 系統的關系 第二章:RIL 的架構與工作原理 2.1 RIL 的架構組成 2.2 RIL 的工作原理 2.3 RIL 的接口與協議…

前端學習-事件對象與典型案例(二十六)

目錄 前言 事件對象 目標 事件對象是什么 語法 獲取事件對象 部分常用屬性 示例代碼 示例代碼&#xff1a;評論回車發布 總結 前言 長風破浪會有時&#xff0c;直掛云帆濟滄海。 事件對象 目標 能說出什么是事件對象 事件對象是什么 也是個對象&#xff0c;這個對…

Playwright vs Selenium:全面對比分析

在現代軟件開發中&#xff0c;自動化測試工具在保證應用質量和加快開發周期方面發揮著至關重要的作用。Selenium 作為自動化測試領域的老牌工具&#xff0c;長期以來被廣泛使用。而近年來&#xff0c;Playwright 作為新興工具迅速崛起&#xff0c;吸引了眾多開發者的關注。那么…

Windows 程序設計3:寬窄字節的區別及重要性

文章目錄 前言一、寬窄字節簡介二、操作系統及VS編譯器對寬窄字節的編碼支持1. 操作系統2. 編譯器 三、寬窄字符串的優缺點四、寬窄字節數據類型總結 前言 Windows 程序設計3&#xff1a;寬窄字節的區別及重要性。 一、寬窄字節簡介 在C中&#xff0c;常用的字符串指針就是ch…

進階——十六屆藍橋杯嵌入式熟練度練習(LED的全開,全閉,點亮指定燈,交替閃爍,PWM控制LED呼吸燈)

點亮燈的函數 void led_show(unsigned char upled) { HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC,upled<<8,GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RE…

力扣 最大子數組和

動態規劃&#xff0c;前綴和&#xff0c;維護狀態更新。 題目 從題可以看出&#xff0c;找的是最大和的連續子數組&#xff0c;即一個數組中的其中一個連續部分。從前往后遍歷&#xff0c;每遍歷到一個數可以嘗試做疊加&#xff0c;注意是嘗試&#xff0c;因為有可能會遇到一個…

Homestyler 和 Tripo AI 如何利用人工智能驅動的 3D 建模改變定制室內設計

讓設計夢想照進現實 在Homestyler,我們致力于為每一個夢想設計師提供靈感的源泉,而非挫折。無論是初學者打造第一套公寓,或是專業設計師展示作品集,我們的直觀工具都能讓您輕松以驚人的3D形式呈現空間。 挑戰:實現定制設計的新紀元 我們知道,將個人物品如傳家寶椅子、…

如何當前正在運行的 Elasticsearch 集群信息

要查看當前正在運行的 Elasticsearch 集群信息&#xff0c;可以通過以下幾種方法&#xff1a; 1. 使用 _cluster/health API _cluster/health API 返回集群的健康狀態、節點數量、分片狀態等信息。可以用 curl 命令直接訪問&#xff1a; curl -X GET "http://localhost…

算法練習4——一個六位數

這道題特別妙 大家仔細做一做 我這里采用的是動態規劃來解這道題 結合題目要求找出數與數之間的規律 抽象出狀態轉移方程 題目描述 有一個六位數&#xff0c;其個位數字 7 &#xff0c;現將個位數字移至首位&#xff08;十萬位&#xff09;&#xff0c;而其余各位數字順序不…

client-go 的 QPS 和 Burst 限速

1. 什么是 QPS 和 Burst &#xff1f; 在 kubernetes client-go 中&#xff0c;QPS 和 Burst 是用于控制客戶端與 Kubernetes API 交互速率的兩個關鍵參數&#xff1a; QPS (Queries Per Second) 定義&#xff1a;表示每秒允許發送的請求數量&#xff0c;即限速器的平滑速率…

B-tree 數據結構詳解

1. 引言 1.1 什么是 B-tree&#xff1f; B-tree&#xff08;Balanced Tree&#xff0c;平衡樹&#xff09;是一種自平衡的多路搜索樹數據結構&#xff0c;其核心特性包括&#xff1a; 多路性&#xff1a; 每個節點可以包含多個關鍵字和子節點&#xff0c;而非僅二分。平衡性…

Python 正則表達式完全指南

# Python 正則表達式完全指南 正則表達式&#xff08;Regular Expression&#xff09;是Python中進行文本處理的強大工具。本指南將詳細介紹Python中正則表達式的使用方法和實踐技巧。 ## 1. 基礎知識 ### 1.1 導入正則表達式模塊 python import re ### 1.2 創建正則表達式 在…

Vue的scoped原理是什么

CSS常見模塊化方案 BEM&#xff08;Block Element Modifier&#xff09;: BEM是一種流行的命名約定&#xff0c;它通過特定的命名規則來組織CSS類名&#xff0c;使得樣式具有模塊化、可重用性和可讀性。BEM的命名規則是&#xff1a;block__element--modifier。 block&#xf…

【LC】3270. 求出數字答案

題目描述&#xff1a; 給你三個 正 整數 num1 &#xff0c;num2 和 num3 。 數字 num1 &#xff0c;num2 和 num3 的數字答案 key 是一個四位數&#xff0c;定義如下&#xff1a; 一開始&#xff0c;如果有數字 少于 四位數&#xff0c;給它補 前導 0 。答案 key 的第 i 個數…

太原理工大學軟件設計與體系結構 --javaEE

這個是簡答題的內容 選擇題的一些老師會給你們題庫&#xff0c;一些注意的點我會做出文檔在這個網址 項目目錄預覽 - TYUT復習資料:復習資料 - GitCode 希望大家可以給我一些打賞 什么是Spring的IOC和DI IOC 是一種設計思想&#xff0c;它將對象的創建和對象之間的依賴關系…