CP02大语言模型ChatGLM3-6B使用CLI代码进行多轮对话

CP02大语言模型ChatGLM3-6B使用CLI代码进行多轮对话

大语言模型ChatGLM3 CLI代码进行多轮对话。

模型初始化

from transformers import AutoTokenizer, AutoModel

tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True, device='cuda')

model = model.eval()

welcome_prompt = "欢迎使用 ChatGLM3-6B 模型,输入内容即可进行对话"

print(welcome_prompt)

欢迎使用 ChatGLM3-6B 模型,输入内容即可进行对话

初始化参数

past_key_values = None

history = []

简单的命令行多轮对话

使用stream_chat方法构建一个while循环

while True:
    query = input("\n用户:")

    print("\nChatGLM:", end="")
    current_length = 0

    for response, history, past_key_values in model.stream_chat(tokenizer, query, history=history, top_p=1,
                                                                        temperature=0.01,
                                                                        past_key_values=past_key_values,
                                                                        return_past_key_values=True):

        print(response[current_length:], end="", flush=True)
        current_length = len(response)
        
    
    print("\n\nhistory:")
    print(history)

用户: 你好

ChatGLM:你好!有什么我可以帮助你的吗?

history:
[{‘role’: ‘system’, ‘content’: ‘你是North-D智能助手,一个大语言模型LLM。根据用户的提问回答问题,使用markdown格式回答。’}, {‘role’: ‘user’, ‘content’: ‘你好’}, {‘role’: ‘assistant’, ‘metadata’: ‘’, ‘content’: ‘你好!有什么我可以帮助你的吗?’}]

用户: 你是谁

ChatGLM:我是一个名为 ChatGLM3-6B 的人工智能助手,是基于清华大学 KEG 实验室和智谱 AI 公司于 2023 年共同训练的语言模型开发的。我的任务是针对用户的问题和要求提供适当的答复和支持。

history:
[{‘role’: ‘system’, ‘content’: ‘你是North-D智能助手,一个大语言模型LLM。根据用户的提问回答问题,使用markdown格式回答。’}, {‘role’: ‘user’, ‘content’: ‘你好’}, {‘role’: ‘assistant’, ‘metadata’: ‘’, ‘content’: ‘你好!有什么我可以帮助你的吗?’}, {‘role’: ‘user’, ‘content’: ‘你是谁’}, {‘role’: ‘assistant’, ‘metadata’: ‘’, ‘content’: ‘我是一个名为 ChatGLM3-6B 的人工智能助手,是基于清华大学 KEG 实验室和智谱 AI 公司于 2023 年共同训练的语言模型开发的。我的任务是针对用户的问题和要求提供适当的答复和支持。’}]

用户: 你是North-D智能助手,一个大语言模型LLM。根据用户的提问回答问题,使用markdown格式回答。

ChatGLM:抱歉,我之前的回答可能让您产生了困惑。是的,我是一个名为 North-D 的人工智能助手,我是一个大语言模型 LLM。我的任务是根据用户的问题和要求提供适当的答复和支持。请问有什么我可以帮助您的吗?

history:
[{‘role’: ‘system’, ‘content’: ‘你是North-D智能助手,一个大语言模型LLM。根据用户的提问回答问题,使用markdown格式回答。’}, {‘role’: ‘user’, ‘content’: ‘你好’}, {‘role’: ‘assistant’, ‘metadata’: ‘’, ‘content’: ‘你好!有什么我可以帮助你的吗?’}, {‘role’: ‘user’, ‘content’: ‘你是谁’}, {‘role’: ‘assistant’, ‘metadata’: ‘’, ‘content’: ‘我是一个名为 ChatGLM3-6B 的人工智能助手,是基于清华大学 KEG 实验室和智谱 AI 公司于 2023 年共同训练的语言模型开发的。我的任务是针对用户的问题和要求提供适当的答复和支持。’}, {‘role’: ‘user’, ‘content’: ‘你是North-D智能助手,一个大语言模型LLM。根据用户的提问回答问题,使用markdown格式回答。’}, {‘role’: ‘assistant’, ‘metadata’: ‘’, ‘content’: ‘抱歉,我之前的回答可能让您产生了困惑。是的,我是一个名为 North-D 的人工智能助手,我是一个大语言模型 LLM。我的任务是根据用户的问题和要求提供适当的答复和支持。请问有什么我可以帮助您的吗?’}]

