ChatGLM3简介

本文介绍了ChatGLM3,由智谱AI和清华大学KEG实验室合作的最新预训练对话模型,它在前代基础上增强了性能,支持多轮对话、代码执行和新Prompt格式。文章还提供了模型下载和命令行加载的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ChatGLM3

简介

ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性:

  1. **更强大的基础模型:**ChatGLM3-6B-Base 具有在 10B 以下的基础模型中最强的性能。

    ModelGSM8KMATHBBHMMLUC-EvalCMMLUMBPPAGIEval
    ChatGLM2-6B-Base32.46.533.747.951.750.0--
    Best Baseline(10B 以下)52.113.145.060.163.562.247.545.8
    ChatGLM3-6B-Base72.325.766.161.469.067.552.453.7
    Model平均SummarySingle-Doc QAMulti-Doc QACodeFew-shotSynthetic
    ChatGLM2-6B-32K41.524.837.634.752.851.347.7
    ChatGLM3-6B-32K50.226.645.846.156.261.265
  2. 更完整的功能支持: ChatGLM3-6B 采用了全新设计的Prompt 格式。

    • 多轮对话
    • 同时原生支持工具调用(Function Call)
    • 代码执行(Code Interpreter)
    • Agent 任务
  3. 更全面的开源序列:

    ModelSeq LengthDownload
    ChatGLM3-6B8kHuggingFace | ModelScope
    ChatGLM3-6B-Base8kHuggingFace | ModelScope
    ChatGLM3-6B-32K32kHuggingFace | ModelScope

推理代码

from modelscope import AutoTokenizer, AutoModel, snapshot_download
model_dir = snapshot_download("ZhipuAI/chatglm3-6b", revision = "master")
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)
model = AutoModel.from_pretrained(model_dir, trust_remote_code=True).half().cuda()
model = model.eval()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
print(response)

命令行加载

import os
import platform
from transformers import AutoTokenizer, AutoModel

model_path = "model/chatglm3_32k/"

tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModel.from_pretrained(model_path, trust_remote_code=True).cuda()
# 多显卡支持,使用下面两行代替上面一行,将num_gpus改为你实际的显卡数量
# from utils import load_model_on_gpus
# model = load_model_on_gpus(model_path, num_gpus=2)
model = model.eval()

os_name = platform.system()
clear_command = 'cls' if os_name == 'Windows' else 'clear'
stop_stream = False

welcome_prompt = "欢迎使用 ChatGLM3-6B 模型,输入内容即可进行对话,clear 清空对话历史,stop 终止程序"

def build_prompt(history):
    prompt = welcome_prompt
    for query, response in history:
        prompt += f"\n\n用户:{query}"
        prompt += f"\n\nChatGLM3-6B:{response}"
    return prompt

def main():
    past_key_values, history = None, []
    global stop_stream
    print(welcome_prompt)
    while True:
        query = input("\n用户:")
        if query.strip() == "stop":
            break
        if query.strip() == "clear":
            past_key_values, history = None, []
            os.system(clear_command)
            print(welcome_prompt)
            continue
        print("\nChatGLM:", end="")
        current_length = 0
        for response, history, past_key_values in model.stream_chat(tokenizer, query, history=history,temperature=1,
                                                                    past_key_values=past_key_values,
                                                                    return_past_key_values=True):
            if stop_stream:
                stop_stream = False
                break
            else:
                print(response[current_length:], end="", flush=True)
                current_length = len(response)
        print(history)
        print("")
        # print(past_key_values)


if __name__ == "__main__":
    main()

