Finish-him commited on
Commit
97201c8
·
verified ·
1 Parent(s): c62891d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -14
app.py CHANGED
@@ -1,11 +1,12 @@
1
- _#
2
  import gradio as gr
3
  import os
4
  from langchain_community.document_loaders import PyPDFDirectoryLoader
5
  from langchain_text_splitters import RecursiveCharacterTextSplitter
6
  from langchain_community.embeddings import HuggingFaceEmbeddings
7
  from langchain_community.vectorstores import FAISS
8
- from langchain.chains import RetrievalQA
 
 
9
  from langchain_community.llms import HuggingFaceHub
10
 
11
  # --- PASSO 0: VERIFICAR E CRIAR A PASTA 'data' ---
@@ -25,29 +26,41 @@ model_name = "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2"
25
  embeddings = HuggingFaceEmbeddings(model_name=model_name)
26
  db = FAISS.from_documents(docs, embeddings)
27
 
28
- # --- PASSO 4: CONFIGURAR O MODELO DE LINGUAGEM (LLM) E A CADEIA DE BUSCA ---
29
  repo_id = "mistralai/Mixtral-8x7B-Instruct-v0.1"
30
  llm = HuggingFaceHub(
31
  repo_id=repo_id,
32
  model_kwargs={"temperature": 0.2, "max_new_tokens": 1024}
33
  )
34
 
35
- qa_chain = RetrievalQA.from_chain_type(
36
- llm=llm,
37
- chain_type="stuff",
38
- retriever=db.as_retriever(search_kwargs={"k": 3}),
39
- return_source_documents=False
 
40
  )
41
 
42
- # --- PASSO 5: CRIAR A INTERFACE COM O GRADIO ---
 
 
 
 
 
 
 
 
 
 
 
43
  def process_query(query):
44
  try:
45
- result = qa_chain.invoke(query)
46
- answer = result.get('result', 'Não foi possível encontrar uma resposta.')
47
  return answer
48
  except Exception as e:
49
- print(e)
50
- return "Ocorreu um erro ao processar sua pergunta. Verifique os logs do Space."
51
 
52
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
53
  gr.Markdown("# 🤖 Assistente de Análise do Contrato DETRAN-RJ")
@@ -74,4 +87,4 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
74
  )
75
 
76
  demo.launch()
77
- _#
 
 
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
6
  from langchain_community.vectorstores import FAISS
7
+ from langchain.chains import create_retrieval_chain
8
+ from langchain.chains.combine_documents import create_stuff_documents_chain
9
+ from langchain_core.prompts import ChatPromptTemplate
10
  from langchain_community.llms import HuggingFaceHub
11
 
12
  # --- PASSO 0: VERIFICAR E CRIAR A PASTA 'data' ---
 
26
  embeddings = HuggingFaceEmbeddings(model_name=model_name)
27
  db = FAISS.from_documents(docs, embeddings)
28
 
29
+ # --- PASSO 4: CONFIGURAR O MODELO DE LINGUAGEM (LLM) ---
30
  repo_id = "mistralai/Mixtral-8x7B-Instruct-v0.1"
31
  llm = HuggingFaceHub(
32
  repo_id=repo_id,
33
  model_kwargs={"temperature": 0.2, "max_new_tokens": 1024}
34
  )
35
 
36
+ # --- PASSO 5: CRIAR A CADEIA DE BUSCA (NOVA API) ---
37
+ system_prompt = (
38
+ "Você é um assistente especializado em análise de contratos do DETRAN-RJ. "
39
+ "Use o contexto fornecido para responder à pergunta de forma precisa e concisa. "
40
+ "Se você não souber a resposta, diga que não sabe. "
41
+ "Contexto: {context}"
42
  )
43
 
44
+ prompt = ChatPromptTemplate.from_messages([
45
+ ("system", system_prompt),
46
+ ("human", "{input}"),
47
+ ])
48
+
49
+ question_answer_chain = create_stuff_documents_chain(llm, prompt)
50
+ qa_chain = create_retrieval_chain(
51
+ db.as_retriever(search_kwargs={"k": 3}),
52
+ question_answer_chain
53
+ )
54
+
55
+ # --- PASSO 6: CRIAR A INTERFACE COM O GRADIO ---
56
  def process_query(query):
57
  try:
58
+ result = qa_chain.invoke({"input": query})
59
+ answer = result.get('answer', 'Não foi possível encontrar uma resposta.')
60
  return answer
61
  except Exception as e:
62
+ print(f"Erro: {e}")
63
+ return f"Ocorreu um erro ao processar sua pergunta: {str(e)}"
64
 
65
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
66
  gr.Markdown("# 🤖 Assistente de Análise do Contrato DETRAN-RJ")
 
87
  )
88
 
89
  demo.launch()
90
+