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()