ChuanhuChatGPT集成百川大模型

搭建步骤:

  1. 拷贝本地模型,把下载好的Baichuan2-7B-Chat拷贝到models目录下
  2. 修改modules\models\base_model.py文件,class ModelType增加Baichuan

    Baichuan = 16

    elif "baichuan" in model_name_lower:

       model_type = ModelType.Baichuan

  3. 修改modules\models\models.py文件,get_model方法增加ModelType.Baichuan

    elif model_type == ModelType.Baichuan:

        from .Baichuan import Baichuan_Client

        model = Baichuan_Client(model_name, user_name=user_name)

  4. 增加modules\models\Baichuan.py文件

    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

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    from modelscope import snapshot_download, AutoModelForCausalLM, AutoTokenizer,GenerationConfig

    from transformers import AutoModelForCausalLM, AutoTokenizer

    from transformers.generation import GenerationConfig

    import logging

    import colorama

    from ..index_func import *

    from ..presets import *

    from ..utils import *

    from .base_model import BaseLLMModel

    from ..presets import MODEL_METADATA

    from datetime import datetime

    class Baichuan_Client(BaseLLMModel):

        def __init__(self, model_name, user_name="") -None:

            super().__init__(model_name=model_name, user=user_name)

            import torch

            from transformers import AutoModel, AutoTokenizer

            global CHATGLM_TOKENIZER, CHATGLM_MODEL

            print("__init__ Baichuan_Client")

            if CHATGLM_TOKENIZER is None or CHATGLM_MODEL is None:

                model_path = None

                if os.path.exists("models"):

                    model_dirs = os.listdir("models")

                    if model_name in model_dirs:

                        model_path = f"models/{model_name}"

                if model_path is not None:

                    model_source = model_path

                else:

                    model_source = snapshot_download(f"baichuan-inc/{model_name}", revision='v1.0.4')

                CHATGLM_TOKENIZER = AutoTokenizer.from_pretrained(

                    model_source, device_map="auto", trust_remote_code=True, torch_dtype=torch.float16

                )

                quantified = False

                if "int4" in model_name:

                    quantified = True

                model = AutoModelForCausalLM.from_pretrained(

                    model_source, device_map="auto", trust_remote_code=True, torch_dtype=torch.float16

                )

                model.generation_config = GenerationConfig.from_pretrained(model_source)

                model = model.eval()

                CHATGLM_MODEL = model

        def _get_glm_style_input(self):

            print("_get_glm_style_input")

            print(f"the history is: {self.history}")

            history = [x["content"for in self.history]

            query = history.pop()

            print(f"the message is: {query}")

            return history, query

        def get_answer_at_once(self):

            print("get_answer_at_once")

            history,query = self._get_glm_style_input()

            messages = []

            messages.append({'role''user''content': query})

            now = datetime.now()

            print("get_answer_at_once start"+"++++++++"+ now.strftime("%Y-%m-%d %H:%M:%S"))

            response = CHATGLM_MODEL.chat(

                CHATGLM_TOKENIZER, messages)

            now = datetime.now()

            print("get_answer_at_once end"+"++++++++"+ now.strftime("%Y-%m-%d %H:%M:%S"))

            print(f"the response is: {response}")

            return response, len(response)

        def get_answer_stream_iter(self):

            history,query = self._get_glm_style_input()

            messages = []

            messages.append({'role''user''content': query})

            result = ""

            now = datetime.now()

            print("get_answer_stream_iter start"+"++++++++"+ now.strftime("%Y-%m-%d %H:%M:%S"))

            for response in CHATGLM_MODEL.chat(

                CHATGLM_TOKENIZER,

                messages

            ):

                print(f"the response is: {response}")

                result += response

                yield result

            now = datetime.now()

            print("get_answer_stream_iter end"+"++++++++"+ now.strftime("%Y-%m-%d %H:%M:%S"))

  5. 答案回调开关控制get_answer_at_once、get_answer_stream_iter方法调用选择
  6. 执行效果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(超全)python图像处理详细解析(3)

图像处理 23.保存视频每一帧图像24.把png图像转换成jpg并保存25.改变图像尺寸26.改变图像比例27.旋转图像28.亮度调整29.log对数调整30.判断图像对比度31.调整强度(1)强度调节(2)uint8转float 32.绘制直方图和均衡化33.彩色图片三…

基于streamlit快速部署机器学习项目(Public URL)

基于streamlit的AIGC项目前端展示 1.Streamlit 简介与入门1.1 安装 Streamlit1.2 开发Streamlit应用程序1.3 启动并运行1.3.1 本地运行1.3.2 部署 现在LLM技术发展迅速,很多人在学习的时候,都想展示效果,并且想部署在服务器上,但是…

原型链prototype、__proto、constructor的那些问题整理

再了解原型链之前,我们先来看看构造函数和实例对象的打印结构 - 函数 这里我们定义一个构造函数Fn,然后打印它的结构吧 function Fn(){} console.dir(Fn)控制台得到结构 从上面结构我们能看的出来,函数有两种原型,一种是作为函数特有的原型:prototype,另一种是作为对象的__…

数字旅游:通过科技赋能,创新旅游服务模式,提供智能化、个性化的旅游服务,满足游客多元化、个性化的旅游需求

目录 一、数字旅游的概念与内涵 二、科技赋能数字旅游的创新实践 1、大数据技术的应用 2、人工智能技术的应用 3、物联网技术的应用 4、云计算技术的应用 三、智能化、个性化旅游服务的实现路径 1、提升旅游服务的智能化水平 2、实现旅游服务的个性化定制 四、数字旅…

计算机网络大框架图形

如标题,精心画了一个计算机网络的框架性的图,包含了计算机网络的核心思想,在此分享和备份下。各层具体协议参考TCP/IP常用协议栈图解-CSDN博客

工厂数字化三部曲/业务、数据和IT融合

工厂数字化三部曲: 业务、数据和IT融合 在当今数字化转型的潮流中,企业面临着将业务、数据和IT融合的挑战和机遇。数字化转型不仅是技术上的升级,更是对企业运营模式和管理体系的全面优化和重构。通过业务“数字化”阶段的细致分析和整合,以及…

葡萄牙语翻译中文难吗,葡译中如何翻译比较好?

葡萄牙,一个充满魅力的国度,拥有着悠久的历史和丰富的文化传统。葡萄牙语作为这个国家的官方语言,在全球范围内享有广泛的声誉。那么,葡萄牙语翻译中文难吗?又该如何进行高质量的翻译呢? 业内人士指出&…

蛋糕购物商城

蛋糕购物商城 运行前附加数据库.mdf(或使用sql生成数据库) 登陆账号:admin 密码:123456 修改专辑价格时去掉¥以及上传专辑图片 c#_asp.net 蛋糕购物商城 网上商城 三层架构 在线购物网站,电子商务系统 …

打造智能语音机器人-用语音控制机器人

人工智能现已成为国家发展重大战略,智能语音技术作为人工智能产业链上的关键一环,AI应用成熟的技术之一,人工智能的发展也进入了一个崭新的阶段。那么打造智能语音机器人怎样实现用语音控制机器人呢?和小编一起来看看。 选择合适的…

七天速记前端八股文(重点)

for in和正常for循环的区别 在遍历数组时,正常的 for 循环通常比 for...in 循环更适合。虽然 for...in 循环可以用于遍历数组,但它有一些潜在的问题和限制。 下面是一些使用 for 循环相对于 for...in 循环的优势: 顺序遍历:for…

61、回溯-分割回文串

思路: 还是全排列的思路,列出每一种组合,然后验证是否是回文,如果是子串放入path中,在验证其他元素是否也是回文。代码如下: class Solution {// 主方法,用于接收一个字符串s并返回所有可能的…

Prometheus数据模型与查询语言:构建高效监控系统的关键

🐇明明跟你说过:个人主页 🏅个人专栏:《Prometheus:监控的神》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、Prometheus诞生史 二、Prometheus的数据模型与查询语…

想要应聘前端工程师——了解前端招聘需求

市场对前端工程师的需求依然旺盛。所谓知己知彼,百战不殆,分析各个公司对前端工程师的招聘需求,一方面可以了解到前端各细分领域在企业的需求情况,调整自己对岗位和薪资的期待,另一方面可以获得各种前端技术在企业中的应用情况,调整自己的学习和面试准备方向。因篇幅所限…

Office Word自动编号转文本

原理 使用office自带的宏功能,一键替换 过程 调出word的“开发工具”选项 文件->选项->自定义功能区->选中开发工具->确定 创建宏 开发工具->宏->创建宏 编写宏 在弹出来的框里,替换代码为 Sub num2txt() ActiveDocument.…

分布式版本控制系统——Git

分布式版本控制系统——Git 一、Git安装二、创建版本库三、将文件交给Git管理四、Git的工作区和暂存区1.工作区(Working Directory)2.版本库 五、版本回退和撤销修改1.版本回退2.撤销修改 六、删除文件七、常用基础命令总结八、参考 分布式版本控制系统&…

ETL简介以及使用ETL(Kettle)进行数据接入的具体例子

目录 ETL介绍 ETL简介 ETL包含的三部分 ETL基本概念 ETL资源库 ETL变量 业务表梳理以及接入规划 数据接入流程 业务表梳理 ETL任务规范 接入规划 数据接入中的方便工具 具体例子 导出生产表信息 1、ORACLE 2、MYSQL ETL数据增量抽取任务开发 1、ORACLE通用流程…

外观模式【结构型模式C++】

1.概述 外观模式是一种结构型设计模式, 能为程序库、 框架或其他复杂类提供一个简单的接口。 2.结构   外观角色(Facade):为多个子系统对外提供一个共同的接口,知道哪些子系统负责处理请求,将客户端的请…

机器学习-保险花销预测笔记+代码

读取数据 import numpy as np import pandas as pddatapd.read_csv(rD:\人工智能\python视频\机器学习\5--机器学习-线性回归\5--Lasso回归_Ridge回归_多项式回归\insurance.csv,sep,) data.head(n6) EDA 数据探索 import matplotlib.pyplot as plt %matplotlib inlineplt.hi…

六天以太坊去中心化租房平台,前端+合约源码

六天以太坊去中心化租房平台 概述项目结构合约部署运行项目功能介绍一、首页二、房东后台我的房屋我的订单上架新房屋 三、租户后台我的房屋我的订单 四、仲裁后台 下载地址 概述 六天区块链房屋租赁系统,采用去中心化的方式实现了房屋的租赁功能。房东可在平台上托…

Linux基础——Linux开发工具(gcc/g++,gdb)

前言:在上一篇我们简单介绍了yum,vim的一些常用的指令和模式,现在让我们来进一步了解其他的Linux环境基础开发工具gcc/g,gdb。 如果对前面yum和vim有什么不懂的建议回顾去回顾上期知识!!! Linu…