|
import streamlit as st |
|
from langchain_google_genai import ChatGoogleGenerativeAI |
|
|
|
|
|
llm = ChatGoogleGenerativeAI( |
|
model="gemini-1.5-flash", |
|
google_api_key="AIzaSyC7Rhv4L6_oNl-nW3Qeku2SPRkxL5hhtoE", |
|
temperature=0.5 |
|
) |
|
|
|
|
|
st.set_page_config(layout='wide') |
|
|
|
|
|
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 |
|
) |
|
|
|
|
|
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_question = st.text_input("Type your symptoms or disease name, and let CureBot unlock the right cure for youβfast, smart, and AI-powered") |
|
|
|
|
|
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) |
|
|
|
|
|
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!") |
|
|
|
|
|
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") |
|
|
|
|
|
st.markdown("---") |
|
|