File size: 4,090 Bytes
07e8c5e 2f42d20 07e8c5e 2f42d20 4a591de 07e8c5e 0c18d60 07e8c5e 2f42d20 0938142 07e8c5e 0c18d60 07e8c5e fa7d26f 0c18d60 3290da6 0c18d60 2f42d20 07e8c5e 2f42d20 07e8c5e 2f42d20 07e8c5e 2f42d20 07e8c5e 2f42d20 07e8c5e 2f42d20 07e8c5e 2f42d20 07e8c5e 2f42d20 07e8c5e 2f42d20 |
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 108 109 110 111 |
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(
"""
<style>
.stApp {
background-color: #efefef !important;
color: black !important;
}
h1, h2, h3, h4, h5, h6, p, div, span, label {
color: black !important;
}
button, .stButton>button {
color: black !important;
background-color:grey;
}
header, iframe {display: none !important;}
</style>
""",
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("---")
|