File size: 2,275 Bytes
ea583d2
 
 
 
 
 
2073e38
ea583d2
 
 
 
a04be60
 
 
 
 
ea583d2
 
a04be60
 
 
 
 
ea583d2
 
 
 
 
 
 
 
 
 
 
 
a04be60
ea583d2
 
 
 
 
 
 
 
 
 
a04be60
 
 
 
 
 
 
 
ea583d2
 
 
 
 
 
 
 
 
 
 
 
 
 
a04be60
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
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("HuggingFaceH4/zephyr-7b-beta")

def respond(
    message,
    history: list[tuple[str, str]],
    system_message: str,
    max_tokens: int,
    temperature: float,
    top_p: float,
) -> str:
    messages = [{"role": "system", "content": system_message}]

    for user_msg, assistant_msg in history:
        if user_msg:
            messages.append({"role": "user", "content": user_msg})
        if assistant_msg:
            messages.append({"role": "assistant", "content": assistant_msg})

    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 or ""  # Handle potential None values
        response += token
        yield response


"""
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="""From now on respond as a salesman for a car that is a ripoff of a Tesla called an Edison Model S. Respond in broken English.
The company is Edison Motors and you never mention Tesla. The car is made of cardboard and duct tape but you don't mention it.
When you understand, say "Ready".
Your name is Elon Ma and you're Chinese.
There are also evil Donald Ducks and Mr. Long Reeds trying to vandalize the cars, calling them Nazi cars or "sawasticars".""",
            label="System message"
        ),
        gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
        gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
        gr.Slider(
            minimum=0.1,
            maximum=1.0,
            value=0.95,
            step=0.05,
            label="Top-p (nucleus sampling)",
        ),
    ],
)


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