DHEIVER commited on
Commit
8e7e0ba
1 Parent(s): 20a9402

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +62 -9
app.py CHANGED
@@ -3,10 +3,7 @@ from transformers import AutoTokenizer, AutoModelForQuestionAnswering
3
  import torch
4
  import logging
5
  import warnings
6
- import json
7
- from datetime import datetime
8
- import random
9
- from pathlib import Path
10
 
11
  # Configuração do logging
12
  logging.basicConfig(
@@ -16,7 +13,39 @@ logging.basicConfig(
16
  logger = logging.getLogger(__name__)
17
  warnings.filterwarnings('ignore')
18
 
19
- # Banco de passagens bíblicas
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  BIBLICAL_PASSAGES = {
21
  "casamento": [
22
  {
@@ -65,14 +94,12 @@ class BiblicalCounselor:
65
 
66
  def get_answer(self, theme: str, question: str) -> tuple:
67
  try:
68
- # Obtém o contexto bíblico para o tema
69
  if theme not in BIBLICAL_PASSAGES:
70
  return "Tema não encontrado em nossa base.", "Sem referências disponíveis."
71
 
72
  passage = BIBLICAL_PASSAGES[theme][0]
73
  context = passage["texto"]
74
 
75
- # Tokenização
76
  inputs = self.tokenizer.encode_plus(
77
  question,
78
  context,
@@ -82,7 +109,6 @@ class BiblicalCounselor:
82
  padding="max_length"
83
  ).to(self.device)
84
 
85
- # Obtenção da resposta
86
  with torch.no_grad():
87
  outputs = self.model(**inputs)
88
 
@@ -93,7 +119,6 @@ class BiblicalCounselor:
93
  answer = tokens[answer_start:answer_end + 1]
94
  answer = self.tokenizer.convert_tokens_to_string(answer)
95
 
96
- # Formatação da resposta
97
  formatted_answer = f"Com base na palavra de Deus, {answer}"
98
  reference = f"📖 {passage['passagem']}\n✝️ Contexto: {passage['contexto']}"
99
 
@@ -103,6 +128,10 @@ class BiblicalCounselor:
103
  logger.error(f"Erro ao processar pergunta: {str(e)}")
104
  return "Perdoe-nos, ocorreu um erro ao processar sua pergunta.", "Erro no processamento"
105
 
 
 
 
 
106
  def create_interface():
107
  try:
108
  counselor = BiblicalCounselor()
@@ -138,6 +167,24 @@ def create_interface():
138
  lines=2
139
  )
140
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
  submit_btn.click(
142
  fn=lambda t, q: counselor.get_answer(t, q),
143
  inputs=[theme, question],
@@ -147,6 +194,12 @@ def create_interface():
147
  gr.Markdown("""
148
  ---
149
  💝 Desenvolvido para edificação | Baseado nas Sagradas Escrituras
 
 
 
 
 
 
150
  """)
151
 
152
  return demo
 
3
  import torch
4
  import logging
5
  import warnings
6
+ from typing import List, Tuple
 
 
 
7
 
8
  # Configuração do logging
9
  logging.basicConfig(
 
13
  logger = logging.getLogger(__name__)
14
  warnings.filterwarnings('ignore')
15
 
16
+ # Exemplos de perguntas por tema
17
+ THEME_EXAMPLES = {
18
+ "casamento": [
19
+ ["casamento", "Como manter um casamento feliz segundo a Bíblia?"],
20
+ ["casamento", "Quais são os princípios bíblicos para resolver conflitos no casamento?"],
21
+ ["casamento", "Como demonstrar amor ao cônjuge de acordo com a Bíblia?"],
22
+ ["casamento", "O que a Bíblia diz sobre perdão no casamento?"],
23
+ ["casamento", "Como orar pelo meu casamento?"]
24
+ ],
25
+ "criacao_filhos": [
26
+ ["criacao_filhos", "Como disciplinar os filhos segundo a Bíblia?"],
27
+ ["criacao_filhos", "Qual a importância de ensinar a Palavra de Deus aos filhos?"],
28
+ ["criacao_filhos", "Como criar filhos tementes a Deus?"],
29
+ ["criacao_filhos", "Como lidar com filhos rebeldes de forma bíblica?"],
30
+ ["criacao_filhos", "Como ensinar valores cristãos aos filhos pequenos?"]
31
+ ],
32
+ "papel_mulher": [
33
+ ["papel_mulher", "Qual o papel da mulher cristã no lar?"],
34
+ ["papel_mulher", "Como ser uma mãe segundo o coração de Deus?"],
35
+ ["papel_mulher", "O que significa ser uma mulher virtuosa?"],
36
+ ["papel_mulher", "Como equilibrar trabalho e família como mulher cristã?"],
37
+ ["papel_mulher", "Como desenvolver uma vida de oração como mulher?"]
38
+ ],
39
+ "papel_homem": [
40
+ ["papel_homem", "Quais as responsabilidades do homem como líder do lar?"],
41
+ ["papel_homem", "Como ser um pai presente segundo a Bíblia?"],
42
+ ["papel_homem", "O que significa ser o sacerdote do lar?"],
43
+ ["papel_homem", "Como liderar a família espiritualmente?"],
44
+ ["papel_homem", "Como demonstrar amor à esposa segundo as escrituras?"]
45
+ ]
46
+ }
47
+
48
+ # Banco de passagens bíblicas [mantido o mesmo de antes]
49
  BIBLICAL_PASSAGES = {
50
  "casamento": [
51
  {
 
94
 
95
  def get_answer(self, theme: str, question: str) -> tuple:
96
  try:
 
97
  if theme not in BIBLICAL_PASSAGES:
98
  return "Tema não encontrado em nossa base.", "Sem referências disponíveis."
99
 
100
  passage = BIBLICAL_PASSAGES[theme][0]
101
  context = passage["texto"]
102
 
 
103
  inputs = self.tokenizer.encode_plus(
104
  question,
105
  context,
 
109
  padding="max_length"
110
  ).to(self.device)
111
 
 
112
  with torch.no_grad():
113
  outputs = self.model(**inputs)
114
 
 
119
  answer = tokens[answer_start:answer_end + 1]
120
  answer = self.tokenizer.convert_tokens_to_string(answer)
121
 
 
122
  formatted_answer = f"Com base na palavra de Deus, {answer}"
123
  reference = f"📖 {passage['passagem']}\n✝️ Contexto: {passage['contexto']}"
124
 
 
128
  logger.error(f"Erro ao processar pergunta: {str(e)}")
129
  return "Perdoe-nos, ocorreu um erro ao processar sua pergunta.", "Erro no processamento"
130
 
131
+ def get_theme_examples(theme: str) -> List[List[str]]:
132
+ """Retorna exemplos para um tema específico"""
133
+ return THEME_EXAMPLES.get(theme, [])
134
+
135
  def create_interface():
136
  try:
137
  counselor = BiblicalCounselor()
 
167
  lines=2
168
  )
169
 
170
+ # Exemplos dinâmicos baseados no tema
171
+ examples = gr.Examples(
172
+ examples=THEME_EXAMPLES["casamento"], # Exemplos iniciais
173
+ inputs=[theme, question],
174
+ outputs=[answer_output, reference_output],
175
+ fn=lambda t, q: counselor.get_answer(t, q),
176
+ label="Exemplos de Perguntas"
177
+ )
178
+
179
+ # Atualiza exemplos quando o tema muda
180
+ def update_examples(new_theme):
181
+ examples.update(examples=THEME_EXAMPLES[new_theme])
182
+
183
+ theme.change(
184
+ fn=update_examples,
185
+ inputs=[theme]
186
+ )
187
+
188
  submit_btn.click(
189
  fn=lambda t, q: counselor.get_answer(t, q),
190
  inputs=[theme, question],
 
194
  gr.Markdown("""
195
  ---
196
  💝 Desenvolvido para edificação | Baseado nas Sagradas Escrituras
197
+
198
+ #### Como usar:
199
+ 1. Selecione um tema de seu interesse
200
+ 2. Digite sua pergunta ou use um dos exemplos abaixo
201
+ 3. Clique em "Buscar Orientação" para receber o conselho bíblico
202
+ 4. Medite na resposta e nas referências fornecidas
203
  """)
204
 
205
  return demo