Spaces:
Running
Running
File size: 5,377 Bytes
9798bb4 ec6c533 04133ab 60d216a 82af1ed bed0012 879c5e2 ec6c533 a948a8c 60d216a 82af1ed bed0012 879c5e2 bed0012 ec6c533 a948a8c 82af1ed bed0012 60d216a ec6c533 9798bb4 fcff386 779cc8b fcff386 779cc8b fcff386 99ae752 779cc8b 99ae752 fcff386 9798bb4 9e1601a 5f6ad40 9e1601a 5f6ad40 9e1601a 8c8eb60 cb5d6c1 9e1601a e635d75 3c0088a 8c8eb60 b7094bc a948a8c fcff386 3c0088a 7b9f778 779cc8b fefdeba 9e1601a 579269b 9798bb4 68631fc 9798bb4 c3289c1 9798bb4 717b983 9798bb4 9e1601a 9798bb4 8c8eb60 a948a8c 8c8eb60 a948a8c 9798bb4 e635d75 eb97586 e635d75 d091393 9798bb4 e635d75 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 178 179 180 181 182 183 184 185 |
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: $user_c;
border-radius: 10px 10px 0px 10px;
padding: 10px;
max-width: 100%;
text-wrap: pretty;
margin-left:10px;
margin-bottom: 10px;
}
.bot_chat{
background: $bot_c;
border-radius: 10px 10px 10px 0px;
padding: 10px;
max-width: 100%;
text-wrap: pretty;
margin-right:10px;
margin-bottom: 10px;
}
.chat_card{
background: $background_c;
color: $font_c;
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,block=[],css_in=css,w=500,h=800,user_c="#367bb9",bot_c="#1c3c9b",background_c="#253251",font_c="#ffffff"):
chat_len=len(chat)
print(chat_len)
block_box=[]
if user_c:
user_c=user_c.strip('""').strip("''")
css_in=css_in.replace("$user_c",user_c).replace("$bot_c",bot_c).replace("$background_c",background_c).replace("$font_c",font_c)
html_body=""
if block:
for i in range(chat_len):
if i+1 in block:
block_box.append(chat[i])
chat=block_box
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
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(label="Chatbot Mixtral-8x7b-instruct-v0.1")
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")
css_box=gr.Textbox(label="CSS",lines=50,value=css)
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.ColorPicker(label="User Color",value="#367bb9")
bot_c=gr.ColorPicker(label="Bot Color",value="#1c3c9b")
with gr.Row():
background_c=gr.ColorPicker(label="Background Color",value="#253251")
font_c=gr.ColorPicker(label="Font Color",value="#ffffff")
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')
#html_view=gr.HTML()
btn.click(chat_inf,[sys_inp,inp,chat_b],chat_b)
im_btn.click(get_screenshot,[chat_b,chatblock,css_box,im_width,im_height,user_c,bot_c,background_c,font_c],[img])
#im_btn.click(get_screenshot,[chat_b,im_height,im_width,chatblock,theme,wait_time],img)
#app.load(get_screenshot,inp,img)
app.queue(default_concurrency_limit=10).launch()
|