基于Llama 3搭建中文版(Llama3-Chinese-Chat)大模型对话聊天机器人_llama3-8b-chinese-chat

前面两篇博文,我们分别在个人笔记本电脑部署了Llama 3 8B参数大模型,并使用Ollama搭建了基于 Web 可视化对话聊天机器人,可以在自己电脑上愉快的与Llama大模型 Web 机器人对话聊天了。但在使用过程中,笔者发现Llama大模型经常出现中文问题英文回答的问题,需要使用中文回答等提示词告诉大模型用中文回答,体验还不是最好的。今天,本博文就来解决这个问题,让我们有个中文版的Llama 3Web 对话机器人(Llama3-Chinese-Chat)……

第一篇Llama 3 8B大模型部署和 Python 版对话机器人博文:玩转 AI,笔记本电脑安装属于自己的 Llama 3 8B 大模型和对话客户端

第二篇基于Ollama部署Llama 3 8B大模型 Web 版本对话机器人博文:一文彻底整明白,基于 Ollama 工具的 LLM 大语言模型 Web 可视化对话机器人部署指南

注意: 因为本博文介绍的是Llama 3 中文版Llama3-Chinese-Chat)对话机器人,涉及到前面两篇博文内容,特别是第二篇 Web 版本对话机器人部署,因此建议按照前文博文部署好Llama 3 8B大语言模型。

HF 上选择排名最高的模型

模型列表官网地址:https://huggingface.co/models

模型列表国内镜像(推荐):https://hf-mirror.com/models

在模型列表页面按照关键字llama chinese搜索,并按照趋势排序,可以看到中文版模型:

模型列表

可以看出,第一名模型的下载数量和点赞数量,比第二名要多好多,我们就选择shenzhi-wang这位作者发布的模型。

方式一:通过 GGUF 量化模型安装(推荐)

GGUF 安装比较简单,下载单个文件即可:

量化模型

下载到本地之后,按照我的第一篇博文,即可进行控制台聊天了:

启动大模型Shell 脚本:

source ./venv/bin/activate

python -m llama_cpp.server –host 0.0.0.0 –model </span>
./Llama3-8B-Chinese-Chat-q4_0-v2_1.gguf </span>
–n_ctx 20480

  • 1
  • 2
  • 3
  • 4
  • 5

Python 对话客户端代码:

from openai import OpenAI

# 注意服务端端口,因为是本地,所以不需要api_key
ip = ‘127.0.0.1’
#ip = ‘192.168.1.37’
client = OpenAI(base_url=“http://{}:8000/v1”.format(ip),
api_key=“not-needed”)

# 对话历史:设定系统角色是一个只能助理,同时提交“自我介绍”问题
history = [
{ “role”: “system”, “content”: “你是一个智能助理,你的回答总是容易理解的、正确的、有用的和内容非常精简.”},
]

# 首次自我介绍完毕,接下来是等代码我们的提示
while True:
completion = client.chat.completions.create(
model=“local-model”,
messages=history,
temperature=0.7,
stream=True,
)

new_message <span class="token operator">=</span> <span class="token punctuation">{<!-- --></span><span class="token string">"role"</span><span class="token punctuation">:</span> <span class="token string">"assistant"</span><span class="token punctuation">,</span> <span class="token string">"content"</span><span class="token punctuation">:</span> <span class="token string">""</span><span class="token punctuation">}</span>

<span class="token keyword">for</span> chunk <span class="token keyword">in</span> completion<span class="token punctuation">:</span>
    <span class="token keyword">if</span> chunk<span class="token punctuation">.</span>choices<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>delta<span class="token punctuation">.</span>content<span class="token punctuation">:</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span>chunk<span class="token punctuation">.</span>choices<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>delta<span class="token punctuation">.</span>content<span class="token punctuation">,</span> end<span class="token operator">=</span><span class="token string">""</span><span class="token punctuation">,</span> flush<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span>
        new_message<span class="token punctuation">[</span><span class="token string">"content"</span><span class="token punctuation">]</span> <span class="token operator">+=</span> chunk<span class="token punctuation">.</span>choices<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>delta<span class="token punctuation">.</span>content