用户: 你是谁

ChatGLM:我是一个名为 North-D 的人工智能助手,是基于清华大学 KEG 实验室和智谱 AI 公司于 2023 年共同训练的语言模型开发的。我的任务是针对用户的问题和要求提供适当的答复和支持。请问有什么我可以帮助您的吗?

history:
[{‘role’: ‘system’, ‘content’: ‘你是North-D智能助手,一个大语言模型LLM。根据用户的提问回答问题,使用markdown格式回答。’}, {‘role’: ‘user’, ‘content’: ‘你好’}, {‘role’: ‘assistant’, ‘metadata’: ‘’, ‘content’: ‘你好!有什么我可以帮助你的吗?’}, {‘role’: ‘user’, ‘content’: ‘你是谁’}, {‘role’: ‘assistant’, ‘metadata’: ‘’, ‘content’: ‘我是一个名为 ChatGLM3-6B 的人工智能助手,是基于清华大学 KEG 实验室和智谱 AI 公司于 2023 年共同训练的语言模型开发的。我的任务是针对用户的问题和要求提供适当的答复和支持。’}, {‘role’: ‘user’, ‘content’: ‘你是North-D智能助手,一个大语言模型LLM。根据用户的提问回答问题,使用markdown格式回答。’}, {‘role’: ‘assistant’, ‘metadata’: ‘’, ‘content’: ‘抱歉,我之前的回答可能让您产生了困惑。是的,我是一个名为 North-D 的人工智能助手,我是一个大语言模型 LLM。我的任务是根据用户的问题和要求提供适当的答复和支持。请问有什么我可以帮助您的吗?’}, {‘role’: ‘user’, ‘content’: ‘你是谁’}, {‘role’: ‘assistant’, ‘metadata’: ‘’, ‘content’: ‘我是一个名为 North-D 的人工智能助手,是基于清华大学 KEG 实验室和智谱 AI 公司于 2023 年共同训练的语言模型开发的。我的任务是针对用户的问题和要求提供适当的答复和支持。请问有什么我可以帮助您的吗?’}]

设置bad word的多轮对话

past_key_values = None

history = [{"role": "system", "content":"你是North-D智能助手,一个大语言模型LLM。根据用户的提问回答问题,使用markdown格式回答。"}]

bad_words = ["Langchain","你好"]
bad_words_ids = [tokenizer.encode(bad_word,add_special_tokens=False) for bad_word in bad_words]

while True:
    query = input("\n用户:")

    print("\nChatGLM:", end="")
    current_length = 0

    try:
        for response, history, past_key_values in model.stream_chat(tokenizer, query, history=history, top_p=1,
                                                                            temperature=0.01,
                                                                            past_key_values=past_key_values,
                                                                            return_past_key_values=True,
                                                                    bad_words_ids=bad_words_ids
                                                                   ):

            print(response[current_length:], end="", flush=True)
            current_length = len(response)

        print("\n\nhistory:")
        print(history)
    except RuntimeError as e:
        print(f"生成文本时发生错误:{e},这可能是涉及到设定的敏感词汇")

    #print("\npast_key_values:")
    #print(past_key_values)

用户: 你好
ChatGLM:生成文本时发生错误:probability tensor contains either inf, nan or element < 0,这可能是涉及到设定的敏感词汇

用户: langchain
ChatGLM:生成文本时发生错误:probability tensor contains either inf, nan or element < 0,这可能是涉及到设定的敏感词汇

用户: langchain
ChatGLM:“Langchain” 是一个区块链平台,专注于为语言学习提供支持。它使用区块链技术来存储和共享语言学习资源,并提供一种方式来验证和认证这些资源。Langchain 平台旨在提供一个透明、去中心化和高效的方式,帮助学习者更轻松地获取高质量的语言学习资源,同时也为语言学习者提供一种方式来验证和认证这些资源。
此外,Langchain 还提供了一种新的经济模型,让用户可以通过贡献自己的学习资源来获得奖励,从而激励更多的人参与到语言学习中来。这种经济模型可以帮助生成文本时发生错误:probability tensor contains either inf, nan or element < 0,这可能是涉及到设定的敏感词汇

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

North_D

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

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

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

打赏作者

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

抵扣说明:

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

余额充值