File size: 4,015 Bytes
07e8c5e 0c18d60 07e8c5e 0938142 07e8c5e 0c18d60 07e8c5e e5f9932 07e8c5e fa7d26f 0c18d60 e5f9932 0c18d60 0046f91 07e8c5e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
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
)
# Custom CSS for background color and text color
st.markdown(
"""
<style>
.stApp {
background-color: #efefef !important;
color: black !important;
}
iframe {
border: none !important;
box-shadow: none !important;
outline: none !important;
}
h1, h2, h3, h4, h5, h6, p, div, span, label {
color: black !important;
}
button, .stButton>button {
color: black !important;
background-color: blue !important;
}
/* Hide Streamlit's top colored bar and options icon */
header {display: none !important;}
.stDeployButton {display: none !important;}
</style>
""",
unsafe_allow_html=True
)
# Streamlit UI
st.title("AI-Driven Health Assistant")
st.write("Welcome to the 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():
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)
response_text = response.content if hasattr(response, "content") else str(response)
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")
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)
retry_response_text = retry_response.content if hasattr(retry_response, "content") else str(retry_response)
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("---")
|