IA-Toolbox-Hub / app.py
DHEIVER's picture
Update app.py
2830ea2 verified
raw
history blame
4.31 kB
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)