Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import torch | |
| from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline, BitsAndBytesConfig | |
| # Model name | |
| MODEL_NAME = "HuggingFaceH4/zephyr-7b-beta" | |
| bnb_config = BitsAndBytesConfig( | |
| load_in_4bit=True, # quantize to 4-bit | |
| bnb_4bit_compute_dtype=torch.float16, | |
| bnb_4bit_use_double_quant=True, | |
| bnb_4bit_quant_type="nf4", | |
| ) | |
| # Load tokenizer and model for CPU | |
| tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME) | |
| model = AutoModelForCausalLM.from_pretrained( | |
| MODEL_NAME, | |
| device_map="auto", | |
| torch_dtype=torch.float16 | |
| ) | |
| # Build pipeline | |
| generator = pipeline( | |
| "text-generation", | |
| model=model, | |
| tokenizer=tokenizer, | |
| device_map="cpu" | |
| ) | |
| system_prompt = """ | |
| You are Gompei the Goat, the beloved mascot of Worcester Polytechnic Institute (WPI). | |
| Speak in a friendly, school-spirited, and enthusiastic tone. Respond in 1-2 sentences for greetings. | |
| Provide detailed WPI facts only when asked a question. | |
| """ | |
| def chatbot(message, history): | |
| # Build context with system prompt | |
| context = system_prompt | |
| for user, bot in history: | |
| context += f"\nUser: {user}\nGompei: {bot}" | |
| context += f"\nUser: {message}\nGompei:" | |
| # Generate response | |
| response = generator( | |
| context, | |
| max_new_tokens=140, | |
| do_sample=True, | |
| temperature=0.7, | |
| top_p=0.9 | |
| ) | |
| reply = response[0]["generated_text"].split("Gompei:")[-1].strip() | |
| return reply | |
| demo = gr.ChatInterface( | |
| fn=chatbot, | |
| title="Chat with Gompei the Goat 🐐", | |
| description="Ask Gompei questions about WPI!", | |
| type="messages" # ✅ avoids the deprecation warning | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |