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.mzph.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;它将对象的创建和对象之间的依赖关系…