LLM模型的generate和chat函数区别

打印 上一主题 下一主题

主题 976|帖子 976|积分 2928

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  在 Hugging Face 的 transformers 库中,GPT(Generative Pre-trained Transformer)类的模型有两个常用的生成文本的方法:generate 和 chat。这两个方法在使用上有一些区别。通常公司发布的 LLM 模型会有一个基础版本,还会有一个 Chat 版本。比如,Qwen-7B(基础版本)和 Qwen-7B-Chat(Chat 版本)。
1. generate 方法



  • generate 方法是模型的原生方法,用于生成文本。
  • 通常用于批量生成文本数据,可以根据特定的输入和条件生成一组文本。
  • 使用时必要通报一些参数,如 max_length(生成文本的最大长度)、num_beams(束搜索的数量,用于增强生成的多样性)等。
  1. from transformers import GPT2LMHeadModel, GPT2Tokenizer
  2. model_name = "gpt2"
  3. model = GPT2LMHeadModel.from_pretrained(model_name)
  4. tokenizer = GPT2Tokenizer.from_pretrained(model_name)
  5. input_text = "Once upon a time,"
  6. generated_text = model.generate(tokenizer.encode(input_text, return_tensors="pt"), max_length=50, num_beams=5)[0]
  7. print(tokenizer.decode(generated_text, skip_special_tokens=True))
复制代码
2. chat 方法



  • chat 方法是一个高级的便捷方法,通常用于模仿对话。
  • 提供了更简单的用户交互方式,以模仿对话流程,尤其在聊天式应用中更为方便。
  • 它内部调用了 generate 方法,但提供了更加简化的输入输出接口。
  1. from transformers import GPT2LMHeadModel, GPT2Tokenizer
  2. model_name = "gpt2"
  3. model = GPT2LMHeadModel.from_pretrained(model_name)
  4. tokenizer = GPT2Tokenizer.from_pretrained(model_name)
  5. chat_history = [
  6.     {'role':'system', 'content':'You are a helpful assistant.'},
  7.     {'role':'user', 'content':'Who won the world series in 2020?'},
  8.     {'role':'assistant', 'content':'The Los Angeles Dodgers won the World Series in 2020.'},
  9. ]
  10. user_input = "Who won the Super Bowl in 2021?"
  11. chat_history.append({'role':'user', 'content':user_input})
  12. # 使用 chat 方法进行对话
  13. response = model.chat(chat_history)
  14. print(response)
复制代码
  总体来说,generate 方法更加灵活,实用于更多的生成使命,而 chat 方法则提供了更高级别、更易于使用的接口,实用于聊天式应用中。选择使用哪个方法通常取决于你的具体需求和使用场景。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

前进之路

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表