大家都知道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都是一样的,输入我的这些测试下
{
"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开源策略,没有任何侵权意图,本文章全由自己编写,如出现任何问题请联系我,我将删除。