A3. Springboot3.x集成LLama3.2实战

发布于:2025-02-10 ⋅ 阅读:(32) ⋅ 点赞:(0)

本文将介绍集成ollama官网提供的API在Springboot工程中进行整合。由于没找到java-llama相关合适的sdk可以使用,因此只好对接官方给出的API开发一套RESTFull API服务。下面将从Ollama以下几个API展开介绍,逐渐的了解其特性以及可以干些什么。具体llama API说明可参数我前面写的《A2. 大语言模型llama API服务调研》文章,根据官网整理出来的参数定义与数据响应说明等。

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
响应参数:

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

响应示例:

{
   
    "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:{