Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from transformers import GPT2LMHeadModel, GPT2Tokenizer | |
| import torch | |
| # Load model and tokenizer from local directory | |
| model_path = "./gpt2-finetuned-uet" # Path to your saved model | |
| def load_model(): | |
| device = "cuda" if torch.cuda.is_available() else "cpu" | |
| model = GPT2LMHeadModel.from_pretrained(model_path).to(device) | |
| tokenizer = GPT2Tokenizer.from_pretrained(model_path) | |
| return model, tokenizer, device | |
| model, tokenizer, device = load_model() | |
| def generate_response(question): | |
| try: | |
| # Create prompt with special tokens | |
| prompt = f"<|startoftext|>Question: {question} Answer:" | |
| # Tokenize and generate | |
| inputs = tokenizer(prompt, return_tensors="pt").to(device) | |
| output = model.generate( | |
| **inputs, | |
| max_length=256, | |
| pad_token_id=tokenizer.eos_token_id, | |
| do_sample=True, | |
| top_k=50, | |
| top_p=0.95, | |
| temperature=0.7 | |
| ) | |
| # Decode and clean output | |
| full_response = tokenizer.decode(output[0], skip_special_tokens=True) | |
| answer = full_response.split("Answer:")[-1].strip() | |
| return answer | |
| except Exception as e: | |
| return f"Error generating response: {str(e)}" | |
| # Gradio interface | |
| demo = gr.Interface( | |
| fn=generate_response, | |
| inputs=gr.Textbox(lines=2, placeholder="Ask me anything about UET Mardan..."), | |
| outputs="text", | |
| title="UET Mardan AI Chatbot", | |
| description="A GPT-2 model fine-tuned on UET Mardan questions and answers", | |
| examples=[ | |
| ["What programs does UET Mardan offer?"], | |
| ["How can I apply for admission?"], | |
| ["What are the contact details of UET Mardan?"] | |
| ], | |
| css=".gradio-container {background-color: #f0f2f6}", | |
| allow_flagging="never" | |
| ) | |
| # For Hugging Face Spaces deployment | |
| if __name__ == "__main__": | |
| demo.launch() |