我们先用一个简单的例子看一下千问的代码逻辑及效果。
from modelscope import AutoModelForCausalLM, AutoTokenizer from modelscope import GenerationConfig # 加装分词 tokenizer = AutoTokenizer.from_pretrained("qwen/Qwen-7B-Chat", revision='v1.0.5', trust_remote_code=True) # 加载大模型 model = AutoModelForCausalLM.from_pretrained("qwen/Qwen-7B-Chat", revision='v1.0.5', device_map="auto", trust_remote_code=True, fp16=True).eval() # 加载配置 model.generation_config = GenerationConfig.from_pretrained("Qwen/Qwen-7B-Chat", revision='v1.0.5', trust_remote_code=True) # 可指定不同的生成长度、top_p等相关超参
response, history = model.chat(tokenizer, "你好", history=None)
# 显示千问的回答
print(response)
response, history = model.chat(tokenizer, "浙江的省会在哪里?", history=history)
# 增加这行查看对话历史
print(history)
print(response)
response, history = model.chat(tokenizer, "它有什么好玩的景点", history=history)
print(history)
print(response)
1. 第一次回答:
你好!很高兴为你提供帮助。
2. 第二次回答(提问:浙江的省会在哪里?):
浙江的省会是杭州。
3. 第二次对答保留的历史,可以看出包括了第一次对答的历史数据。
[('你好', '你好!很高兴为你提供帮助。'), ('浙江的省会在哪里?', '浙江的省会是杭州。')]
4. 第三次回答(提问:它有什么好玩的景点?):
杭州有许多著名景点,如西湖、宋城、西溪湿地、灵隐寺、杭州宋城、雷峰塔等。每个景点都有其独特的魅力,可以满足不同游客的需求。
5. 第三次对答保留的历史,可以看出包括了前两次对答的历史数据。
[('你好', '你好!很高兴为你提供帮助。'), ('浙江的省会在哪里?', '浙江的省会是杭州。'), ('它有什么好玩的景点', '杭州有许 多著名景点,如西湖、宋城、西溪湿地、灵隐寺、杭州宋城、雷峰塔等。每个景点都有其独特的魅力,可以满足不同游客的需求。')]
Qwen7b参数模型使用70亿参数,支持上下文长度为8K,可以满足我们简单的沟通需求