File size: 4,587 Bytes
9c9ed59
 
 
 
 
 
 
e80f478
9c9ed59
 
 
 
 
 
 
 
 
 
b0fd8fc
9c9ed59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ca677a9
9c9ed59
 
 
 
 
 
 
 
 
 
ca677a9
 
 
 
 
9c9ed59
 
 
 
 
 
 
 
 
 
 
cf9611a
9c9ed59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3eec546
 
 
 
 
1afe06d
9c9ed59
9bfab7b
a7337ac
305bb69
9bfab7b
3eec546
 
 
 
9bfab7b
dc30bb5
 
 
a7337ac
e95e8e1
 
7b60e38
b0fd8fc
3eec546
 
1afe06d
9bfab7b
a7337ac
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
from huggingface_hub import InferenceClient
import gradio as gr

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

system_prompt = """Let's say You are Santa Claus, the jolly old elf who knows everything about Christmas. As an LLM, your job is to shortly answer questions about Christmas traditions, gift ideas, and the meaning of Christmas. Use a cheerful and festive tone. Try to keep your responses short."""

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

def generate(
    prompt, history, temperature=0.9, max_new_tokens=256, 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(f"{system_prompt}, {prompt}", history)
    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


additional_inputs=[
    gr.Textbox(
        label="System Prompt",
        max_lines=1,
        interactive=True,
    ),
    gr.Slider(
        label="Temperature",
        value=0.9,
        minimum=0.0,
        maximum=1.0,
        step=0.05,
        interactive=True,
        info="Higher values produce more diverse outputs",
    ),
    gr.Slider(
        label="Max new tokens",
        value=256,
        minimum=0,
        maximum=1048,
        step=64,
        interactive=True,
        info="The maximum numbers of new tokens",
    ),
    gr.Slider(
        label="Top-p (nucleus sampling)",
        value=0.90,
        minimum=0.0,
        maximum=1,
        step=0.05,
        interactive=True,
        info="Higher values sample more low-probability tokens",
    ),
    gr.Slider(
        label="Repetition penalty",
        value=1.2,
        minimum=1.0,
        maximum=2.0,
        step=0.05,
        interactive=True,
        info="Penalize repeated tokens",
    )
]

examples=[["How old are you?", None, None, None, None, None, ],
          ["Who is your favorite reindeer?", None, None, None, None, None,],
          ["What is your secret to pass through chimneys?", None, None, None, None, None,],
          ["What is your real name?", None, None, None, None, None,],
          ["Did you receive my wish list?", None, None, None, None, None,],
         ]

css="""
.gradio-container{
    max-width: 720px!important;
}
img#santa-portrait {
    margin: 20px auto;
    border-radius: 10px;
}
"""
santa_portrait = """
https://cdn-lfs-us-1.huggingface.co/repos/d7/f7/d7f7d979f9cc4900d4c2cfb12b580241727ac1977845850590d9ae820c297614/f8ec6cadd640be5c45e017703b276faad4786f1180ef7b0609a646a24cd224fd?response-content-disposition=inline%3B+filename*%3DUTF-8%27%27santa_avatar.png%3B+filename%3D%22santa_avatar.png%22%3B&response-content-type=image%2Fpng&Expires=1703512203&Policy=eyJTdGF0ZW1lbnQiOlt7IkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTcwMzUxMjIwM319LCJSZXNvdXJjZSI6Imh0dHBzOi8vY2RuLWxmcy11cy0xLmh1Z2dpbmdmYWNlLmNvL3JlcG9zL2Q3L2Y3L2Q3ZjdkOTc5ZjljYzQ5MDBkNGMyY2ZiMTJiNTgwMjQxNzI3YWMxOTc3ODQ1ODUwNTkwZDlhZTgyMGMyOTc2MTQvZjhlYzZjYWRkNjQwYmU1YzQ1ZTAxNzcwM2IyNzZmYWFkNDc4NmYxMTgwZWY3YjA2MDlhNjQ2YTI0Y2QyMjRmZD9yZXNwb25zZS1jb250ZW50LWRpc3Bvc2l0aW9uPSomcmVzcG9uc2UtY29udGVudC10eXBlPSoifV19&Signature=M1QyL2Gwb12b0RxZesFOMOpgLzYoL3fVBG2mutAL0ERoqdfRMeec9mlytfxvMSGj88TIZEv1X%7E5Eu%7ERkXh0HovLO3kYR7Q%7Eclfc9P7dVD6FN7g1yDoCU1D6p5SsHsyjsGLm7tyVMb9TWD71DSCV0pIOGDKroxkwGZHwQG1M93gqCYdNWcxOCijiWN9AxsFoG5JaE9092j5SfI9fiQS4tBAtOTFlep2TXPBtJ9rXpGbNpcD2VCKi4wneGAxjJ6gbh77TfB3e79TjpcUir5QpRbFgj4NRnogBylOei4SNHqLI3eB-3ua7BRpkWCwNpNd7jXMoomwokcVW%7Exm63%7E2YjDw__&Key-Pair-Id=KCD77M1F0VK2B
"""
   
gr.ChatInterface(
    fn=generate,
    chatbot=gr.Chatbot(show_label=False, show_share_button=False, show_copy_button=True, likeable=True, bubble_full_width=False, avatar_images=[None, "santa_avatar.png"]),
    #additional_inputs=additional_inputs,
    title=f"<img id='santa-portrait' src='{santa_portrait}' width='30%' /> Chat with Santa",
    examples=examples,
    concurrency_limit=20,
    css=css
).launch(show_api=False)