trry / app.py
random2222's picture
Update app.py
5a6f9e0 verified
raw
history blame
1.62 kB
import os
import gradio as gr
from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_community.document_loaders import PyMuPDFLoader
from langchain_text_splitters import CharacterTextSplitter
from langchain.chains import RetrievalQA
from langchain_community.llms import HuggingFaceEndpoint # Updated import
from huggingface_hub import login
# 1. Authentication
login(token=os.environ.get('HF_TOKEN'))
# 2. PDF Processing
def create_qa_system():
if not os.path.exists("file.pdf"):
raise gr.Error("❗ Upload file.pdf in Files tab")
loader = PyMuPDFLoader("file.pdf")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50)
texts = text_splitter.split_documents(documents)
embeddings = HuggingFaceEmbeddings(
model_name="sentence-transformers/all-MiniLM-L6-v2"
)
db = FAISS.from_documents(texts, embeddings)
# 3. Updated LLM initialization
llm = HuggingFaceEndpoint(
repo_id="google/flan-t5-base",
max_length=256,
temperature=0.2,
huggingfacehub_api_token=os.environ.get('HF_TOKEN') # Explicit token passing
)
return RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=db.as_retriever(search_kwargs={"k": 2})
)
# 4. Initialize system
qa = create_qa_system()
# 5. Chat interface
def chat_response(message, history):
response = qa({"query": message})
return response["result"]
gr.ChatInterface(chat_response).launch()