03-11
<think>好的,我现在需要处理用户关于ChatGLM的查询。首先,用户要求了解ChatGLM的介绍、特点及使用方法,并且根据系统级指令,我需要确保回答结构清晰,符合格式要求。用户还提供了三个引用,我需要合理引用这些内容。 首先,我要确认用户的问题范围。用户提到了“介绍、特点及使用方法”,这需要我分三个部分来回答。根据引用[3],ChatGLM是智谱AI开源的对话模型,基于GLM架构,支持中英双语,针对中文优化。同时,引用[2]提到它结合了GPT和BERT的结构,具备良好的双语处理能力。引用[1]则提到了GLM-4的安装使用和工具调用能力,可能相关但需注意ChatGLM可能有不同版本。 接下来,我需要整理介绍部分。应该包括开发背景、技术架构、应用场景等。引用[3]提到它基于GLM架构,结合了预训练模型的发展,所以需要强调其技术基础和发展历程。 然后是特点部分。引用[2]和[3]提到了双语能力、知识库、高效推理、开源等。需要分点列出,确保每个特点有引用支持。例如,双语能力来自引用[2],知识库来自引用[3]等。 使用方法部分,用户可能需要安装步骤和调用示例。引用[1]提到了安装方法,但需要确认是否适用于ChatGLM而非GLM-4。可能需要调整,比如通过Hugging Face或GitHub获取模型,使用transformers库加载。同时提供代码示例,但要注意用户提供的示例是Python的快速排序,可能需要类似的代码结构,比如加载模型的代码片段。 另外,系统指令要求生成相关问题,我需要根据内容提出相关问题,比如技术架构、优化方法、应用场景等。确保问题与内容相关,并引用合适的来源。 最后,检查格式:行内公式用$...$,独立公式用$$...$$,但当前内容可能不涉及数学公式,所以可能不需要。但如果有,比如模型架构中的参数,可能需要使用。同时,确保引用标识正确,如[^1]、[^2]、[^3]在相应位置。 现在需要组织语言,确保每个部分清晰,引用正确。例如,在介绍部分的开头,说明ChatGLM由智谱AI开发,基于GLM架构,参考引用[3]。技术架构部分引用[2],说明结合了GPT和BERT。特点部分分点,每个点对应引用。使用方法部分提供安装命令和代码示例,引用[1]和[3]。 可能需要注意避免直接复制引用内容,而是进行整合,确保自然流畅。例如,在特点部分,将双语处理、知识库丰富、高效推理、开源等分项说明,并标注引用来源。同时,使用方法部分要具体,比如安装步骤可能包括pip install transformers,加载模型使用from_pretrained方法,并给出示例代码块。 最后,生成相关问题,比如技术架构的细节、优化方法、应用场景等,确保每个问题都能在引用中找到相关支持,或引导用户进一步探索。 现在,将这些思考整理成结构化的回答,分介绍、特点、使用方法,然后相关问题,确保每个部分引用正确,符合格式要求。</think>### ChatGLM介绍、特点及使用方法 #### 一、ChatGLM简介 ChatGLM是由智谱AI推出的开源对话语言模型系列,基于$GLM$(General Language Model)架构构建。其设计参考了GPT的生成能力和BERT的双向理解特点,融合了预训练语言模型的技术优势。该模型针对中文场景优化,支持中英双语混合输入,广泛应用于智能客服、知识问答、文本生成等领域。 #### 二、ChatGLM核心特点 1. **中英双语能力** 可流畅处理中英文混合输入,理解复杂语义并生成连贯回答[^2]。 2. **知识库丰富性** 通过大规模预训练数据覆盖多领域知识,包括科学、技术、文化等。 3. **高效推理性能** 采用稀疏注意力机制等技术优化计算效率,适合实时交互场景。 4. **开源与可定制** 提供不同规模的模型版本(如ChatGLM-6B),支持开发者微调以适应特定任务。 #### 三、使用方法示例 1. **安装依赖** 使用Hugging Face的`transformers`库加载模型: ```bash pip install transformers ``` 2. **调用模型** ```python from transformers import AutoTokenizer, AutoModel tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True) model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda() response, history = model.chat(tokenizer, "如何解释量子纠缠?", history=[]) print(response) ``` 该代码将加载ChatGLM-6B模型并生成对问题的回答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江小皮不皮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值