Spaces:
Running
on
Zero
Running
on
Zero
File size: 5,500 Bytes
66a5d97 4771e5d 5f2a839 31a5080 ed59139 e802041 ed59139 e802041 ed59139 08c8208 ed59139 e802041 398ee6b ed59139 8728056 ff24809 83034af 3720f41 ff24809 a87e997 398ee6b 5f2a839 398ee6b 5f2a839 398ee6b b62c148 8014203 98e132f 8014203 23734c2 aac8422 23734c2 8014203 23734c2 c48fd5f e4e6e3e |
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 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
import torch
import spaces
import os
IS_SPACES_ZERO = os.environ.get("SPACES_ZERO_GPU", "0") == "1"
IS_SPACE = os.environ.get("SPACE_ID", None) is not None
device = "cuda" if torch.cuda.is_available() else "cpu"
LOW_MEMORY = os.getenv("LOW_MEMORY", "0") == "1"
print(f"Using device: {device}")
print(f"low memory: {LOW_MEMORY}")
model_name = "ruslanmv/Medical-Llama3-8B"
# Move model and tokenizer to the CUDA device
model = AutoModelForCausalLM.from_pretrained(model_name).to(device)
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
tokenizer.pad_token = tokenizer.eos_token
@spaces.GPU
def askme(symptoms, question):
sys_message = '''\
You are an AI Medical Assistant trained on a vast dataset of health information. Please be thorough and
provide an informative answer. If you don't know the answer to a specific medical inquiry, advise seeking professional help.
'''
content = symptoms + " " + question
messages = [{"role": "system", "content": sys_message}, {"role": "user", "content": content}]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(prompt, return_tensors="pt").to(device) # Ensure inputs are on CUDA device
outputs = model.generate(**inputs, max_new_tokens=200, use_cache=True)
response_text = tokenizer.batch_decode(outputs, skip_special_tokens=True)[0].strip()
# Remove system messages and content
# Extract and return the generated text, removing the prompt
# Extract only the assistant's response
# Extract only the assistant's response
answer = response_text.split('<|im_start|>assistant')[1].split('<|im_end|>')[0].strip()
return answer
# Example usage
symptoms = '''\
I'm a 35-year-old male and for the past few months, I've been experiencing fatigue,
increased sensitivity to cold, and dry, itchy skin.
'''
question = '''\
Could these symptoms be related to hypothyroidism?
If so, what steps should I take to get a proper diagnosis and discuss treatment options?
'''
examples = [
[symptoms, question]
]
css = """
/* General Container Styles */
.gradio-container {
font-family: "IBM Plex Sans", sans-serif; position: fixed; /* Ensure full-screen coverage */
top: 0;
left: 0;
width: 100vw; /* Set width to 100% viewport width */
height: 100vh; /* Set height to 100% viewport height */
margin: 0; /* Remove margins for full-screen effect */
padding: 0; /* Remove padding fol-screen background */
background-color: #212529; /* Dark background color */
color: #fff; /* Light text color for better readability */
overflow: hidden; /* Hide potential overflow content */
background-image: url("https://huggingface.co/spaces/ruslanmv/AI-Medical-Chatbot/resolve/main/notebook/local/img/background.jpg"); /* Replace with your image path */
background-size: cover; /* Stretch the image to cover the container */
background-position: center; /* Center the image horizontally and vertically */
}
/* Button Styles */
.gr-button {
color: white;
background: #007bff; /* Use a primary color for the background */
white-space: nowrap;
border: none;
padding: 10px 20px;
border-radius: 8px;
cursor: pointer;
transition: background-color 0.3s, color 0.3s;
}
.gr-button:hover {
background-color: #0056b3; /* Darken the background color on hover */
}
/* Output box styles */
.gradio-textbox {
background-color: #343a40; /* Dark background color */
color: #fff; /* Light text color for better readability */
border-color: #343a40; /* Dark border color */
border-radius: 8px;
}
"""
welcome_message = """# AI Medical Llama 3 Chatbot
Ask any medical question giving first your symptoms and get answers from our AI Medical Llama3 Chatbot
Developed by Ruslan Magana. Visit [https://ruslanmv.com/](https://ruslanmv.com/) for more information."""
symptoms_input = gr.Textbox(label="Symptoms")
question_input = gr.Textbox(label="Question")
answer_output = gr.Textbox(label="Answer")
iface = gr.Interface(
fn=askme,
inputs=[symptoms_input, question_input],
outputs=answer_output,
examples=examples,
css=css,
description=welcome_message # Add the welcome message here
)
iface.launch()
'''
with gr.Blocks(css=css) as interface:
gr.Markdown(welcome_message) # Display the welcome message
with gr.Row():
with gr.Column():
symptoms_input = gr.Textbox(label="Symptoms", placeholder="Enter symptoms here")
question_input = gr.Textbox(label="Question", placeholder="Enter question here")
generate_button = gr.Button("Ask Me", variant="primary")
with gr.Row():
answer_output = gr.Textbox(type="text", label="Answer")
interface.launch()
'''
'''
iface = gr.Interface(
fn=askme,
inputs=["text", "text"],
outputs="text",
examples=examples,
title="Medical AI Chatbot",
description="Ask me a medical question!"
)
iface.launch()
'''
'''
iface = gr.Interface(
fn=askme,
inputs=[
gr.Textbox(label="Symptoms", placeholder="Enter symptoms here"),
gr.Textbox(label="Question", placeholder="Enter question here")
],
outputs="text",
examples=examples,
title="Medical AI Chatbot",
description="Ask me a medical question!",
css=css
)
iface.launch()
'''
|