File size: 3,564 Bytes
809a13a aacf3f8 809a13a aacf3f8 809a13a b4792a9 809a13a b4792a9 809a13a aacf3f8 8a1cfea aacf3f8 8790e06 aacf3f8 e7a8d70 aacf3f8 8790e06 aacf3f8 e7a8d70 aacf3f8 8790e06 60031f6 809a13a aacf3f8 5219cd3 d9825df 5219cd3 aacf3f8 5219cd3 aacf3f8 5219cd3 aacf3f8 |
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 |
import gradio as gr
from huggingface_hub import InferenceClient
# Create an InferenceClient to interact with the model
client = InferenceClient("meta-llama/Llama-3.2-3B-Instruct")
# Define the function to generate a response
def respond(message, history: list[tuple[str, str]], system_message, max_tokens, temperature, top_p):
messages = [{"role": "system", "content": system_message}]
for val in history:
if val[0]:
messages.append({"role": "user", "content": val[0]})
if val[1]:
messages.append({"role": "assistant", "content": val[1]})
messages.append({"role": "user", "content": message})
response = ""
for message in client.chat_completion(
messages,
max_tokens=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
):
token = message.choices[0].delta.content
response += token
yield response
# Custom CSS for styling
css = """
body {
font-family: 'Arial', sans-serif;
background-color: #f8f9fa; /* Light background */
color: #333;
}
.gr-button {
background-color: #0b2545 !important;
color: white !important;
border: none !important;
border-radius: 25px !important;
padding: 8px 20px !important;
font-size: 14px;
font-weight: bold;
cursor: pointer;
}
.gr-button:hover {
background-color: #0a1b35 !important;
}
.search-box {
border-radius: 20px;
border: 1px solid #ccc;
padding: 10px;
width: 100%;
font-size: 16px;
background-color: #ffffff;
}
"""
# Main function to create the interface
with gr.Blocks(css=css) as demo:
gr.Markdown("<h1 style='text-align: center;'>Health Assistant GPT</h1>")
gr.Markdown("<h3 style='text-align: center;'>What do you want to know about health and wellness?</h3>")
# Sidebar
with gr.Sidebar():
gr.Markdown("### Settings")
system_message = gr.Textbox(
value="You are a virtual health assistant designed to provide accurate and reliable information related to health, wellness, and medical topics. Your primary goal is to assist users with their health-related queries, offer general guidance, and suggest when to consult a licensed medical professional. If a user asks a question that is unrelated to health, wellness, or medical topics, respond politely but firmly.",
label="System message",
visible=False
)
max_tokens = gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens", visible=False)
temperature = gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature", visible=False)
top_p = gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)", visible=False)
# Main content
with gr.Row():
with gr.Column(scale=7):
gr.Markdown("### Ask a health-related question:")
search_input = gr.Textbox(label="Search Input", placeholder="Type your health-related question here...", lines=1)
submit_button = gr.Button("Generate Response")
output = gr.Markdown()
with gr.Column(scale=3):
gr.Markdown("### Upload a relevant file (Optional):")
uploaded_file = gr.File(label="Upload PDF")
# Button click action to trigger response generation
submit_button.click(
fn=respond,
inputs=[search_input, [], system_message, max_tokens, temperature, top_p], # Empty history for fresh chat
outputs=output
)
demo.launch()
|