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