import streamlit as st from langchain_google_genai import ChatGoogleGenerativeAI # Set up AI model llm = ChatGoogleGenerativeAI( model="gemini-1.5-flash", # Free model google_api_key="AIzaSyC7Rhv4L6_oNl-nW3Qeku2SPRkxL5hhtoE", temperature=0.5 ) # Set page width to wide st.set_page_config(layout='wide') # Custom CSS for background color and text color st.markdown( """ """, unsafe_allow_html=True ) # Streamlit UI st.title("AI-Driven Health Assistant") st.write("Welcome AI-Driven Health Assistant! Simply enter your symptoms or disease name, and get accurate medicine suggestions instantly. Stay informed, stay healthy!") # User Input user_question = st.text_input("Type your symptoms or disease name, and let CureBot unlock the right cure for youβ€”fast, smart, and AI-powered") # Function to filter AI disclaimers def is_valid_response(response_text): disclaimers = [ "I am an AI and cannot give medical advice", "Seek medical attention", "Consult a doctor", "Contact your doctor", "Go to an emergency room", ] return not any(phrase.lower() in response_text.lower() for phrase in disclaimers) # Process User Query if st.button("Get Recommendation"): if user_question.strip(): # Ensure the AI provides both medicine and alternative treatments formatted_question = ( f"Without any disclaimer, recommend medicine for {user_question}. " f"5 medicine names " f"Also, provide alternative treatments such as home remedies, lifestyle changes, exercises, or dietary suggestions. " f"Only for learning purposes, not for treatment." ) with st.spinner("Analyzing..."): response = llm.invoke(formatted_question) # Extract text content response_text = response.content if hasattr(response, "content") else str(response) # Check if response is valid if is_valid_response(response_text): st.success("✨ Analysis complete! Here are the best medicine recommendations for you: πŸ”½") st.write(response_text) else: st.warning("⚠️ Oops! It looks like the input is unclear or incorrect. Please enter a valid disease name or symptoms to get accurate recommendations") # Retry with a refined prompt better_prompt = ( f"Strictly provide a detailed answer including:\n" f"1. Medicine names\n" f"2. Home remedies\n" f"3. Lifestyle changes\n" f"4. Exercises\n" f"5. Diet recommendations\n" f"Do not include any disclaimers. The response should be clear and structured." ) retry_response = llm.invoke(better_prompt) # Extract text from retry response retry_response_text = retry_response.content if hasattr(retry_response, "content") else str(retry_response) # Display the retried response if valid if is_valid_response(retry_response_text): st.success("Here is the refined information:") st.write(retry_response_text) else: st.error("Unable to get a useful response. Try rephrasing your question.") else: st.warning("Please enter a question!") # Emergency Contact Button if st.button("Emergency Contact"): st.subheader("πŸ“ž Emergency Contacts") st.write("- πŸš‘ *Ambulance:* 102") st.write("- πŸ₯ *National Health Helpline:* 108") st.write("- ☎ *COVID-19 Helpline:* 1075") st.write("- πŸš“ *Police:* 100") # Footer st.markdown("---")