Finish-him commited on
Commit
35cb222
·
verified ·
1 Parent(s): d8ded3e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -10
app.py CHANGED
@@ -1,4 +1,5 @@
1
  import gradio as gr
 
2
  from langchain_community.document_loaders import PyPDFDirectoryLoader
3
  from langchain_text_splitters import RecursiveCharacterTextSplitter
4
  from langchain_community.embeddings import HuggingFaceEmbeddings
@@ -6,6 +7,10 @@ from langchain_community.vectorstores import FAISS
6
  from langchain.chains import RetrievalQA
7
  from langchain_community.llms import HuggingFaceHub
8
 
 
 
 
 
9
  # --- PASSO 1: CARREGAR OS DOCUMENTOS ---
10
  loader = PyPDFDirectoryLoader("data")
11
  documents = loader.load()
@@ -26,8 +31,6 @@ llm = HuggingFaceHub(
26
  model_kwargs={"temperature": 0.2, "max_new_tokens": 1024}
27
  )
28
 
29
- # A linha abaixo é a que estava causando o erro.
30
- # A classe 'RetrievalQA' está de fato no pacote principal 'langchain'.
31
  qa_chain = RetrievalQA.from_chain_type(
32
  llm=llm,
33
  chain_type="stuff",
@@ -38,28 +41,26 @@ qa_chain = RetrievalQA.from_chain_type(
38
  # --- PASSO 5: CRIAR A INTERFACE COM O GRADIO ---
39
  def process_query(query):
40
  try:
41
- # Usando o método .invoke(), que é a forma moderna de chamar a chain
42
  result = qa_chain.invoke(query)
43
- # Limpando a resposta para extrair apenas o texto principal
44
  answer = result.get('result', 'Não foi possível encontrar uma resposta.')
45
  return answer
46
  except Exception as e:
47
- print(e) # Imprime o erro nos logs para depuração
48
  return "Ocorreu um erro ao processar sua pergunta. Verifique os logs do Space."
49
 
50
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
51
  gr.Markdown("# 🤖 Assistente de Análise do Contrato DETRAN-RJ")
52
  gr.Markdown("Faça uma pergunta sobre os documentos do contrato e o assistente buscará a resposta nos arquivos.")
53
-
54
  with gr.Row():
55
  inp = gr.Textbox(label="Qual a sua pergunta?", placeholder="Ex: Qual o valor total do contrato?", scale=4)
56
  btn = gr.Button("Enviar", variant="primary", scale=1)
57
-
58
  out = gr.Markdown(label="Resposta")
59
-
60
  btn.click(fn=process_query, inputs=inp, outputs=out)
61
  inp.submit(fn=process_query, inputs=inp, outputs=out)
62
-
63
  gr.Examples(
64
  examples=[
65
  "Qual o objeto do contrato?",
@@ -71,4 +72,5 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
71
  inputs=inp
72
  )
73
 
74
- demo.launch()
 
 
1
  import gradio as gr
2
+ import os
3
  from langchain_community.document_loaders import PyPDFDirectoryLoader
4
  from langchain_text_splitters import RecursiveCharacterTextSplitter
5
  from langchain_community.embeddings import HuggingFaceEmbeddings
 
7
  from langchain.chains import RetrievalQA
8
  from langchain_community.llms import HuggingFaceHub
9
 
10
+ # --- PASSO 0: VERIFICAR E CRIAR A PASTA 'data' ---
11
+ if not os.path.exists("data"):
12
+ os.makedirs("data")
13
+
14
  # --- PASSO 1: CARREGAR OS DOCUMENTOS ---
15
  loader = PyPDFDirectoryLoader("data")
16
  documents = loader.load()
 
31
  model_kwargs={"temperature": 0.2, "max_new_tokens": 1024}
32
  )
33
 
 
 
34
  qa_chain = RetrievalQA.from_chain_type(
35
  llm=llm,
36
  chain_type="stuff",
 
41
  # --- PASSO 5: CRIAR A INTERFACE COM O GRADIO ---
42
  def process_query(query):
43
  try:
 
44
  result = qa_chain.invoke(query)
 
45
  answer = result.get('result', 'Não foi possível encontrar uma resposta.')
46
  return answer
47
  except Exception as e:
48
+ print(e)
49
  return "Ocorreu um erro ao processar sua pergunta. Verifique os logs do Space."
50
 
51
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
52
  gr.Markdown("# 🤖 Assistente de Análise do Contrato DETRAN-RJ")
53
  gr.Markdown("Faça uma pergunta sobre os documentos do contrato e o assistente buscará a resposta nos arquivos.")
54
+
55
  with gr.Row():
56
  inp = gr.Textbox(label="Qual a sua pergunta?", placeholder="Ex: Qual o valor total do contrato?", scale=4)
57
  btn = gr.Button("Enviar", variant="primary", scale=1)
58
+
59
  out = gr.Markdown(label="Resposta")
60
+
61
  btn.click(fn=process_query, inputs=inp, outputs=out)
62
  inp.submit(fn=process_query, inputs=inp, outputs=out)
63
+
64
  gr.Examples(
65
  examples=[
66
  "Qual o objeto do contrato?",
 
72
  inputs=inp
73
  )
74
 
75
+ demo.launch()
76
+ _#