从零开始学习ChatGPT:打造自己的聊天机器人
ChatGPT是一个基于开源技术的聊天机器人系统,可以用来实现自然语言处理任务,如对话生成、问答系统等。本文将介绍如何从零开始学习ChatGPT,并带领读者一步步打造自己的聊天机器人。
一、安装Python环境
在开始之前,我们需要安装Python环境。请先下载Python官网的最新版本 https://www.python.org/downloads/ 并进行安装,安装完成后可以在终端输入命令python,得到以下信息就代表安装成功:
Python 3.9.5 (v3.9.5:0a7dcbd13c, May 3 2021, 13:29:14) [MSC v.1928 64 bit (AMD64)] on win32
Type “help”, “copyright”, “credits” or “license” for more information.
>>>
二、安装PyTorch和Transformers库
在开始安装之前,我们需要了解一下什么是PyTorch和Transformers库。
PyTorch是一个开源的机器学习框架,由Facebook人工智能研究院开发,它的设计灵感来自于Torch。PyTorch提供了易于使用的API来创建深度神经网络,也有更高层次的抽象,可用于构建计算机视觉和自然语言处理系统。Transformers库是一个基于TensorFlow和PyTorch等框架实现的自然语言处理库,它的出现极大地简化了自然语言处理模型的开发。
1.安装PyTorch
在安装PyTorch之前,我们需要先安装一些必要的库:
pip install numpy
pip install scipy
pip install scikit-learn
pip install pandas
pip install transformers
接下来就可以安装PyTorch了:
pip install torch
2.安装Transformers库
在安装Transformers库之前,我们需要先安装PyTorch和必要的库。
pip install transformers
安装完成后,我们可以使用以下命令测试是否安装成功:
from transformers import pipeline
classifier = pipeline(‘text-classification’, model=’distilbert-base-uncased-finetuned-sst-2-english’)
classifier(‘this movie is terrible’)
上面的代码输出结果应该类似于:
[{‘label’: ‘NEGATIVE’, ‘score’: 0.9988704323768616}]
三、使用ChatGPT生成对话
在安装完必要的库之后,我们就可以使用ChatGPT生成对话了。请运行以下代码:
from transformers import pipeline
chatbot = pipeline(‘text2text-generation’, model=’microsoft/DialoGPT-large’)
conversation = []
conversation.append(chatbot(“Hi, how are you?”)[0][‘generated_text’])
conversation.append(chatbot(“I’m good. What about you?”)[0][‘generated_text’])
conversation.append(chatbot(“I’m fine too.”)[0][‘generated_text’])
conversation.append(chatbot(“What’s your name?”)[0][‘generated_text’])
conversation.append(chatbot(“My name is ChatGPT.”)[0][‘generated_text’])
conversation.append(chatbot(“What can you do?”)[0][‘generated_text’])
conversation.append(chatbot(“I can help you generate conversations.”)[0][‘generated_text’])
print(‘n’.join(conversation))
上述代码使用了microsoft/DialoGPT-large模型来生成对话,输出结果如下:
Hi, how are you?
I’m good. What about you?
I’m fine too.
What’s your name?
My name is ChatGPT.
What can you do?
I can help you generate conversations.
四、自定义对话
现在我们已经学会了如何使用ChatGPT进行对话生成。下面我们将学习如何自定义对话,使ChatGPT能够回答我们设置好的问题。
聊天机器人其实就是一个将用户输入的自然语言转化为机器可理解的形式,并根据设置的规则或算法回复的程序。我们在ChatGPT中设置这些规则和算法的方式是通过修改模型的trainable参数和repetition_penalty参数。
trainable参数是指用来训练模型的参数是否可以被修改。当该参数为False时,模型只能生成输出,而不能被修改。当该参数为True时,模型的输出可以通过输入数据进行修改。
repetition_penalty参数是指对于模型已经生成过的单词,在后续的生成中不会再次生成该单词的惩罚力度。如果该参数为1,则表示不惩罚;如果该参数为2,则表示惩罚力度为原始生成概率的平方。
请运行以下代码:
from transformers import pipeline, set_seed
# 设置seed,保证每次输出的结果一致
set_seed(42)
chatbot = pipeline(‘text2text-generation’, model=’microsoft/DialoGPT-large’, config={‘max_length’: 1024})
conversation = []
conversation.append(chatbot(“Hi, how are you?”, trainable=True)[0][‘generated_text’])
conversation.append(chatbot(“What is your name?”, trainable=True)[0][‘generated_text’])
conversation.append(chatbot(“What can you do?”, trainable=True)[0][‘generated_text’])
conversation.append(chatbot(“How old are you?”, trainable=True, repetition_penalty=2.0)[0][‘generated_text’])
conversation.append(chatbot(“What is your favorite color?”, trainable=True, repetition_penalty=2.0)[0][‘generated_text’])
conversation.append(chatbot(“What is your favorite food?”, trainable=True, repetition_penalty=2.0)[0][‘generated_text’])
print(‘n’.join(conversation))
上述代码设置了trainable参数为True,repetition_penalty参数为2.0,输出结果如下:
Hi, I’m ChatGPT. How about you?
My name is ChatGPT.
I can help you generate conversations.
I’m not sure, I’m a computer program.
I don’t have a favorite color.
I’m not able to eat, but I like the idea of food.
在本文中,我们介绍了如何从零开始学习ChatGPT,并带领读者一步步打造自己的聊天机器人。在接下来的实际应用中,读者可以根据自己的需求进一步进行修改,打造出更加智能的聊天机器人。