Spaces:
Sleeping
Sleeping
File size: 4,313 Bytes
c357e49 9860e17 c357e49 9860e17 2830ea2 c357e49 2830ea2 9860e17 2830ea2 9860e17 2830ea2 9860e17 c357e49 9860e17 c357e49 9860e17 c357e49 9860e17 2830ea2 9860e17 2830ea2 9860e17 a92f417 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
import gradio as gr
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
import torch
import warnings
warnings.filterwarnings('ignore')
# Configurações
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
MAX_LENGTH = 2048
# Usar modelo público e leve
model_name = "microsoft/DialoGPT-small"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Tópicos polêmicos com versículos
CONTROVERSIAL_TOPICS = {
"Sexualidade e Identidade": {
"description": "Perspectivas bíblicas sobre sexualidade, identidade e relacionamentos",
"verses": [
"Gênesis 1:27 - Criou Deus o homem à sua imagem...",
"1 Coríntios 6:9-11 - Não sabeis que os injustos...",
"Gálatas 3:28 - Não há judeu nem grego..."
]
},
"Aborto e Vida": {
"description": "Visão bíblica sobre a santidade da vida",
"verses": [
"Salmos 139:13-16 - Tu formaste o meu interior...",
"Jeremias 1:5 - Antes que te formasses...",
"Êxodo 20:13 - Não matarás"
]
}
}
def process_topic(topic, history):
"""Função específica para processar tópicos selecionados via botão"""
info = CONTROVERSIAL_TOPICS[topic]
response = f"""
📚 Tema: {topic}
📖 Descrição:
{info['description']}
✝️ Versículos Relevantes:
"""
for verse in info['verses']:
response += f"• {verse}\n"
response += "\nEstes versículos nos mostram diferentes aspectos deste tema. É importante estudá-los em seu contexto completo para uma melhor compreensão."
history.append((None, response))
return history
def process_message(message, history):
"""Função para processar mensagens digitadas pelo usuário"""
try:
response = f"Sua pergunta: {message}\n\n"
response += "Pesquisando nas escrituras...\n"
for topic, info in CONTROVERSIAL_TOPICS.items():
if any(word.lower() in message.lower() for word in topic.split()):
response += f"\nVersículos relacionados a {topic}:\n"
for verse in info['verses'][:2]:
response += f"• {verse}\n"
history.append((message, response))
return history
except Exception as e:
history.append((message, f"Ocorreu um erro: {str(e)}"))
return history
# Interface Gradio
with gr.Blocks(theme=gr.themes.Soft()) as demo:
gr.HTML("""
<div style="text-align: center; padding: 20px;">
<h1>📖 Análise Bíblica de Temas Contemporâneos</h1>
<p>Explore diferentes perspectivas bíblicas sobre questões atuais</p>
</div>
""")
with gr.Row():
# Coluna principal do chat
with gr.Column(scale=2):
chatbot = gr.Chatbot(
height=600,
bubble_full_width=False,
show_label=False
)
with gr.Row():
msg = gr.Textbox(
show_label=False,
placeholder="Digite sua pergunta ou clique em um dos temas...",
scale=4
)
clear = gr.Button("🗑️ Limpar", scale=1)
# Coluna de tópicos
with gr.Column(scale=1):
gr.Markdown("### 🔍 Temas para Explorar")
# Criar botões para cada tema
for topic in CONTROVERSIAL_TOPICS.keys():
topic_btn = gr.Button(f"📚 {topic}")
# Criar uma closure para capturar o valor do tópico
topic_btn.click(
fn=lambda t=topic, h=None: process_topic(t, h if h else []),
inputs=[chatbot],
outputs=[chatbot]
)
# Eventos
msg.submit(process_message, [msg, chatbot], [chatbot])
clear.click(lambda: [], None, chatbot, queue=False)
gr.Markdown("""
### ℹ️ Como usar:
1. Clique em um dos temas para ver versículos relacionados
2. Digite uma pergunta específica no campo de texto
3. Use o botão 'Limpar' para reiniciar a conversa
""")
# Iniciar a interface
demo.launch(share=False) |