Spaces:
Runtime error
Runtime error
| import torch | |
| import gradio as gr | |
| from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline | |
| class AIAdvocateChatbot: | |
| def __init__(self, model_name="Meta-llama/Llama-2-7b-chat-hf"): | |
| """ | |
| Initialize chatbot with an open-source model. | |
| """ | |
| # Check if GPU is available | |
| self.device = "cuda" if torch.cuda.is_available() else "cpu" | |
| # Load tokenizer and model | |
| print("Loading model and tokenizer...") | |
| self.tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| self.model = AutoModelForCausalLM.from_pretrained( | |
| model_name, | |
| torch_dtype=torch.float16 if self.device == "cuda" else torch.float32 | |
| ).to(self.device) | |
| # Create generation pipeline | |
| print("Setting up text-generation pipeline...") | |
| self.generator = pipeline( | |
| "text-generation", | |
| model=self.model, | |
| tokenizer=self.tokenizer, | |
| device=0 if self.device == "cuda" else -1, | |
| max_length=1024, | |
| temperature=0.7, # Adjust for response creativity | |
| top_p=0.9 # Top-p sampling for better conversational results | |
| ) | |
| def generate_response(self, message, history): | |
| """ | |
| Generate conversational response based on user message and chat history. | |
| """ | |
| try: | |
| # Combine chat history into a single prompt | |
| context = "\n".join([ | |
| f"Human: {msg[0]}\nAssistant: {msg[1]}" | |
| for msg in history | |
| ]) | |
| # Prepare the full conversation prompt | |
| full_prompt = f"{context}\nHuman: {message}\nAssistant:" | |
| # Generate a response | |
| print("Generating response...") | |
| response = self.generator( | |
| full_prompt, | |
| max_new_tokens=200, | |
| num_return_sequences=1, | |
| pad_token_id=self.tokenizer.eos_token_id | |
| )[0]['generated_text'] | |
| # Extract the new assistant response | |
| assistant_response = response.split("Assistant:")[-1].strip() | |
| return assistant_response | |
| except Exception as e: | |
| return f"Error generating response: {str(e)}" | |
| def create_chatbot_interface(): | |
| """ | |
| Create a Gradio interface for the chatbot. | |
| """ | |
| # Initialize the chatbot instance | |
| chatbot = AIAdvocateChatbot() | |
| # Define Gradio interface | |
| demo = gr.ChatInterface( | |
| chatbot.generate_response, | |
| title="🤖 AI Advocate Chatbot", | |
| description=( | |
| "An advanced conversational AI chatbot. " | |
| "Designed for engaging, human-like interactions and future integration " | |
| "into Retrieval-Augmented Generation systems." | |
| ) | |
| ) | |
| return demo | |
| def main(): | |
| """ | |
| Launch the Gradio interface. | |
| """ | |
| # Create and launch the Gradio app | |
| interface = create_chatbot_interface() | |
| interface.launch(share=True) | |
| if __name__ == "__main__": | |
| main() | |