Spaces:
Sleeping
Sleeping
import gradio as gr | |
from lmdeploy.serve.gradio.app import * | |
async def chat_stream_test( | |
instruction: str, | |
state_chatbot: Sequence, | |
cancel_btn: gr.Button, | |
reset_btn: gr.Button, | |
request: gr.Request, | |
): | |
"""Chat with AI assistant. | |
Args: | |
instruction (str): user's prompt | |
state_chatbot (Sequence): the chatting history | |
request (gr.Request): the request from a user | |
""" | |
yield (state_chatbot, state_chatbot, disable_btn, disable_btn, | |
'') | |
session_id = threading.current_thread().ident | |
if request is not None: | |
session_id = int(request.kwargs['client']['host'].replace('.', '')) | |
print(request.kwargs['client']) | |
else: | |
print('Warning, could not get a request ip') | |
print(f'session_id {session_id}') | |
bot_summarized_response = '' | |
state_chatbot = state_chatbot + [(instruction, None)] | |
yield (state_chatbot, state_chatbot, disable_btn, enable_btn, | |
f'{bot_summarized_response}'.strip()) | |
yield (state_chatbot, state_chatbot, disable_btn, enable_btn, | |
f'{bot_summarized_response}'.strip()) | |
with gr.Blocks(css=CSS, theme=THEME) as demo: | |
state_chatbot = gr.State([]) | |
with gr.Column(elem_id='container'): | |
gr.Markdown('## LMDeploy Playground') | |
chatbot = gr.Chatbot( | |
elem_id='chatbot', | |
label="test") | |
instruction_txtbox = gr.Textbox( | |
placeholder='Please input the instruction', | |
label='Instruction') | |
with gr.Row(): | |
cancel_btn = gr.Button(value='Cancel', interactive=False) | |
reset_btn = gr.Button(value='Reset') | |
send_event = instruction_txtbox.submit( | |
chat_stream_test, | |
[instruction_txtbox, state_chatbot, cancel_btn, reset_btn], | |
[state_chatbot, chatbot, cancel_btn, reset_btn]) | |
instruction_txtbox.submit( | |
lambda: gr.Textbox.update(value=''), | |
[], | |
[instruction_txtbox], | |
) | |
cancel_btn.click(cancel_local_func, | |
[state_chatbot, cancel_btn, reset_btn], | |
[state_chatbot, cancel_btn, reset_btn], | |
cancels=[send_event]) | |
reset_btn.click(reset_local_func, [instruction_txtbox, state_chatbot], | |
[state_chatbot, chatbot, instruction_txtbox], | |
cancels=[send_event]) | |
# print(f'server is gonna mount on: http://{server_name}:{server_port}') | |
demo.queue(concurrency_count=4, max_size=100).launch() | |