history<span class="token punctuation">.</span>append<span class="token punctuation">(</span>new_message<span class="token punctuation">)</span>
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"\033[91;1m"</span><span class="token punctuation">)</span>

userinput <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"&gt; "</span><span class="token punctuation">)</span>
<span class="token keyword">if</span> userinput<span class="token punctuation">.</span>lower<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">in</span> <span class="token punctuation">[</span><span class="token string">"bye"</span><span class="token punctuation">,</span> <span class="token string">"quit"</span><span class="token punctuation">,</span> <span class="token string">"exit"</span><span class="token punctuation">]</span><span class="token punctuation">:</span> <span class="token comment"># 我们输入bye/quit/exit等均退出客户端</span>
    <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"\033[0mBYE BYE!"</span><span class="token punctuation">)</span>
    <span class="token keyword">break</span>

history<span class="token punctuation">.</span>append<span class="token punctuation">(</span><span class="token punctuation">{<!-- --></span><span class="token string">"role"</span><span class="token punctuation">:</span> <span class="token string">"user"</span><span class="token punctuation">,</span> <span class="token string">"content"</span><span class="token punctuation">:</span> userinput<span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"\033[92;1m"</span><span class="token punctuation">)</span>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

运行 Python 客户端即可:

中文对象

按照第二篇博文,部署基于 Web 版对话机器人:一文彻底整明白,基于 Ollama 工具的 LLM 大语言模型 Web 可视化对话机器人部署指南

基于 GGUF 量化模型生成 Ollama模型文件,假设文件名为Modelfile-Chinese,内容如下:

FROM ./Llama3-8B-Chinese-Chat-q4_0-v2_1.gguf

 
 
  • 1

执行 Ollama 模型转换,Llama-3-8B-Chinese为 Ollama 模型名:

$ ollama create Llama-3-8B-Chinese -f ./Modelfile-Chinese
transferring model data
using existing layer sha256:242ac8dd3eabcb1e5fcd3d78912eaf904f08bb6ecfed8bac9ac9a0b7a837fcb8
creating new layer sha256:9f3bfa6cfc3061e49f8d5ab5fba0f93426be5f8207d8d8a9eebf638bd12b627a
writing manifest
success

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

可以通过 Ollama 查看目前的大模型列表:

$ ollama list
NAME                     	ID          	SIZE  	MODIFIED
Llama-3-8B-Chinese:latest	37143cf1f51f	4.7 GB	42 seconds ago
Llama-3-8B:latest        	74abc0712fc1	4.9 GB	3 days ago

 
 
  • 1
  • 2
  • 3
  • 4

可以看到我们刚安装的大模型:Llama-3-8B-Chinese

启动ollama-webui-lite项目,可以选择Llama-3-8B-Chinese模型和对话聊天了:

$ npm run dev

> ollama-webui-lite@0.0.1 dev
> vite dev –host –port 3000

VITE v4.5.3 ready in 1797 ms

➜ Local: http://localhost:3000/
➜ Network: http://192.168.101.30:3000/
➜ press h to show help

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

模型选择

方式二:通过 Ollama 拉取模型文件

这种方式比较简单,无需下载 GGUF 模型文件,可以让 Ollama 直接拉取模型文件并完成安装:

# Llama3-8B-Chinese-Chat的4位量化版本(对机器性能要求最低)
ollama run wangshenzhi/llama3-8b-chinese-chat-ollama-q4

# Llama3-8B-Chinese-Chat的8位量化版本(对机器性能要求中等)
ollama run wangshenzhi/llama3-8b-chinese-chat-ollama-q8

# Llama3-8B-Chinese-Chat的f16未量化版本(对机器性能要求最高)
ollama run wangshenzhi/llama3-8b-chinese-chat-ollama-fp16

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Ollama 自动下载并完成安装,之后启动ollama-webui-lite项目,就可以使用了~


我的本博客原地址:https://mp.weixin.qq.com/s/idcdIr8mMWDQ_iZU5r_UEQ


微信公众号:老牛同学

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值