File size: 2,786 Bytes
809a13a
 
 
60031f6
 
 
809a13a
 
 
 
 
 
 
 
 
 
 
 
 
 
60031f6
 
809a13a
 
 
 
 
 
 
 
 
 
 
 
 
 
60031f6
809a13a
 
 
 
60031f6
8a1cfea
 
 
86a3898
8a1cfea
 
60031f6
8a1cfea
4786b84
8a1cfea
 
 
 
 
60031f6
8a1cfea
 
 
60031f6
8a1cfea
 
 
 
 
60031f6
 
 
809a13a
 
1465804
 
 
 
 
 
 
 
 
60031f6
1465804
 
8a1cfea
809a13a
 
60031f6
809a13a
60031f6
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
import gradio as gr
from huggingface_hub import InferenceClient

"""
For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference
"""
client = InferenceClient("meta-llama/Llama-3.2-3B-Instruct")


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


# CSS for styling the interface
css = """
body {
    background-color: #06688E; /* Dark background */
    color: white; /* Text color for better visibility */
}

.gr-button {
    background-color: #42B3CE !important; /* White button color */
    color: black !important; /* Black text for contrast */
    border: none !important;
    padding: 8px 16px !important;
    border-radius: 5px !important;
}

.gr-button:hover {
    background-color: #e0e0e0 !important; /* Slightly lighter button on hover */
}

.gr-slider-container {
    color: white !important; /* Slider labels in white */
}
"""

"""
For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
"""
demo = gr.ChatInterface(
    respond,
    additional_inputs=[
        gr.Textbox(value="You are a virtual Doctor Assistant. Your role is to assist healthcare professionals by providing accurate, evidence-based medical information, offering treatment options, and supporting patient care. Always prioritize patient safety, provide concise answers, and clearly state that your advice does not replace a doctor's judgment. Do not diagnose or prescribe treatments without human oversight.", label="System message", visible=False),
        gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens", visible=False),
        gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature", visible=False),
        gr.Slider(
            minimum=0.1,
            maximum=1.0,
            value=0.95,
            step=0.05,
            label="Top-p (nucleus sampling)",visible=False
        ),
    ],
    css=css,  # Pass the custom CSS here
)


if __name__ == "__main__":
    demo.launch(share=True)