File size: 4,204 Bytes
c357e49
9860e17
c357e49
 
 
 
9860e17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a92f417
c357e49
 
9860e17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c357e49
9860e17
 
 
 
 
 
c357e49
9860e17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c357e49
9860e17
 
 
 
a92f417
 
 
 
 
 
 
 
 
 
 
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
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..."
        ]
    },
    # ... [rest of the CONTROVERSIAL_TOPICS dictionary remains the same]
}

def process_message(message, history, topic=None):
    try:
        if topic:
            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."
            
            return response
        else:
            # Para perguntas gerais
            response = f"Sua pergunta: {message}\n\n"
            response += "Pesquisando nas escrituras...\n"
            # Procurar por palavras-chave e retornar versículos relevantes
            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"
            return response
            
    except Exception as e:
        return f"Ocorreu um erro: {str(e)}"

# 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 usando Row e Column para layout
            with gr.Column():
                for topic in CONTROVERSIAL_TOPICS.keys():
                    with gr.Row():
                        btn = gr.Button(f"📚 {topic}", scale=1)
                        btn.click(
                            process_message,
                            inputs=[gr.Textbox(value="", visible=False), chatbot],
                            outputs=chatbot,
                            kwargs={"topic": topic}
                        )
    
    # Eventos
    msg.submit(process_message, [msg, chatbot], [chatbot])
    clear.click(lambda: None, 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)