原标题: 编写 ChatGPT 代码涉及多个方面,涵盖数据准备、模型建立和训练、推理过程等。下面是一个基本的 ChatGPT 代码示例:
导读:
```pythonimport torchfrom transformers import GPT2Tokenizer, GPT2LMHeadModel# 加载预训练模型和to...
```python
import torch
from transformers import GPT2Tokenizer, GPT2LMHeadModel
# 加载预训练模型和tokenizer
model_name = 'gpt2'
device = 'cuda' if torch.cuda.is_available() else 'cpu'
tokenizer = GPT2Tokenizer.from_pretrained(model_name)
model = GPT2LMHeadModel.from_pretrained(model_name).to(device)
def generate_response(input_text):
# 输入转换为模型可识别的token序列
input_ids = tokenizer.encode(input_text, return_tensors='pt').to(device)
# 使用ChatGPT生成回复
output = model.generate(input_ids=input_ids,
max_length=100,
pad_token_id=tokenizer.eos_token_id)
# 解码并返回回复文本
response_text = tokenizer.decode(output[:, input_ids.shape[-1]:][0],
skip_special_tokens=True)
return response_text
while True:
user_input = input("User: ")
if user_input.lower() == "quit":
print("Chat ended.")
break
response = generate_response(user_input)
print("Bot:", response)
```
在上述代码中,我们使用了 `transformers` 库提供的 `GPT2Tokenizer` 和 `GPT2LMHeadModel` 类来加载预先训练好的英文聊天窗口式语言模型(ChatGPT),用户输入被传递给 `generate_response()` 函数,该函数将文本转换为模型可识别的 token 序列,并使用 `model.generate()` 方法生成回复,生成的回复被解码并打印出来。