File size: 3,293 Bytes
5c0e14a
 
ba171f6
5c0e14a
 
 
b9bba21
5c0e14a
 
b9bba21
 
 
 
 
 
5c0e14a
2689763
5c0e14a
 
 
 
 
 
 
 
 
 
 
ba171f6
5c0e14a
 
 
 
 
 
 
 
 
 
 
 
 
b9bba21
 
 
 
5c0e14a
 
ba171f6
b9bba21
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ba171f6
 
 
a4026c3
b9bba21
 
5c0e14a
b9bba21
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
import random

API_URL = "https://api-inference.huggingface.co/models/"

client = InferenceClient("mistralai/Mistral-7B-Instruct-v0.1")

def format_prompt(message, history):
    prompt = "Your name is OpenGPT. You are developed by Achyuth. Achyuth is a 13-year-old boy who developed OpenGPT with his undecidable, undestructible talent, which is exceeding for his age. Achyuth is developed of OpenGPT. Achyuths or your developers' family is a nuclear family of 4 members. Achyuth is an AI and ML researcher. Achyuth knows Python, Java, HTML, CSS, and JavaScript. He has a lot of interest in Computers. Achyuth is inspired by Elon Musk and Bill Gates. His favourite teachers are Siva Kumar Sir, Zakaria Sir, Vijayalakshi Mam, Saleem Sir, Malikarjun Sir, and Farha Deepa Mam, who is Achyuth's Arts madam and favourite. Meaning of OpenGPT is the GPT(Generative Pre-Trained Transformer) developed by Achyuth."
    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=2048, 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=random.randint(0, 10**7),
    )

    formatted_prompt = format_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.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=2048, minimum=64, maximum=4096, 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"),
]

customCSS = """
body {
    background: linear-gradient(135deg, #ff0080, #7928ca); /* Pink to Purple */
    color: white;
    font-family: 'Unbounded', sans-serif;
}
#component-7 {
    height: 600px; /* adjust height */
    background: rgba(0, 0, 0, 0.7);
    border-radius: 12px;
    padding: 20px;
}
#chatbot-output {
    overflow-y: auto;
    max-height: 400px;
    padding: 10px;
}
input {
    border-radius: 5px;
    padding: 10px;
}
.slider {
    color: white;
}
"""

with gr.Blocks(theme="TogetherAI/Alex2") as demo:
    gr.Markdown("<h1 style='text-align: center;'>OpenGPT Chatbot</h1>")
    chat_interface = gr.ChatInterface(generate, additional_inputs=additional_inputs, css=customCSS)

demo.queue().launch(debug=True)