teixeiramg commited on
Commit
bbcd85b
·
verified ·
1 Parent(s): 71c21c0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -27
app.py CHANGED
@@ -1,7 +1,7 @@
1
  import gradio as gr
2
  from transformers import AutoModelForCausalLM, AutoTokenizer
3
  import fitz # PyMuPDF
4
- import os
5
 
6
  # Carregar o tokenizer e o modelo
7
  tokenizer = AutoTokenizer.from_pretrained("Locutusque/gpt2-xl-conversational")
@@ -12,40 +12,56 @@ pdf_content = ""
12
 
13
  # Função para ler o PDF
14
  def read_pdf(file_path):
15
- doc = fitz.open(file_path)
16
- text = ""
17
- for page_num in range(len(doc)):
18
- page = doc.load_page(page_num)
19
- text += page.get_text()
20
- return text
 
 
 
 
 
21
 
22
  # Função para carregar o PDF e armazenar o conteúdo
23
  def load_pdf(pdf_file):
24
  global pdf_content
25
- pdf_path = pdf_file.name # Acessar o caminho do arquivo carregado
26
- pdf_content = read_pdf(pdf_path)
27
- if pdf_content:
28
- return "PDF carregado com sucesso!"
29
- else:
30
- return "Falha ao carregar o PDF."
 
 
 
 
 
31
 
32
  # Função para responder perguntas com base no conteúdo do PDF
33
  def answer_question(question, max_length=200, temperature=0.7, top_k=50, top_p=0.95):
34
  global pdf_content
35
- if not pdf_content:
36
- return "Por favor, carregue um PDF primeiro.", ""
37
- prompt = f"Conteúdo do PDF: {pdf_content}\nPergunta: {question}\nResposta em português:"
38
- inputs = tokenizer(prompt, return_tensors="pt")
39
- outputs = model.generate(
40
- inputs.input_ids,
41
- max_length=max_length,
42
- temperature=temperature,
43
- top_k=top_k,
44
- top_p=top_p,
45
- num_return_sequences=1
46
- )
47
- response = tokenizer.decode(outputs[0], skip_special_tokens=True)
48
- return response, prompt
 
 
 
 
 
 
49
 
50
  # Interface do Gradio para carregar PDF e fazer perguntas
51
  pdf_loader = gr.Interface(
 
1
  import gradio as gr
2
  from transformers import AutoModelForCausalLM, AutoTokenizer
3
  import fitz # PyMuPDF
4
+ import traceback
5
 
6
  # Carregar o tokenizer e o modelo
7
  tokenizer = AutoTokenizer.from_pretrained("Locutusque/gpt2-xl-conversational")
 
12
 
13
  # Função para ler o PDF
14
  def read_pdf(file_path):
15
+ try:
16
+ doc = fitz.open(file_path)
17
+ text = ""
18
+ for page_num in range(len(doc)):
19
+ page = doc.load_page(page_num)
20
+ text += page.get_text()
21
+ return text
22
+ except Exception as e:
23
+ print(f"Erro ao ler o PDF: {e}")
24
+ print(traceback.format_exc())
25
+ return ""
26
 
27
  # Função para carregar o PDF e armazenar o conteúdo
28
  def load_pdf(pdf_file):
29
  global pdf_content
30
+ try:
31
+ pdf_path = pdf_file.name # Acessar o caminho do arquivo carregado
32
+ pdf_content = read_pdf(pdf_path)
33
+ if pdf_content:
34
+ return "PDF carregado com sucesso!"
35
+ else:
36
+ return "Falha ao carregar o PDF."
37
+ except Exception as e:
38
+ print(f"Erro ao carregar o PDF: {e}")
39
+ print(traceback.format_exc())
40
+ return "Erro ao carregar o PDF."
41
 
42
  # Função para responder perguntas com base no conteúdo do PDF
43
  def answer_question(question, max_length=200, temperature=0.7, top_k=50, top_p=0.95):
44
  global pdf_content
45
+ try:
46
+ if not pdf_content:
47
+ return "Por favor, carregue um PDF primeiro.", ""
48
+ prompt = f"Conteúdo do PDF: {pdf_content}\nPergunta: {question}\nResposta em português:"
49
+ print(f"Prompt: {prompt}") # Adicionar log para depuração
50
+ inputs = tokenizer(prompt, return_tensors="pt")
51
+ outputs = model.generate(
52
+ inputs.input_ids,
53
+ max_length=max_length,
54
+ temperature=temperature,
55
+ top_k=top_k,
56
+ top_p=top_p,
57
+ num_return_sequences=1
58
+ )
59
+ response = tokenizer.decode(outputs[0], skip_special_tokens=True)
60
+ return response, prompt
61
+ except Exception as e:
62
+ print(f"Erro ao gerar resposta: {e}")
63
+ print(traceback.format_exc())
64
+ return "Erro ao gerar resposta.", prompt
65
 
66
  # Interface do Gradio para carregar PDF e fazer perguntas
67
  pdf_loader = gr.Interface(