DurgaDeepak commited on
Commit
3e6f99d
·
verified ·
1 Parent(s): ff93efc

Rename agent.py to knowledge_base.py

Browse files
Files changed (2) hide show
  1. agent.py +0 -26
  2. knowledge_base.py +36 -0
agent.py DELETED
@@ -1,26 +0,0 @@
1
- from meal_loader import documents
2
- from langchain_community.embeddings import HuggingFaceEmbeddings
3
- from langchain_community.vectorstores import FAISS
4
- from langchain_community.llms import HuggingFaceHub
5
- from langchain.chains import ConversationalRetrievalChain
6
- from langchain.memory import ConversationBufferMemory
7
-
8
- embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
9
- db = FAISS.from_documents(documents, embeddings)
10
- retriever = db.as_retriever(search_kwargs={"k": 3})
11
- llm = HuggingFaceHub(repo_id="mistralai/Mistral-7B-Instruct-v0.1", model_kwargs={"temperature": 0.3, "max_new_tokens": 500})
12
- memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
13
-
14
- qa_chain = ConversationalRetrievalChain.from_llm(llm=llm, retriever=retriever, memory=memory)
15
-
16
- def generate_response(message, history, preferences):
17
- prompt = f"""
18
- You are a meal plan assistant. The user has the following preferences:
19
- - Diet: {', '.join(preferences['diet'])}
20
- - Goal: {preferences['goal']}
21
- - Duration: {preferences['weeks']} week(s)
22
-
23
- User query: {message}
24
- """
25
- result = qa_chain({"question": prompt})
26
- return result["answer"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
knowledge_base.py ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # knowledge_base.py
2
+ import os
3
+ import fitz # PyMuPDF
4
+ from langchain.text_splitter import RecursiveCharacterTextSplitter
5
+ from langchain.vectorstores import Chroma
6
+ from langchain.embeddings import HuggingFaceEmbeddings
7
+ from langchain.docstore.document import Document
8
+
9
+ CHROMA_DIR = "chroma"
10
+ MODEL_NAME = "sentence-transformers/all-MiniLM-L6-v2"
11
+
12
+
13
+ def load_and_chunk_pdfs(folder_path):
14
+ documents = []
15
+ for filename in os.listdir(folder_path):
16
+ if filename.endswith(".pdf"):
17
+ path = os.path.join(folder_path, filename)
18
+ doc = fitz.open(path)
19
+ text = "\n".join(page.get_text() for page in doc)
20
+ documents.append(Document(page_content=text, metadata={"source": filename}))
21
+
22
+ splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
23
+ chunks = splitter.split_documents(documents)
24
+ return chunks
25
+
26
+
27
+ def create_vectorstore(chunks):
28
+ embeddings = HuggingFaceEmbeddings(model_name=MODEL_NAME)
29
+ db = Chroma.from_documents(chunks, embeddings, persist_directory=CHROMA_DIR)
30
+ db.persist()
31
+ return db
32
+
33
+
34
+ def load_vectorstore():
35
+ embeddings = HuggingFaceEmbeddings(model_name=MODEL_NAME)
36
+ return Chroma(persist_directory=CHROMA_DIR, embedding_function=embeddings)