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,一经查实,立即删除!

相关文章

记一次学习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;是全世界两座手工建…

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形式呈现空间。 挑战:实现定制设计的新纪元 我们知道,将个人物品如传家宝椅子、…

算法练习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;即限速器的平滑速率…

太原理工大学软件设计与体系结构 --javaEE

这个是简答题的内容 选择题的一些老师会给你们题库&#xff0c;一些注意的点我会做出文档在这个网址 项目目录预览 - TYUT复习资料:复习资料 - GitCode 希望大家可以给我一些打赏 什么是Spring的IOC和DI IOC 是一种设计思想&#xff0c;它将对象的创建和对象之间的依赖关系…

深度学习知识点:LSTM

文章目录 1.应用现状2.发展历史3.基本结构4.LSTM和RNN的差异 1.应用现状 长短期记忆神经网络&#xff08;LSTM&#xff09;是一种特殊的循环神经网络(RNN)。原始的RNN在训练中&#xff0c;随着训练时间的加长以及网络层数的增多&#xff0c;很容易出现梯度爆炸或者梯度消失的问…

mmdet

一&#xff0c;configs/_base_ 1.default_runtime.py 2.schedule_1x.py 二&#xff0c;mmdet 1.datasets/coco.py/CocoDataset METAINFO {classes:(milk, red, spring, fanta, sprite, pepsi, king, ice, cola, scream ),# palette is a list of color tuples, which is us…

ElasticSearch 认识和安装ES

文章目录 一、为什么学ElasticSearch?1.ElasticSearch 简介2.ElasticSearch 与传统数据库的对比3.ElasticSearch 应用场景4.ElasticSearch 技术特点5.ElasticSearch 市场表现6.ElasticSearch 的发展 二、认识和安装ES1.认识 Elasticsearch&#xff08;简称 ES&#xff09;2.El…

第34天:安全开发-JavaEE应用反射机制攻击链类对象成员变量方法构造方法

时间轴&#xff1a; Java反射相关类图解&#xff1a; 反射&#xff1a; 1、什么是 Java 反射 参考&#xff1a; https://xz.aliyun.com/t/9117 Java 提供了一套反射 API &#xff0c;该 API 由 Class 类与 java.lang.reflect 类库组成。 该类库包含了 Field 、 Me…

汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2)

汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2) 下面我们继续来介绍AutoSAR CP分层架构&#xff0c;下面的文字和图来自AutoSAR官网目前最新的标准R24-11的分层架构手册。该手册详细讲解了AutoSAR分层架构的设计&#xff0c;下面让我们来一起学习一下。 Introductio…

css面试常考布局(圣杯布局、双飞翼布局、三栏布局、两栏布局、三角形)

两栏布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head> &…

网络攻击行为可视化分析系统【数据分析 + 可视化】

一、系统背景 随着信息技术的快速发展&#xff0c;网络已成为现代社会不可或缺的一部分。然而&#xff0c;与此同时&#xff0c;网络攻击手段也日益多样化和复杂化&#xff0c;给企业和个人的信息安全带来了极大的威胁。传统的网络攻击分析方法往往依赖于人工分析和处理大量的…

利用obs studio制作(人像+屏幕)录制影像

1.什么是obs? OBS&#xff08;Open Broadcaster Software&#xff09;是一款功能强大的开源软件&#xff0c;它使用户能够直接从电脑录制视频和直播内容到 Twitch&#xff0c;YouTube 和 Facebook Live 等平台。它在需要直播或录制屏幕活动的游戏玩家、YouTube 用户和专业人士…

C# GDI+的DrawString无法绘制Tab键的现象

【啰嗦2句】 现在用C#的人很少了吧&#xff1f;GDI更少了吧&#xff1f;所以这个问题估计也冷门。没关系&#xff0c;分享给特定需要的人也不错。 【问题现象】 工作中开发了一个报告编辑器&#xff0c;实现图文排版等功能&#xff0c;用着没什么问题&#xff0c;直到有一天…