GPT2-Modifed / app.py
hacer201145's picture
Update app.py
0ef5f1d verified
import torch
import gradio as gr
from transformers import GPT2LMHeadModel, GPT2Tokenizer
# Load the model and tokenizer
def load_model():
model_name = "gpt2"
tokenizer = GPT2Tokenizer.from_pretrained(model_name)
model = GPT2LMHeadModel.from_pretrained(model_name)
return tokenizer, model
# Function to generate response with instructions
def generate_response(user_input, instructions="Be friendly and helpful, and ensure your response is accurate and relevant."):
tokenizer, model = load_model()
model.eval()
# Add instructions at the beginning of the user input
prompt = instructions + " " + user_input
input_ids = tokenizer.encode(prompt, return_tensors="pt")
with torch.no_grad():
output = model.generate(
input_ids,
max_length=100,
pad_token_id=tokenizer.eos_token_id,
no_repeat_ngram_size=2, # Avoid repeating phrases
temperature=0.7, # Control randomness
top_k=50, # Limit token selection
top_p=0.9, # Nucleus sampling
do_sample=True # Enable sampling
)
response = tokenizer.decode(output[:, input_ids.shape[-1]:][0], skip_special_tokens=True)
return response
# Gradio interface
def chatbot_interface():
interface = gr.Interface(
fn=generate_response, # Function to process the input
inputs=[
gr.Textbox(label="Enter your message", placeholder="Ask a question or make a request."),
gr.Textbox(label="Instruction for the bot", placeholder="For example: Be friendly and helpful, ensure accuracy.")
], # Two text boxes: one for input and one for instructions
outputs="text", # Output type - text
title="GPT-2 Chatbot with Accuracy and Relevance Instructions", # Application title
description="This is a chatbot based on the GPT-2 model. You can provide instructions to adjust the style of the bot's responses, ensuring accuracy and relevance.", # Description
theme="compact" # Interface theme
)
interface.launch()
# Run the interface
if __name__ == "__main__":
chatbot_interface()