import gradio as gr def chat(user_input, history=[]): """ Chat function that takes user input and conversation history, returns the model response and updates the history. Handles potential memory issues by clearing conversation history after a certain length. Args: user_input: String containing the user's message. history: List of tuples containing conversation history (user_message, model_response). Returns: A tuple containing the model response and updated history (limited length). """ # Update history with user input history.append((user_input, None)) # Clear conversation history if it exceeds a certain length (adjust as needed) if len(history) > 10: history = history[-5:] # Keep the most recent 5 interactions # Access the loaded model (replace with appropriate error handling) model = gr.get("chatbot_model") # Generate response using the model (consider error handling and retries) response = model(user_input, max_length=50, do_sample=True)[0]['generated_text'] # Update history with model response history.append((None, response)) return response, history # Attempt to load the model from Hugging Face (consider error handling) try: chatbot_model = gr.load("models/lucas-w/mental-health-chatbot-3") except Exception as e: print(f"Error loading model: {e}") chatbot_model = None # Handle the case where model loading fails # Launch the Gradio interface with error handling if chatbot_model is not None: interface = gr.Interface( fn=chat, inputs="textbox", outputs="textbox", interpretation="chat", title="Mental Health Chatbot", description="Talk to a mental health assistant (model: lucas-w/mental-health-chatbot-3)", elem_id="chat-container", css=""" #chat-container { height: 400px; overflow-y: scroll; } """ ) interface.launch() else: print("Failed to launch chatbot. Please check model availability and error messages.")