Spaces:
Running
Running
| from openai import OpenAI | |
| import gradio as gr | |
| import os | |
| # Inicializa cliente OpenAI com chave do ambiente | |
| client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) | |
| def traduzir_en_para_pt(texto): | |
| if not texto.strip(): | |
| return "Por favor, insira um texto em inglês." | |
| resposta = client.chat.completions.create( | |
| model="gpt-4", | |
| messages=[ | |
| {"role": "system", "content": "Você é um tradutor profissional de inglês para português."}, | |
| {"role": "user", "content": f"Traduza para português:\n\n{texto}"} | |
| ] | |
| ) | |
| return resposta.choices[0].message.content.strip() | |
| def traduzir_pt_para_en(texto): | |
| if not texto.strip(): | |
| return "Por favor, insira um texto em português." | |
| resposta = client.chat.completions.create( | |
| model="gpt-4", | |
| messages=[ | |
| { | |
| "role": "system", | |
| "content": ( | |
| "Você é um assistente de atendimento ao cliente especialista em bordados. Traduza mensagens do português para o inglês com tom caloroso, positivo e proativo. " | |
| "Sempre inclua uma frase acolhedora no final, como: 'I'm here to help!', 'Feel free to reach out if anything needs fixing.', ou 'Just give me a shout if there's anything I can help with.'. " | |
| "Use expressões gentis e humanas como: 'I hope the embroidery turned out wonderfully!', 'I'd love to hear how it went!', 'Let me know if everything turned out well!'. " | |
| "Evite traduções literais. Fale como se estivesse cuidando de um cliente querido com muito carinho." | |
| ) | |
| }, | |
| {"role": "user", "content": f"Traduza para inglês:\n\n{texto}"} | |
| ] | |
| ) | |
| return resposta.choices[0].message.content.strip() | |
| def resposta_curta(texto): | |
| if not texto.strip(): | |
| return "Por favor, insira um texto em português." | |
| resposta = client.chat.completions.create( | |
| model="gpt-4", | |
| messages=[ | |
| { | |
| "role": "system", | |
| "content": ( | |
| "Você é um assistente de atendimento ao cliente. Traduza mensagens do português para o inglês de forma simpática, breve e direta, ideal para chats rápidos." | |
| ) | |
| }, | |
| {"role": "user", "content": f"Traduza para inglês:\n\n{texto}"} | |
| ] | |
| ) | |
| return resposta.choices[0].message.content.strip() | |
| def sugerir_outra_resposta(texto): | |
| return traduzir_pt_para_en(texto) | |
| with gr.Blocks(css=""" | |
| .custom-copy-box textarea + button { | |
| background-color: #3b82f6 !important; | |
| color: white !important; | |
| font-size: 16px !important; | |
| padding: 10px !important; | |
| border-radius: 6px !important; | |
| font-weight: bold; | |
| transition: background-color 0.3s ease; | |
| } | |
| .custom-copy-box textarea + button:hover { | |
| background-color: #2563eb !important; | |
| } | |
| """) as app: | |
| gr.Markdown("## 🌍 Tradutor de Conversas PT ↔ EN") | |
| with gr.Row(): | |
| with gr.Column(): | |
| gr.Markdown("### 📨 Cliente escreveu em inglês") | |
| input_en = gr.Textbox(label="Texto em inglês", lines=4, placeholder="Cole a mensagem do cliente aqui...") | |
| output_pt = gr.Textbox(label="Tradução para português", lines=4) | |
| btn1 = gr.Button("Traduzir para Português") | |
| with gr.Column(): | |
| gr.Markdown("### 📝 Resposta em português") | |
| input_pt = gr.Textbox(label="Texto em português", lines=4, placeholder="Escreva sua resposta em português...") | |
| output_en = gr.Textbox(label="Tradução para inglês", lines=4, show_copy_button=True, elem_classes=["custom-copy-box"]) | |
| btn2 = gr.Button("Traduzir para Inglês") | |
| btn6 = gr.Button("⚡ Resposta Curta") | |
| btn3 = gr.Button("🎲 Outra resposta") | |
| btn1.click(fn=traduzir_en_para_pt, inputs=input_en, outputs=output_pt) | |
| btn2.click(fn=traduzir_pt_para_en, inputs=input_pt, outputs=output_en) | |
| btn6.click(fn=resposta_curta, inputs=input_pt, outputs=output_en) | |
| btn3.click(fn=sugerir_outra_resposta, inputs=input_pt, outputs=output_en) | |
| app.launch() | |