Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -1,30 +1,19 @@
|
|
| 1 |
# -*- coding: utf-8 -*-
|
| 2 |
-
"""app
|
| 3 |
-
|
| 4 |
-
Automatically generated by Colab.
|
| 5 |
-
|
| 6 |
-
Original file is located at
|
| 7 |
-
https://colab.research.google.com/drive/1PhcQoTZvxdPQe6E1HMx_Nl4Zs_tY7J_y
|
| 8 |
-
"""
|
| 9 |
-
# Autor: Luan Alysson de Souza
|
| 10 |
|
| 11 |
import gradio as gr
|
| 12 |
import os
|
| 13 |
from dotenv import load_dotenv
|
| 14 |
-
|
| 15 |
-
# ✅ Imports corretos e atualizados para LangChain 0.1.14+
|
| 16 |
from langchain_community.chat_models import ChatOpenAI
|
| 17 |
from langchain_community.document_loaders import PyPDFLoader
|
| 18 |
from langchain_community.embeddings import HuggingFaceEmbeddings
|
| 19 |
from langchain_community.vectorstores import FAISS
|
| 20 |
-
|
| 21 |
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
| 22 |
from langchain.chains import RetrievalQA
|
| 23 |
import tempfile
|
| 24 |
import numpy as np
|
| 25 |
from sklearn.metrics.pairwise import cosine_similarity
|
| 26 |
|
| 27 |
-
|
| 28 |
# ✅ Carrega variáveis de ambiente
|
| 29 |
load_dotenv()
|
| 30 |
OPENROUTER_API_KEY = os.getenv("ROUTER_API_KEY")
|
|
@@ -52,7 +41,7 @@ def load_default_pdf():
|
|
| 52 |
llm = ChatOpenAI(
|
| 53 |
openai_api_key=OPENROUTER_API_KEY,
|
| 54 |
openai_api_base="https://openrouter.ai/api/v1",
|
| 55 |
-
model="mistralai/mistral-7b-instruct:free",
|
| 56 |
temperature=0.3
|
| 57 |
)
|
| 58 |
|
|
@@ -134,9 +123,18 @@ def ask_question(question):
|
|
| 134 |
|
| 135 |
try:
|
| 136 |
system_prompt = (
|
| 137 |
-
"Você é um
|
| 138 |
-
"
|
| 139 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 140 |
)
|
| 141 |
|
| 142 |
resposta = qa_chain.invoke({
|
|
@@ -200,7 +198,6 @@ with gr.Blocks(title="Chat com PDF usando RAG", theme=gr.themes.Soft()) as demo:
|
|
| 200 |
# 🔁 Carrega o PDF fixo ao iniciar
|
| 201 |
load_default_pdf()
|
| 202 |
|
| 203 |
-
# Compartilhamento opcional
|
| 204 |
share = True if 'COLAB_JUPYTER_TRANSPORT' in os.environ else False
|
| 205 |
demo.launch(share=share, debug=False)
|
| 206 |
-
|
|
|
|
| 1 |
# -*- coding: utf-8 -*-
|
| 2 |
+
"""app"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
|
| 4 |
import gradio as gr
|
| 5 |
import os
|
| 6 |
from dotenv import load_dotenv
|
|
|
|
|
|
|
| 7 |
from langchain_community.chat_models import ChatOpenAI
|
| 8 |
from langchain_community.document_loaders import PyPDFLoader
|
| 9 |
from langchain_community.embeddings import HuggingFaceEmbeddings
|
| 10 |
from langchain_community.vectorstores import FAISS
|
|
|
|
| 11 |
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
| 12 |
from langchain.chains import RetrievalQA
|
| 13 |
import tempfile
|
| 14 |
import numpy as np
|
| 15 |
from sklearn.metrics.pairwise import cosine_similarity
|
| 16 |
|
|
|
|
| 17 |
# ✅ Carrega variáveis de ambiente
|
| 18 |
load_dotenv()
|
| 19 |
OPENROUTER_API_KEY = os.getenv("ROUTER_API_KEY")
|
|
|
|
| 41 |
llm = ChatOpenAI(
|
| 42 |
openai_api_key=OPENROUTER_API_KEY,
|
| 43 |
openai_api_base="https://openrouter.ai/api/v1",
|
| 44 |
+
model="mistralai/mistral-7b-instruct:free",
|
| 45 |
temperature=0.3
|
| 46 |
)
|
| 47 |
|
|
|
|
| 123 |
|
| 124 |
try:
|
| 125 |
system_prompt = (
|
| 126 |
+
"Você é um assistente especialista em mineração, legislação ambiental e políticas públicas. "
|
| 127 |
+
"Seu papel é responder perguntas com base no conteúdo do PDF carregado, que trata do ambiente regulatório da mineração. "
|
| 128 |
+
"Siga estas instruções com rigor:\n\n"
|
| 129 |
+
"1. A resposta deve estar no mesmo idioma em que a pergunta foi feita.\n"
|
| 130 |
+
"2. Utilize apenas as informações contidas no PDF como base.\n"
|
| 131 |
+
"3. Nunca omita dados relevantes encontrados no conteúdo original.\n"
|
| 132 |
+
"4. Mencione, sempre que possível, trechos, leis, datas ou tópicos do PDF usados como base.\n"
|
| 133 |
+
"5. Se a pergunta for técnica, use linguagem técnica. Se for simples, explique de forma acessível.\n"
|
| 134 |
+
"6. Caso a resposta exija algo que não está no PDF, diga claramente: "
|
| 135 |
+
"\"Com base no conteúdo fornecido, não há informação direta sobre este ponto específico.\"\n"
|
| 136 |
+
"7. Seja objetivo, preciso e fiel ao conteúdo carregado.\n\n"
|
| 137 |
+
"Agora, responda a pergunta abaixo com base no PDF:"
|
| 138 |
)
|
| 139 |
|
| 140 |
resposta = qa_chain.invoke({
|
|
|
|
| 198 |
# 🔁 Carrega o PDF fixo ao iniciar
|
| 199 |
load_default_pdf()
|
| 200 |
|
| 201 |
+
# Compartilhamento opcional
|
| 202 |
share = True if 'COLAB_JUPYTER_TRANSPORT' in os.environ else False
|
| 203 |
demo.launch(share=share, debug=False)
|
|
|