Llama 3增强中文理解能力,并生成内网穿透API后Spring Boot请求

大家都知道Llama3是用英文训练的,所以它的中文理解力不理想

前面已经教大家如何本地部署llama 3.1(原理差不多)

原版部署地址:本地部署llama 3.1生成API并且内网穿透后Spring Boot调用-CSDN博客

这期主要是将原版的模型换成中文的模型(换成其他的也都一样)

 01、部署本地环境

在window搜索“环境”

新建我这三个变量

 OLLAMA_HOST   0.0.0.0:11434

OLLAMA_ORIGINS  *

OLLAMA_MODELS  [自定义模型存的位置]

配置好我们测试一下

键盘win+r打开cmd

 

输入上期我们配置好的模型,你的不一定是ollama run llama3.1

ollama run llama3.1

ollama run [你的模型]

出现对话输入就没问题接着往下走(如果没下过就等他下载下)

 02、利用 Ollama 本地部署 Llama3 中文微调版

首先我们先去Hugging Face下载我们要的模型,下载地址:

https://huggingface.co/hfl/llama-3-chinese-8b-instruct-gguf/tree/main

 

就下载 ggml-model-q8_0.gguf就行

经过测试q8_0对家用电脑性价比最高 ,表现也比较平衡(想下载其他的玩玩,配置方式也是一样,后面配置的名字改下就行)

给他移动到环境配置中,模型安装的地方

然后右键新建一个txt文档

 

改个名字并且把后面的".txt"给删掉,变成我这样

 用记事本打开它,输入

FROM [你自己的模型地址]
TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|>

{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>

{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>

{{ .Response }}<|eot_id|>"""
SYSTEM """You are a helpful assistant. 你是一个乐于助人的助手。"""
PARAMETER temperature 0.2
PARAMETER num_keep 24
PARAMETER stop <|start_header_id|>
PARAMETER stop <|end_header_id|>
PARAMETER stop <|eot_id|>

 然后在你的文件位置的地址栏中输入cmd

创建一个模型(名字自定义) 

ollama create llama3-zh-inst -f Modelfile

 

 

然后执行命令 

ollama serve

 然后打开你的postman,这里我的是Apifox都是一样的,输入我的这些测试下

http://localhost:11434/api/generate

{

  "model": "llama3-zh-inst",

  "prompt": "天空是什么颜色的?",

  "stream": false

}

 

如果出现我的这个就说明成功了

03、内网穿透更改外网可访问的API地址

首先下载花生壳客户端

下载地址:花生壳客户端官方下载 - 贝锐花生壳官网

一样获得.exe的安装文件,双击一直下一步安装完成(可以自定义安装路径)

 点击添加映射,去网页填上自己的IPV4的地址

 最后获得了映射的公网IP

 

将你的内网穿透的地址复制到浏览器如果出现这个就成功了

 

也可以用postman测试玩一下

 04、内网穿透更改外网可访问的API地址

打开你的springboot项目

public String talkToLlama(String text) throws IOException {
        String url = "https://你的内网穿透地址/api/chat";//请求地址
 
        OkHttpClient client = new OkHttpClient()
                .newBuilder()
                .connectTimeout(60, TimeUnit.SECONDS) // 设置连接超时时间
                .writeTimeout(60, TimeUnit.SECONDS) // 设置写入超时时间
                .readTimeout(60, TimeUnit.SECONDS) // 设置读取超时时间
                .build();
 
        // 定义请求体的媒体类型为JSON
        MediaType JSON = MediaType.get("application/json; charset=utf-8");
 
        String json = "{\n" +
                "\"model\": \"llama3-zh-inst\"," +
                "\"messages\": [{\"role\": \"user\", \"content\": \""+text+"\"}],"+
                "\"stream\": "+false+"}";
        RequestBody body = RequestBody.create(json, JSON);
 
        //发送POST请求并获取响应:
        Request request = new Request.Builder().url(url)
                .header("Authorization", "Bearer " + apiKey)
                .header("Content-Type", "application/json") // 显式设置Content-Type头
                .post(body) // 使用POST方法并传递请求体
                .build();
        // 发送请求并获取响应
        Response response = client.newCall(request).execute();
        String result = response.body().string();
        System.out.println(result);
 
        JSONObject returnJsonObject = new JSONObject(result);
        JSONObject messages = returnJsonObject.getJSONObject("message");
        // 提取 content 的值
        String content = messages.getString("content").replace("“", "").replace("\"", "").replace("\r", "").replace("\n", "");
        // 输出 content 的值
        System.out.println("回答的: " + content);
        return  content;
    }

需要使用就直接调用这个方法就行

String resultText = talkToLlama("自我介绍一下");

免责声名:

一切均严格参照ollama开源策略,没有任何侵权意图,本文章全由自己编写,如出现任何问题请联系我,我将删除。

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值