首页 > 其他分享 >LLM模型的generate和chat函数区别

LLM模型的generate和chat函数区别

时间:2024-01-14 23:44:32浏览次数:28  
标签:name text LLM chat model 方法 generate

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

1. generate 方法

  • generate 方法是模型的原生方法,用于生成文本。
  • 通常用于批量生成文本数据,可以根据特定的输入和条件生成一组文本。
  • 使用时需要传递一些参数,如 max_length(生成文本的最大长度)、num_beams(束搜索的数量,用于增强生成的多样性)等。
from transformers import GPT2LMHeadModel, GPT2Tokenizer

model_name = "gpt2"
model = GPT2LMHeadModel.from_pretrained(model_name)
tokenizer = GPT2Tokenizer.from_pretrained(model_name)

input_text = "Once upon a time,"
generated_text = model.generate(tokenizer.encode(input_text, return_tensors="pt"), max_length=50, num_beams=5)[0]
print(tokenizer.decode(generated_text, skip_special_tokens=True))

2. chat 方法

  • chat 方法是一个高级的便捷方法,通常用于模拟对话。
  • 提供了更简单的用户交互方式,以模拟对话流程,尤其在聊天式应用中更为方便。
  • 它内部调用了 generate 方法,但提供了更加简化的输入输出接口。
from transformers import GPT2LMHeadModel, GPT2Tokenizer

model_name = "gpt2"
model = GPT2LMHeadModel.from_pretrained(model_name)
tokenizer = GPT2Tokenizer.from_pretrained(model_name)

chat_history = [
    {'role':'system', 'content':'You are a helpful assistant.'},
    {'role':'user', 'content':'Who won the world series in 2020?'},
    {'role':'assistant', 'content':'The Los Angeles Dodgers won the World Series in 2020.'},
]

user_input = "Who won the Super Bowl in 2021?"
chat_history.append({'role':'user', 'content':user_input})

# 使用 chat 方法进行对话
response = model.chat(chat_history)
print(response)

  总体来说,generate 方法更加灵活,适用于更多的生成任务,而 chat 方法则提供了更高级别、更易于使用的接口,适用于聊天式应用中。选择使用哪个方法通常取决于你的具体需求和使用场景。




NLP工程化

1.本公众号以对话系统为中心,专注于Python/C++/CUDA、ML/DL/RL和NLP/KG/DS/LLM领域的技术分享。
2.本公众号Roadmap可查看飞书文档:https://z0yrmerhgi8.feishu.cn/wiki/Zpewwe2T2iCQfwkSyMOcgwdInhf

NLP工程化(公众号)

NLP工程化(星球号)

标签:name,text,LLM,chat,model,方法,generate
From: https://www.cnblogs.com/shengshengwang/p/17964471

相关文章

  • 文心一言 VS 讯飞星火 VS chatgpt (178)-- 算法导论13.4 1题
    一、用go语言,在执行RB-DELETE-FIXUP之后,证明:树根一定是黑色的。文心一言:在证明RB-DELETE-FIXUP之后,树根一定是黑色的的过程中,我们首先需要理解红黑树的性质。红黑树是一种自平衡二叉搜索树,它的每个节点都有一个颜色属性,可以是红色或黑色。红黑树的性质包括:节点是红色或黑色。......
  • 在笔记本电脑上跑清华chatglm大语言模型
    环境:windows10以上系统,安装Linux子系统下载这个文件,双击,安装:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msisudosed-i's/deb.debian.org/mirrors.ustc.edu.cn/g'/etc/apt/sources.listsudodpkg-reconfigurelocalessudoaptupdatesudoa......
  • 文心一言 VS 讯飞星火 VS chatgpt (178)-- 算法导论13.4 1题
    一、用go语言,在执行RB-DELETE-FIXUP之后,证明:树根一定是黑色的。文心一言:在证明RB-DELETE-FIXUP之后,树根一定是黑色的的过程中,我们首先需要理解红黑树的性质。红黑树是一种自平衡二叉搜索树,它的每个节点都有一个颜色属性,可以是红色或黑色。红黑树的性质包括:节点是红色或黑色......
  • LLM Series: LLAMA 2
    ......
  • LLM Series: BERT
    ......
  • 文心一言 VS 讯飞星火 VS chatgpt (170)-- 算法导论13.2 3题
    三、用go语言,设在图13-2左边一棵树中,a、b和c分别为子树a、β和γ中的任意结点。当结点x左旋之后,a、b和c的深度会如何变化?文心一言:在二叉树中,左旋操作是改变节点的子节点顺序。原本的子节点β变为新的左子节点,原本的左子节点γ变为新的右子节点。对于给定的节点a、b和c,我们首......
  • 文心一言 VS 讯飞星火 VS chatgpt (168)-- 算法导论13.2 1题
    一、用go语言,写出RIGHT-ROTATE的伪代码。文心一言:在计算机科学中,右旋转(RIGHT-ROTATE)是一种常见的操作,通常用于数组或链表。以下是一个使用Go语言实现右旋转的伪代码:funcrightRotate(arr[]int,kint)[]int{n:=len(arr)k%=n//防止k大于n的情况rev......
  • 恭喜:ChatGPT之父与相恋多年的男友结婚,并希望早日生娃。。。
    OpenAICEOSamAltman与伴侣OliverMulherin海边私密婚礼:爱情、事业与人工智能领域的交织婚礼主持人是奥特曼的兄弟杰克·奥尔特曼壹媒体流传在科技界掀起波澜的OpenAI首席执行官萨姆·奥尔特曼(SamAltman),近期与他长久以来的伴侣、澳大利亚籍软件工程师奥利弗·穆赫林(OliverMulhe......
  • mybatis-generator:generate生成器将另外的数据库内同名表生成
     问题:在使用mybatis-generator:generate生成器时,会生成别的数据库内同表名;因为是相同表名。 解决:在生成器的配置文件中的数据库连接地址内添加:<!--放置生成其他库同名表--><propertyname="nullCatalogMeansCurrent"value="true"/>......
  • 文心一言 VS 讯飞星火 VS chatgpt (177)-- 算法导论13.3 6题
    六、用go语言,说明如果红黑树的表示中不提供父指针,应当如何有效地实现RB-INSERT。文心一言:红黑树是一种自平衡的二叉搜索树,其中每个节点都包含一个颜色属性(红色或黑色),并且满足以下性质:节点是红色或黑色。根节点是黑色。所有叶子节点(NIL或空节点)都是黑色。如果一个节点是红色的,则......