Update app.py
Browse files
app.py
CHANGED
@@ -5,6 +5,7 @@ from langchain_community.document_loaders import DirectoryLoader, TextLoader
|
|
5 |
from langchain_community.vectorstores import FAISS
|
6 |
from langchain_community.embeddings import HuggingFaceEmbeddings
|
7 |
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
|
|
8 |
|
9 |
# Step 1: Extract ZIP
|
10 |
def extract_zip(zip_path, extract_to):
|
@@ -18,11 +19,28 @@ def extract_zip(zip_path, extract_to):
|
|
18 |
def load_knowledge_base(folder_path):
|
19 |
loader = DirectoryLoader(folder_path, glob="*.md", loader_cls=TextLoader)
|
20 |
docs = loader.load()
|
|
|
|
|
|
|
|
|
21 |
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
|
22 |
split_docs = splitter.split_documents(docs)
|
23 |
-
|
24 |
-
|
25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
|
27 |
# Streamlit UI
|
28 |
st.title("π Fitlytic Chatbot")
|
@@ -40,10 +58,13 @@ else:
|
|
40 |
st.stop()
|
41 |
|
42 |
# Step 5: User interaction
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
|
|
|
|
|
|
|
5 |
from langchain_community.vectorstores import FAISS
|
6 |
from langchain_community.embeddings import HuggingFaceEmbeddings
|
7 |
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
8 |
+
from transformers import AutoTokenizer
|
9 |
|
10 |
# Step 1: Extract ZIP
|
11 |
def extract_zip(zip_path, extract_to):
|
|
|
19 |
def load_knowledge_base(folder_path):
|
20 |
loader = DirectoryLoader(folder_path, glob="*.md", loader_cls=TextLoader)
|
21 |
docs = loader.load()
|
22 |
+
if not docs:
|
23 |
+
st.error("β No documents found in the knowledge base folder.")
|
24 |
+
return None
|
25 |
+
|
26 |
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
|
27 |
split_docs = splitter.split_documents(docs)
|
28 |
+
if not split_docs:
|
29 |
+
st.error("β Failed to split documents.")
|
30 |
+
return None
|
31 |
+
|
32 |
+
# Use AutoTokenizer to load the appropriate tokenizer for the model
|
33 |
+
model_name = "sentence-transformers/paraphrase-MiniLM-L6-v2"
|
34 |
+
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
35 |
+
|
36 |
+
embeddings = HuggingFaceEmbeddings(model_name=model_name, tokenizer=tokenizer)
|
37 |
+
|
38 |
+
try:
|
39 |
+
db = FAISS.from_documents(split_docs, embeddings)
|
40 |
+
return db
|
41 |
+
except Exception as e:
|
42 |
+
st.error(f"β Error creating FAISS index: {e}")
|
43 |
+
return None
|
44 |
|
45 |
# Streamlit UI
|
46 |
st.title("π Fitlytic Chatbot")
|
|
|
58 |
st.stop()
|
59 |
|
60 |
# Step 5: User interaction
|
61 |
+
if db:
|
62 |
+
query = st.text_input("Ask me anything about Fitlytic:")
|
63 |
+
if query:
|
64 |
+
results = db.similarity_search(query, k=1)
|
65 |
+
if results:
|
66 |
+
st.success(results[0].page_content)
|
67 |
+
else:
|
68 |
+
st.error("π Sorry, I couldn't find an answer. Try rephrasing it.")
|
69 |
+
else:
|
70 |
+
st.stop()
|