| """Reproduction for https://github.com/gradio-app/gradio/issues/8771. |
| |
| Open "Additional Inputs", then close it again, and watch the chatbot. |
| |
| The accordion is deliberately tall so that opening it overflows the frame |
| even in a large window. If it still fits, the frame never grows and there is |
| nothing for the fix to do; make the browser window shorter in that case. |
| Before the fix it stays tall and pushes the message box off screen; |
| after the fix the layout returns to where it started. |
| """ |
|
|
| import gradio as gr |
|
|
| PLACEHOLDER = """ |
| <div style="padding: 30px; text-align: center;"> |
| <h1 style="font-size: 28px; margin-bottom: 2px;">Chat</h1> |
| <p style="font-size: 18px;">Open "Additional Inputs" below, then close it again.</p> |
| </div> |
| """ |
|
|
|
|
| def respond(message, history, model, system_message, max_tokens, temperature, |
| top_p, top_k, repetition_penalty, beams, length_penalty, seed): |
| return f"{model} | {system_message} | {max_tokens} | {message}" |
|
|
|
|
| demo = gr.ChatInterface( |
| respond, |
| additional_inputs=[ |
| gr.Dropdown( |
| ["Meta-Llama-3-70B-Instruct-Q3_K_M.gguf", "gemma-2-27b-it-Q8_0.gguf"], |
| value="gemma-2-27b-it-Q8_0.gguf", |
| label="Model", |
| ), |
| gr.Textbox( |
| value="You are a helpful assistant.", |
| label="System message", |
| lines=40, |
| ), |
| gr.Slider(minimum=1, maximum=4096, value=2048, step=1, label="Max 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"), |
| gr.Slider(minimum=0, maximum=100, value=40, step=1, label="Top-k"), |
| gr.Slider( |
| minimum=0.0, maximum=2.0, value=1.1, step=0.1, label="Repetition penalty" |
| ), |
| gr.Slider(minimum=0, maximum=10, value=1, step=1, label="Beams"), |
| gr.Slider(minimum=0.0, maximum=2.0, value=0.0, step=0.1, label="Length penalty"), |
| gr.Slider(minimum=0, maximum=8192, value=0, step=1, label="Seed"), |
| ], |
| chatbot=gr.Chatbot(scale=1, placeholder=PLACEHOLDER), |
| ) |
|
|
| if __name__ == "__main__": |
| demo.launch(ssr_mode=False) |
|
|