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

news2025/3/18 3:13:16

前面两篇博文,我们分别在个人笔记本电脑部署了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 \
   ./Llama3-8B-Chinese-Chat-q4_0-v2_1.gguf \
   --n_ctx 20480

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 = {"role": "assistant", "content": ""}

    for chunk in completion:
        if chunk.choices[0].delta.content:
            print(chunk.choices[0].delta.content, end="", flush=True)
            new_message["content"] += chunk.choices[0].delta.content

    history.append(new_message)
    print("\033[91;1m")

    userinput = input("> ")
    if userinput.lower() in ["bye", "quit", "exit"]: # 我们输入bye/quit/exit等均退出客户端
        print("\033[0mBYE BYE!")
        break

    history.append({"role": "user", "content": userinput})
    print("\033[92;1m")

运行 Python 客户端即可:

中文对象

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

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

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

执行 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

可以通过 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

可以看到我们刚安装的大模型: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

模型选择

方式二:通过 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

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


我的本博客原地址:https://ntopic.cn/p/2024052101


微信公众号:Python禅师

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1694625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【IC设计】牛客网-序列检测习题总结

文章目录 状态机基础知识VL25 输入序列连续的序列检测VL26 含有无关项的序列检测VL27 不重叠序列检测VL28 输入序列不连续的序列检测参考资料 状态机基础知识 VL25 输入序列连续的序列检测 timescale 1ns/1ns module sequence_detect(input clk,input rst_n,input a,output re…

乡村振兴的乡村环境治理与保护:加强乡村环境治理与保护,改善乡村环境质量,打造美丽宜居的乡村环境

一、引言 随着乡村振兴战略的深入实施,乡村环境治理与保护成为推动乡村全面振兴的关键环节。乡村环境是乡村发展的重要基础,关系到农民的生产生活和身心健康,也直接影响到乡村经济的可持续发展。因此,加强乡村环境治理与保护&…

Stable Diffusion——U-ViT用于扩散建模的 ViT 主干网

1.概述 扩散模型是最近出现的强大的深度生成模型,可用于生成高质量图像。扩散模型发展迅速,可应用于文本到图像生成、图像到图像生成、视频生成、语音合成和 3D 合成。 除了算法的改进,骨干网的改进在扩散建模中也发挥着重要作用。一个典型…

收集 VSCode 常用快捷键

快速复制行 Shift Alt ↑/↓ 都是往下复制行,区别是:按↓复制时光标会跟着向下移动,按↑复制时光标不移动。 向上/向下移动一行 Alt ↑/↓ 删除整行 Ctrl Shift KCtrl x 剪切快捷键在VSCode 可以直接删除一行 垂直编辑 Ctrl…

Vue 安装vue

1、官网安装下载安装nodejs 2、安装完成后,通过命令查看版本,可以查看到版本 node -v npm -v 3、安装Vue CLi npm install -g vue/cli 4、创建项目,vue create test 如果遇到报错: ERROR Error: spawn yarn ENOENT Error: spawn yarn ENOENT at ChildP…

Flash与EEPROM

文章目录 1. 分类2. 工作原理2.1 擦除操作2.2 写入操作 3. 参考资料 1. 分类 2. 工作原理 在存储数据之前,先擦除存储区域(写成全1),进行存储时,将对应位写为0。 注:这里编程不能反向,若写错了…

牛客NC367 第K个n的排列【困难 dfs,全排列问题 Java/Go/PHP/C++】

题目 题目链接: https://www.nowcoder.com/practice/1595969179464e4c940a90b36abb3c54 思路 全排列问题本文提供的答案在力扣同一道题60. 排列序列,超时了但是截止文章发表日,牛客上是能通过全部测试用例的Java代码 import java.util.*;pu…

vue源码2

vue之mustache库的机理其实是将模板字符串转化为tokens 然后再将 tokens 转化为 dom字符串&#xff0c;如下图 对于一般的将模板字符串转化为dom字符串&#xff0c;这样不能实现复杂的功能 let data {name:小王,age:18 } let templateStr <h1>我叫{{name}},我今年{{ag…

Mybatis-Plus笔记

1.MP基础 1.1 MP常见注解 TableName(“指定表明”) TableName("tb_user") // 指定表名 Data NoArgsConstructor AllArgsConstructor Builder public class User {private Long id;private String userName;private String password;private String name;private I…

输入一串字符串,前中后都有*号,去掉字符串中间和后面的*号,保留前面的*号和字母

#include <stdio.h> void fun(char* a) {//***df**fr*fg***int i 0, j 0,n0,m0;char* p;p a;while (p[i] ! \0){i;//i是一共的字符的个数}printf("%d\n",i);while (a[n] *){n;//计算字母前的*的个数}printf("%d\n", n);m n;for (j n; j < …

【排序算法】快速排序(四个版本以及两种优化)含动图)

