Spaces:
Sleeping
Sleeping
File size: 4,427 Bytes
d7f76f3 7335022 d7f76f3 7335022 d7f76f3 7335022 d7f76f3 |
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 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
import gradio as gr
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
# Load the IBM Granite instruct model from Hugging Face
MODEL_NAME = "ibm-granite/granite-3.3-2b-instruct"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME,
torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32,
device_map="auto"
)
def generate_response(prompt):
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(
**inputs,
max_new_tokens=150,
do_sample=True,
top_p=0.9,
temperature=0.7,
pad_token_id=tokenizer.eos_token_id,
)
text = tokenizer.decode(outputs[0], skip_special_tokens=True)
return text[len(prompt):].strip()
def symptoms_identifier(symptoms):
if not symptoms.strip():
return "Please enter symptoms."
prompt = f"Based on the following symptoms, identify the most likely disease:\nSymptoms: {symptoms}\nDisease:"
return generate_response(prompt)
def home_remedies(disease):
if not disease.strip():
return "Please enter a disease."
prompt = f"Suggest a natural, easy home remedy for the disease:\nDisease: {disease}\nHome Remedy:"
return generate_response(prompt)
# Custom CSS styling
custom_css = """
body {
background-color: #ffffff;
color: #6b7280;
font-family: 'Poppins', sans-serif;
margin: 0; padding: 0;
}
h1 {
font-weight: 700;
font-size: 3rem;
color: #111827;
margin-bottom: 0.5rem;
}
h2 {
font-weight: 600;
font-size: 1.5rem;
color: #111827;
margin-bottom: 1rem;
}
.card {
background: white;
border-radius: 0.75rem;
box-shadow: rgba(203, 213, 224, 0.5) 0px 4px 6px -1px;
padding: 2rem;
margin: 1rem;
box-sizing: border-box;
}
.gr-button {
background-color: #111827;
color: white;
border-radius: 0.5rem;
padding: 0.75rem 1.5rem;
font-weight: 600;
font-size: 1rem;
transition: all 0.3s ease;
border: none;
cursor: pointer;
}
.gr-button:hover {
background-color: #374151;
transform: scale(1.05);
}
.gr-textbox {
border-radius: 0.5rem;
border: 1px solid #d1d5db;
padding: 0.75rem 1rem;
font-size: 1rem;
color: #111827;
font-family: 'Poppins', sans-serif;
transition: border-color 0.3s ease;
}
.gr-textbox:focus {
border-color: #111827;
outline: none;
box-shadow: 0 0 6px rgb(17 24 39 / 0.3);
}
@media (min-width: 768px) {
.flex-row {
display: flex;
justify-content: center;
max-width: 1200px;
margin: 0 auto;
gap: 2rem;
}
.flex-column {
flex: 1;
min-width: 0; /* For Firefox */
}
}
@media (max-width: 767px) {
.flex-column {
margin: 1rem 0;
}
}
"""
with gr.Blocks(css=custom_css) as demo:
gr.Markdown("<h1 style='text-align:center;'>HealthAI</h1><p style='text-align:center; font-size:1.25rem; color:#4b5563; max-width:700px; margin:auto;'>Generative AI-powered health assistant for symptom identification and natural home remedies.</p>")
with gr.Row(variant="panel", elem_classes="flex-row"):
with gr.Column(elem_classes="flex-column"):
gr.Markdown("## Symptoms Identifier")
symptoms_input = gr.Textbox(label="Enter Symptoms", placeholder="e.g. fever, headache, fatigue", lines=4)
symptoms_output = gr.Textbox(label="Predicted Disease", interactive=False, lines=2)
symptoms_button = gr.Button("Identify Disease")
symptoms_button.click(symptoms_identifier, inputs=symptoms_input, outputs=symptoms_output)
with gr.Column(elem_classes="flex-column"):
gr.Markdown("## Home Remedies")
disease_input = gr.Textbox(label="Enter Disease", placeholder="e.g. common cold", lines=2)
remedy_output = gr.Textbox(label="Recommended Home Remedy", interactive=False, lines=4)
remedy_button = gr.Button("Get Home Remedy")
remedy_button.click(home_remedies, inputs=disease_input, outputs=remedy_output)
gr.Markdown("<p style='text-align:center; margin-top:3rem; color:#9ca3af;'>Powered by <a href='https://huggingface.co/ibm-granite/granite-3.3-2b-instruct' target='_blank' rel='noopener noreferrer'>ibm-granite/granite-3.3-2b-instruct</a></p>")
if __name__ == "__main__":
demo.launch()
|