File size: 4,512 Bytes
199021b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
beefadc
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

# ✅ Install dependencies first
# pip install transformers accelerate gradio translate

from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
import gradio as gr
from translate import Translator

# Load IBM Granite model
model_id = "ibm-granite/granite-3.3-2b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")
generator = pipeline("text-generation", model=model, tokenizer=tokenizer)

# Translate helpers
def translate_to_english(text, lang_code):
    if lang_code != "en":
        translator = Translator(from_lang=lang_code, to_lang="en")
        return translator.translate(text)
    return text

def translate_to_user_lang(text, lang_code):
    if lang_code != "en":
        translator = Translator(from_lang="en", to_lang=lang_code)
        return translator.translate(text)
    return text

# Core functions
def identify_disease(symptoms, lang_code="en"):
    symptoms_en = translate_to_english(symptoms, lang_code)
    prompt = f"You are a medical assistant. A user reports these symptoms: {symptoms_en}. What possible disease or condition could this indicate?"
    output = generator(prompt, max_new_tokens=150, do_sample=True)[0]["generated_text"]
    result = output[len(prompt):].strip()
    return translate_to_user_lang(result, lang_code)

def suggest_remedy(disease, lang_code="en"):
    disease_en = translate_to_english(disease, lang_code)
    prompt = f"Suggest effective natural home remedies for treating {disease_en}."
    output = generator(prompt, max_new_tokens=150, do_sample=True)[0]["generated_text"]
    result = output[len(prompt):].strip()
    return translate_to_user_lang(result, lang_code)

def preventive_measures(disease, lang_code="en"):
    disease_en = translate_to_english(disease, lang_code)
    prompt = f"What are the best preventive measures to avoid {disease_en}?"
    output = generator(prompt, max_new_tokens=150, do_sample=True)[0]["generated_text"]
    result = output[len(prompt):].strip()
    return translate_to_user_lang(result, lang_code)

def diet_recommendations(disease, lang_code="en"):
    disease_en = translate_to_english(disease, lang_code)
    prompt = f"Suggest a healthy diet plan for someone suffering from {disease_en}."
    output = generator(prompt, max_new_tokens=150, do_sample=True)[0]["generated_text"]
    result = output[len(prompt):].strip()
    return translate_to_user_lang(result, lang_code)

def first_aid_advice(condition, lang_code="en"):
    condition_en = translate_to_english(condition, lang_code)
    prompt = f"What first aid steps should be taken immediately for {condition_en}?"
    output = generator(prompt, max_new_tokens=150, do_sample=True)[0]["generated_text"]
    result = output[len(prompt):].strip()
    return translate_to_user_lang(result, lang_code)

# Gradio UI
with gr.Blocks() as demo:
    gr.Markdown("## 🤖 HealthAI - Your Intelligent Healthcare Assistant")

    with gr.Tab("🩺 Symptoms Identifier"):
        symptoms_input = gr.Textbox(label="Enter your symptoms")
        disease_output = gr.Textbox(label="Predicted Disease")
        btn1 = gr.Button("Identify Disease")
        btn1.click(fn=identify_disease, inputs=symptoms_input, outputs=disease_output)

    with gr.Tab("🌿 Home Remedies"):
        disease_input = gr.Textbox(label="Enter disease name")
        remedy_output = gr.Textbox(label="Suggested Home Remedy")
        btn2 = gr.Button("Get Remedy")
        btn2.click(fn=suggest_remedy, inputs=disease_input, outputs=remedy_output)

    with gr.Tab("🛡️ Preventive Measures"):
        prevent_input = gr.Textbox(label="Enter disease name")
        prevent_output = gr.Textbox(label="Preventive Measures")
        btn3 = gr.Button("Get Advice")
        btn3.click(fn=preventive_measures, inputs=prevent_input, outputs=prevent_output)

    with gr.Tab("🥗 Diet Recommendations"):
        diet_input = gr.Textbox(label="Enter disease name")
        diet_output = gr.Textbox(label="Recommended Diet")
        btn4 = gr.Button("Get Diet Plan")
        btn4.click(fn=diet_recommendations, inputs=diet_input, outputs=diet_output)

    with gr.Tab("🆘 First Aid Help"):
        first_aid_input = gr.Textbox(label="Enter medical condition or emergency")
        first_aid_output = gr.Textbox(label="First Aid Advice")
        btn5 = gr.Button("Get First Aid")
        btn5.click(fn=first_aid_advice, inputs=first_aid_input, outputs=first_aid_output)

demo.launch(ssr_mode=False)