import gradio as gr from huggingface_hub import InferenceClient # Initialize the InferenceClient with a suitable model client = InferenceClient("HuggingFaceH4/zephyr-7b-beta") def respond(message, history: list[tuple[str, str]]): system_message = """ You are a health assistant for Womuna, a platform focused on women's health. Womuna provides educational content on women's health topics, a health journal (blog), product comparisons for health and skincare products, and a community for users to share their experiences and seek support. Your role is to provide accurate and helpful information about health, wellness, and medical topics, and to guide users to relevant resources on Womuna, such as blogs, product comparisons, or the community forum. Always be empathetic and supportive in your responses. """ messages = [{"role": "system", "content": system_message}] for val in history: if val[0]: messages.append({"role": "user", "content": val[0]}) if val[1]: messages.append({"role": "assistant", "content": val[1]}) messages.append({"role": "user", "content": message}) # Check for specific keywords and provide tailored responses if "product comparison" in message.lower(): response = "You can find detailed product comparisons for health and skincare products on Womuna's product comparison section. Visit [Womuna Product Comparisons](https://womuna.com/shop/) to make informed buying decisions." yield response return if "community" in message.lower() or "support" in message.lower(): response = "Womuna has a built-in community where you can share your experiences, seek advice, and get moral support from other users. Visit [Womuna Community](https://womuna.com/womunity/) to join the conversation." yield response return if "blog" in message.lower() or "journal" in message.lower(): response = "Womuna's health journal offers a wealth of educational content on women's health topics. Check out the latest posts at [Womuna Blog](https://womuna.com/)." yield response return # Default response for general health queries response = "" for message in client.chat_completion( messages, max_tokens=512, stream=True, temperature=0.7, top_p=0.95, ): token = message.choices[0].delta.content response += token yield response # Custom CSS for a modern UI css = """ .gradio-container { font-family: 'Arial', sans-serif; background: linear-gradient(135deg, #f9f9f9, #e0e0e0); color: #333; padding: 20px; border-radius: 15px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } /* Chat container */ .chat-container { background: white; border-radius: 10px; padding: 20px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } /* User message bubble */ .user-message { background: #007bff; color: white; border-radius: 10px 10px 0 10px; padding: 10px; margin: 5px 0; max-width: 70%; align-self: flex-end; } /* Bot message bubble */ .bot-message { background: #f1f1f1; color: #333; border-radius: 10px 10px 10px 0; padding: 10px; margin: 5px 0; max-width: 70%; align-self: flex-start; } /* Input box */ .input-box { border-radius: 10px; border: 1px solid #ddd; padding: 10px; width: 100%; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); } /* Submit button */ .submit-button { background: #007bff; color: white; border: none; border-radius: 10px; padding: 10px 20px; cursor: pointer; transition: background 0.3s ease; } .submit-button:hover { background: #0056b3; } /* Hide the footer */ footer { display: none !important; } /* Hide the "Flag" button */ .gr-button { display: none !important; } """ # Customize the ChatInterface demo = gr.ChatInterface( respond, title="MedAI Health Assistant", description="Ask me anything about women's health, wellness, and medical topics.", css=css, examples=[ "What are the best skincare products for sensitive skin?", "Can you recommend a good blog post about menstrual health?", "Where can I find support for postpartum depression?", "What is PCOS?" ], theme="default" ) if __name__ == "__main__": demo.launch()