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("---")