File size: 3,777 Bytes
07e8c5e
 
 
 
 
 
 
 
 
 
0c18d60
07e8c5e
 
 
0938142
07e8c5e
0c18d60
07e8c5e
 
 
 
fa7d26f
 
 
 
0c18d60
bd5bb26
0c18d60
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
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;
        }
        h1, h2, h3, h4, h5, h6, p, div, span, label {
            color: black !important;
        }
        button, .stButton>button {
            color: black !important;
            background-color: grey !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("---")