Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import torch | |
| from transformers import pipeline | |
| def initialize_model(): | |
| """Initialize the text generation pipeline with device detection""" | |
| # Check if CUDA is available, otherwise fall back to CPU | |
| device = "cuda" if torch.cuda.is_available() else "cpu" | |
| print(f"Using device: {device}") | |
| try: | |
| generator = pipeline( | |
| "text-generation", | |
| model="akhaliq/gemma-3-270m-gradio-coder", | |
| device=device | |
| ) | |
| return generator | |
| except Exception as e: | |
| print(f"Error loading model: {e}") | |
| # Fallback to CPU if CUDA fails | |
| if device == "cuda": | |
| print("Falling back to CPU...") | |
| generator = pipeline( | |
| "text-generation", | |
| model="akhaliq/gemma-3-270m-gradio-coder", | |
| device="cpu" | |
| ) | |
| return generator | |
| raise e | |
| # Initialize the model globally | |
| print("Loading model...") | |
| generator = initialize_model() | |
| print("Model loaded successfully!") | |
| def chat_response(message, history): | |
| """Generate response for the chatbot""" | |
| try: | |
| # Format the message for the model | |
| input_message = [{"role": "user", "content": message}] | |
| # Generate response | |
| output = generator( | |
| input_message, | |
| max_new_tokens=128, | |
| return_full_text=False, | |
| do_sample=True, | |
| temperature=0.7, | |
| pad_token_id=generator.tokenizer.eos_token_id | |
| )[0] | |
| response = output["generated_text"] | |
| return response | |
| except Exception as e: | |
| return f"Sorry, I encountered an error: {str(e)}" | |
| # Create the Gradio interface | |
| def create_chatbot(): | |
| """Create and launch the Gradio chatbot interface""" | |
| # Custom CSS for better styling | |
| css = """ | |
| .gradio-container { | |
| max-width: 800px !important; | |
| margin: auto !important; | |
| } | |
| .chat-message { | |
| padding: 10px !important; | |
| margin: 5px !important; | |
| border-radius: 10px !important; | |
| } | |
| """ | |
| # Create the chatbot interface | |
| with gr.Blocks(css=css, title="AI Chatbot") as demo: | |
| gr.Markdown("# 🤖 AI Chatbot") | |
| gr.Markdown("*Powered by Gemma-3-270m model via Transformers*") | |
| chatbot = gr.Chatbot( | |
| height=500, | |
| bubble_full_width=False, | |
| show_label=False | |
| ) | |
| with gr.Row(): | |
| msg = gr.Textbox( | |
| placeholder="Type your message here...", | |
| show_label=False, | |
| scale=4 | |
| ) | |
| send_btn = gr.Button("Send", scale=1, variant="primary") | |
| clear_btn = gr.Button("Clear", scale=1) | |
| # Example questions | |
| gr.Examples( | |
| examples=[ | |
| "If you had a time machine, but could only go to the past or the future once and never return, which would you choose and why?", | |
| "What's the most important lesson you've learned in life?", | |
| "How do you think AI will change the world in the next 10 years?", | |
| "What would you do if you had unlimited resources for one day?" | |
| ], | |
| inputs=msg | |
| ) | |
| def respond(message, chat_history): | |
| if not message.strip(): | |
| return chat_history, "" | |
| # Get bot response | |
| bot_message = chat_response(message, chat_history) | |
| # Add to chat history | |
| chat_history.append((message, bot_message)) | |
| return chat_history, "" | |
| def clear_chat(): | |
| return [], "" | |
| # Event handlers | |
| msg.submit(respond, [msg, chatbot], [chatbot, msg]) | |
| send_btn.click(respond, [msg, chatbot], [chatbot, msg]) | |
| clear_btn.click(clear_chat, None, [chatbot, msg]) | |
| return demo | |
| if __name__ == "__main__": | |
| print("Creating Gradio interface...") | |
| demo = create_chatbot() | |
| print("Starting Gradio server...") | |
| demo.launch( | |
| share=False, # Set to True if you want a public link | |
| server_name="0.0.0.0", # Allow external connections | |
| server_port=7860, | |
| show_error=True | |
| ) | |