Spaces:
Running
Running
File size: 4,979 Bytes
9798bb4 ec6c533 82af1ed 60d216a 82af1ed bed0012 879c5e2 ec6c533 82af1ed 60d216a 82af1ed bed0012 879c5e2 bed0012 ec6c533 82af1ed 8c8eb60 82af1ed bed0012 60d216a ec6c533 9798bb4 fcff386 779cc8b fcff386 779cc8b fcff386 99ae752 779cc8b 99ae752 fcff386 9798bb4 9e1601a 5f6ad40 9e1601a 5f6ad40 9e1601a 8c8eb60 cb5d6c1 9e1601a 8c8eb60 fcff386 7b9f778 779cc8b fefdeba 9e1601a 9798bb4 68631fc 9798bb4 9e1601a 9798bb4 8c8eb60 9798bb4 557fe19 348aef8 8c8eb60 fefdeba d091393 9798bb4 |
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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
from huggingface_hub import InferenceClient
import gradio as gr
import random
from html2image import Html2Image
hti = Html2Image()
client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")
css="""
.user_chat{
background: #367bb9;
border-radius: 10px 10px 0px 10px;
padding: 10px;
max-width: 100%;
text-wrap: pretty;
margin-left:10px;
margin-bottom: 10px;
}
.bot_chat{
background: #1c3c9b;
border-radius: 10px 10px 10px 0px;
padding: 10px;
max-width: 100%;
text-wrap: pretty;
margin-right:10px;
margin-bottom: 10px;
}
.chat_card{
background: #253251;
color:#ffffff;
border-radius: 15px;
border-width: thin;
padding: 15px;
font-family: system-ui;
display: flex;
flex-direction: column;
justify-content: center;
flex-wrap: wrap;
max-width:100%;
}
"""
html_user="""
<div class="user_chat">
$chat
</div>
"""
html_bot="""
<div class="bot_chat">
$chat
</div>
"""
html_card="""
<pre class="chat_card">
$body
</pre>
"""
def make_filename(inp):
if len(inp)<=30:
first_name=inp
else:
first_name=inp[:30]
first_name=first_name.replace(" ","_")
print(first_name)
last_name=random.randint(1,99999999999999)
filename=first_name+str(last_name)
return filename
def get_screenshot(chat,css_in,w,h,user_c,bot_c,background_c,font_c):
if user_c:
html_user=html_user.replace("background: #367bb9;",f"background: {user_c};")
html_body=""
for user,bot in chat:
html_body += html_user.replace("$chat",user)
html_body += html_bot.replace("$chat",bot)
html=html_card.replace("$body",html_body)
hti.size = (w, h)
filename=f'{make_filename(chat[0][0])}.png'
print(filename)
hti.screenshot(html_str=html, css_str=css_in, save_as=filename)
return filename,html
def format_prompt(message, history):
prompt = "<s>"
if history:
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 chat_inf(system_prompt,prompt,history):
if not history:
history = []
hist_len=0
if history:
hist_len=len(history)
print(hist_len)
seed = random.randint(1,1111111111111111)
generate_kwargs = dict(
temperature=0.9,
max_new_tokens=10480,
top_p=0.95,
repetition_penalty=1.0,
do_sample=True,
seed=seed,
)
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 [(prompt,output)]
history.append((prompt,output))
yield history
chat=[('user','bot'),('user','bot')]
#get_screenshot(chat=[('user','bot'),('user','bot')])
with gr.Blocks(css=css) as app:
with gr.Row():
with gr.Column(scale=3):
with gr.Group():
chat_b = gr.Chatbot()
with gr.Row():
with gr.Column(scale=3):
inp = gr.Textbox(label="Prompt")
sys_inp = gr.Textbox(label="System Prompt (optional)")
btn = gr.Button("Chat")
with gr.Column(scale=1):
with gr.Group():
stop_btn=gr.Button("Stop")
clear_btn=gr.Button("Clear")
with gr.Column(scale=1):
with gr.Group():
with gr.Row():
im_height=gr.Number(label="Height",value=1000)
im_width=gr.Number(label="Width",value=500)
with gr.Row():
user_c=gr.Color_Picker(value="#367bb9")
bot_c=gr.Color_Picker(value="#1c3c9b")
with gr.Row():
background_c=gr.Color_Picker(value="#253251")
font_c=gr.Color_Picker(value="#ffffff")
wait_time=gr.Number(label="Wait Time",value=3000)
theme=gr.Radio(label="Theme", choices=["light","dark"],value="light")
chatblock=gr.Dropdown(label="Chatblocks",choices=[c for c in range(1,40)],multiselect=True)
im_btn=gr.Button("Screenshot")
img=gr.Image(type='filepath')
css_box=gr.Textbox(lines=50,value=css)
html_view=gr.HTML()
btn.click(chat_inf,[sys_inp,inp,chat_b,user_c,bot_c,background_c,font_c],chat_b)
im_btn.click(get_screenshot,[chat_b,css_box,im_width,im_height],[img,html_view])
#im_btn.click(get_screenshot,[chat_b,im_height,im_width,chatblock,theme,wait_time],img)
#app.load(get_screenshot,inp,img)
app.launch()
|