File size: 4,966 Bytes
738953f
 
 
 
 
b33ea97
 
 
 
 
 
 
 
 
738953f
 
b33ea97
738953f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b33ea97
738953f
 
 
 
 
 
 
 
 
 
8298882
a000d3e
b33ea97
 
 
 
 
76a2f5f
885e40e
6634359
32f683a
7b4c465
885e40e
7b4c465
b271b0b
 
508369d
fe70582
508369d
 
5a01777
b0de485
 
b271b0b
508369d
b271b0b
885e40e
76a2f5f
732945d
76a2f5f
 
669d700
 
b33ea97
a000d3e
b33ea97
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
from huggingface_hub import InferenceClient
import gradio as gr

client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")

def format_prompt(message, history, system_prompt=None):
    prompt = "<s>"
    for user_prompt, bot_response in history:
        prompt += f"[INST] {user_prompt} [/INST]"
        prompt += f" {bot_response}</s> "
    if system_prompt:
        prompt += f"[SYS] {system_prompt} [/SYS]"
    prompt += f"[INST] {message} [/INST]"
    return prompt

def generate(
    prompt, history, system_prompt=None, temperature=0.2, max_new_tokens=512, top_p=0.95, repetition_penalty=1.0,
):
    temperature = float(temperature)
    if temperature < 1e-2:
        temperature = 1e-2
    top_p = float(top_p)

    generate_kwargs = dict(
        temperature=temperature,
        max_new_tokens=max_new_tokens,
        top_p=top_p,
        repetition_penalty=repetition_penalty,
        do_sample=True,
        seed=42,
    )

    formatted_prompt = format_prompt(prompt, history, system_prompt)

    stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False)
    output = ""

    for response in stream:
        output += response.token.text
        yield output
    return output

mychatbot = gr.Chatbot(
    avatar_images=["./user.png", "./botm.png"], bubble_full_width=False, show_label=False, show_copy_button=True, likeable=True,)

demo = gr.ChatInterface(
    fn=generate,
    chatbot=mychatbot,
    title="Hello! I'm Elisa by SpriFi.👋 How can I help you today?",
    css="body { background-color: inherit; overflow-x:hidden;}"
                        ":root {--color-accent: transparent !important; --color-accent-soft:transparent !important; --code-background-fill:black !important; --body-text-color:white !important;}"
                        "#component-2 {background:#ffffff1a; display:contents;}"
                        "div#component-0 { background: transparent !important; border: transparent !important; height: auto !important;}"
                        ".gradio-container.gradio-container-4-8-0.svelte-1kyws56.app {max-width: 100% !important;}"
                        "gradio-app {background: linear-gradient(134deg,#00425e 0%,#001a3f 43%,#421438 77%) !important; background-attachment: fixed !important; background-position: top;}"
                        ".panel.svelte-vt1mxs {background: transparent; padding:0;}"
                        ".block.svelte-90oupt {    background: transparent;    border-color: transparent;}"
                        ".bot.svelte-12dsd9j.svelte-12dsd9j.svelte-12dsd9j {    background: #ffffff1a;    border-color: transparent;    color: white;}"
                        ".user.svelte-12dsd9j.svelte-12dsd9j.svelte-12dsd9j {    background: #ffffff1a;    border-color: transparent;    color: white;    padding: 10px 18px;}"
                        "div.svelte-iyf88w{    background: #cc98d445;    border-color: transparent; border-radius: 25px;}"
                        "textarea.scroll-hide.svelte-1f354aw {    background: transparent; color: #fff !important;}"
                        ".primary.svelte-cmf5ev {   background: transparent;    color: white;}"
                        ".primary.svelte-cmf5ev:hover {   background: transparent;    color: white;}"
                        "button#component-8 {    display: none;    position: absolute;    margin-top: 60px;    border-radius: 25px;}"
                        "div#component-9 {    max-width: fit-content;    margin-left: auto;    margin-right: auto;}"
                        "button#component-10, button#component-11, button#component-12 {    flex: none;    background: #ffffff1a;    border: none;    color: white;    margin-right: auto;    margin-left: auto;    border-radius: 9px;    min-width: fit-content;}"
                        ".share-button.svelte-12dsd9j {    display: none;}"
                        "footer.svelte-mpyp5e {    display: none !important;}"
                        ".message-buttons-bubble.svelte-12dsd9j.svelte-12dsd9j.svelte-12dsd9j { border-color: #31546E;    background: #31546E;}"
                        ".bubble-wrap.svelte-12dsd9j.svelte-12dsd9j.svelte-12dsd9j {padding: 0;}"                      
                        ".prose h1 { color: white !important;    font-size: 16px !important;    font-weight: normal !important;    background: #ffffff1a;    padding: 20px;    border-radius: 20px;    width: 90%;    margin-left: auto !important;    margin-right: auto !important;}"
                        ".toast-wrap.svelte-pu0yf1 { display:none !important;}"
                        ".scroll-hide { scrollbar-width: auto !important;}"
                        ".main svelte-1kyws56 {max-width: 800px; align-self: center;}"
                        "div#component-4 {max-width: 650px;    margin-left: auto;    margin-right: auto;}"  
                        "body::-webkit-scrollbar {    display: none;}"
)

demo.queue().launch(show_api=False)