Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import time | |
| def user_message(message, history): | |
| history = history or [] | |
| history.append({"role": "user", "content": message}) | |
| return "", history | |
| def bot_response(history): | |
| user_msg = history[-1]["content"] | |
| resposta = f"Recebi a tua mensagem: '{user_msg}'. Esta é uma resposta exemplo num chatbot em Gradio." | |
| history.append({"role": "assistant", "content": ""}) | |
| texto = "" | |
| for palavra in resposta.split(): | |
| texto += palavra + " " | |
| history[-1]["content"] = texto | |
| time.sleep(0.03) | |
| yield history | |
| theme = gr.themes.Soft( | |
| primary_hue="blue", | |
| secondary_hue="slate", | |
| neutral_hue="slate" | |
| ).set( | |
| body_background_fill="#0f172a", | |
| body_text_color="#f8fafc", | |
| block_background_fill="#111827", | |
| block_border_color="#1f2937", | |
| button_primary_background_fill="#2563eb", | |
| button_primary_background_fill_hover="#1d4ed8", | |
| input_background_fill="#0b1220" | |
| ) | |
| custom_css = """ | |
| #title-box { | |
| text-align: center; | |
| padding: 20px 10px 10px 10px; | |
| } | |
| #title-box h1 { | |
| font-size: 2.2rem; | |
| margin-bottom: 8px; | |
| } | |
| #title-box p { | |
| color: #cbd5e1; | |
| font-size: 1rem; | |
| } | |
| footer {display: none !important;} | |
| """ | |
| with gr.Blocks(fill_height=True) as demo: | |
| gr.HTML(""" | |
| <div id="title-box"> | |
| <h1>🤖 Meu Chatbot</h1> | |
| <p>Um chatbot feito em Gradio com visual melhor e estrutura mais moderna.</p> | |
| </div> | |
| """) | |
| chatbot = gr.Chatbot( | |
| label="Conversa", | |
| height=500, | |
| type="messages" | |
| ) | |
| with gr.Row(): | |
| msg = gr.Textbox( | |
| placeholder="Escreve a tua mensagem aqui...", | |
| show_label=False, | |
| scale=8 | |
| ) | |
| send = gr.Button("Enviar", variant="primary", scale=1) | |
| clear = gr.ClearButton([msg, chatbot], value="Nova conversa") | |
| gr.Examples( | |
| examples=[ | |
| "Olá, quem és tu?", | |
| "Explica-me o que é Gradio.", | |
| "Dá-me ideias para um projeto em Python.", | |
| "Como posso criar um chatbot mais bonito?" | |
| ], | |
| inputs=msg | |
| ) | |
| msg.submit(user_message, [msg, chatbot], [msg, chatbot], queue=False).then( | |
| bot_response, chatbot, chatbot | |
| ) | |
| send.click(user_message, [msg, chatbot], [msg, chatbot], queue=False).then( | |
| bot_response, chatbot, chatbot | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch( | |
| server_name="0.0.0.0", | |
| server_port=7860, | |
| theme=theme, | |
| css=custom_css | |
| ) |