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

本文将介绍集成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:{
   
### 下载并保存 Llama 3.2 模型为 .llama 文件 为了下载 Llama 3.2 模型并将其保存为 `.llama` 文件格式,可以按照以下方法操作: #### 方法一:通过 Hugging Face 平台下载 Hugging Face 提供了一个便捷的方式来获取预训练模型。可以通过命令行工具 `transformers-cli` 或者直接从网页界面下载。 1. 访问 [Hugging Face 的 Llama 3.2 页面](https://huggingface.co/collections/meta-llama/)。 2. 找到所需的特定版本(如 3B 参数量),点击进入该模型页面。 3. 使用 Git LFS (Large File Storage) 进行克隆或下载: ```bash git lfs install git clone https://huggingface.co/path/to/model --depth=1 ``` 4. 将下载好的模型文件夹压缩打包成单个 `.tar.gz` 文件,并重命名为 `.llama` 后缀名以便于识别和管理。 #### 方法二:利用 AWS Bedrock 控制台申请访问权限后导出 如果已经获得了 Amazon Bedrock 对应的 Llama 3.2 版本的使用权,则可通过编程接口调用来实现自动化下载流程。 1. 登录至 [Amazon Bedrock Console](https://console.aws.amazon.com/bedrock/home),按指引完成必要的设置步骤。 2. 请求获得目标型号(例如 Llama 3.2 3B)的使用许可。 3. 编写 Python 脚本来调用 SageMaker Runtime Client 获取模型权重数据流,并存储为本地文件。 ```python import boto3 client = boto3.client(&#39;sagemaker-runtime&#39;) response = client.invoke_endpoint( EndpointName=&#39;your-endpoint-name&#39;, Body=b&#39;input data&#39;, ContentType=&#39;application/json&#39; ) with open(&#39;./model_weights.llama&#39;, &#39;wb&#39;) as f: f.write(response[&#39;Body&#39;].read()) ``` 请注意,在实际应用过程中可能还需要考虑更多细节配置项以及安全策略等问题[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沙漠绿州

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值