制作不易&#xff0c;三连支持一下吧&#xff01;&#xff01;&#xff01; 文章目录 前言一.快速排序Hoare版本实现二.快速排序挖坑法版本实现三.快速排序前后指针版本实现四.快速排序的非递归版本实现五.两种优化总结 前言 前两篇博客介绍了插入和选择排序&#xff0c;这篇博…

nuxt: generate打包后访问资源404问题

现象 使用Nuxt.js开发的个人页面&#xff0c;部署到nginx服务器中&#xff0c;/_nuxt/*.js、/_nuxt/*.css等静态问题不能访问&#xff0c;提示404错误。 而我们的这些资源文件是存在的。 解决方法 加上此处代码进行上下文配置 baseURL: /nuxt/ 此时在nginx配置 /nuxt 代理 lo…

使用 Django Admin 进行高效的后台管理

文章目录 创建超级用户注册模型到 Admin 后台自定义 Admin 后台界面定制 Admin Actions结语 当使用 Django Admin 进行后台管理时&#xff0c;开发者可以通过简单的配置和定制来满足项目的需求。可以根据不同的模型和数据结构&#xff0c;轻松地创建和管理数据条目、进行搜索和…

微信小程序--微信开发者工具使用小技巧(3)

一、微信开发者工具使用小技巧 1、快速创建小程序页面 在app.json中的pages配置项&#xff0c;把需要创建的页面填写上去 2、快捷键使用 进入方式 1&#xff1a; 文件–>首选项–> keyboard shortcuts 进入快捷键查看与设置 进入方式 2&#xff1a; 设置–>快捷键…

C#应用的用户配置窗体方案 - 开源研究系列文章

这次继续整理以前的代码。本着软件模块化的原理&#xff0c;这次笔者对软件中的用户配置窗体进行剥离出来&#xff0c;单独的放在一个Dll类库里进行操作&#xff0c;这样在其它应用程序里也能够快速的复用该类库&#xff0c;达到了快速开发软件的效果。 笔者其它模块化应用的例…

AcW木棒-XMUOJ恢复破碎的符咒木牌-DFS与剪枝

题目 思路 话不多说&#xff0c;直接上代码 代码 /* AcW木棒-XMUOJ恢复破碎的符咒木牌 搜索顺序&#xff1a;从小到大枚举最终的长度 len从前往后依次拼每根长度为len的木棍 优化&#xff1a; 1.优化搜索顺序&#xff1a;优先选择深度短的来搜索&#xff0c;故从大到小去枚…

java —— 封装、继承、接口和多态

一、封装 封装是将数据和操作这些数据的方法整合成一个类。在这个类中&#xff0c;用 private 修饰符将某些数据隐藏起来&#xff0c;只通过特定的方法实现这些数据的访问和修改&#xff0c;以此实现数据的完整和安全性。 封装的步骤&#xff1a; 二、继承 继承是指把子类共有…

深度学习之基于Matlab编写BP神经网络汉字识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 随着信息技术的快速发展&#xff0c;文本识别和处理技术在各个领域中扮演着越来越重要的角色。…

helloworld 可执行程序得到的过程

// -E 预处理 开发过程中可以确定某个宏 // -c 把预处理 编译 汇编 都做了,但是不链接 // -o 指定输出文件 // -I 指定头文件目录 // -L 指定链接库文件目录 // -l 指定链接哪一个库文件 #include <stdio.h> #include <stdlib.h> #include <string.h>int mai…

Java代码审计-XSS审计

一、漏洞简介 XSS是Cross Site Scripting的缩写&#xff0c;意为"跨站脚本攻击"&#xff0c;为了避免与层叠样式表(Cascading Style Sheet&#xff0c;CSS)的缩写混淆&#xff0c;故将跨站脚本攻击缩写为XSS。XSS是一种针对网站应用程序的安全漏洞攻击技术&#xff…