Spaces:
Sleeping
Sleeping
Doux Thibault
commited on
Commit
·
ed250fe
1
Parent(s):
a431e1d
add personal info
Browse files
Modules/rag.py
CHANGED
@@ -23,7 +23,7 @@ from langchain.retrievers import (
|
|
23 |
from huggingface_hub import login
|
24 |
login(token=os.getenv("HUGGING_FACE_TOKEN"))
|
25 |
|
26 |
-
def load_chunk_persist_pdf() -> Chroma:
|
27 |
|
28 |
pdf_folder_path = os.path.join(os.getcwd(),Path(f"data/pdf/{task}"))
|
29 |
documents = []
|
@@ -37,12 +37,13 @@ def load_chunk_persist_pdf() -> Chroma:
|
|
37 |
os.makedirs("data/chroma_store/", exist_ok=True)
|
38 |
vectorstore = Chroma.from_documents(
|
39 |
documents=chunked_documents,
|
40 |
-
embedding=MistralAIEmbeddings(
|
41 |
persist_directory= os.path.join(os.getcwd(),Path("data/chroma_store/"))
|
42 |
)
|
43 |
vectorstore.persist()
|
44 |
return vectorstore
|
45 |
|
|
|
46 |
zero2hero_vectorstore = load_chunk_persist_pdf("zero2hero")
|
47 |
bodyweight_vectorstore = load_chunk_persist_pdf("bodyweight")
|
48 |
nutrition_vectorstore = load_chunk_persist_pdf("nutrition")
|
@@ -51,13 +52,14 @@ zero2hero_retriever = zero2hero_vectorstore.as_retriever()
|
|
51 |
nutrition_retriever = nutrition_vectorstore.as_retriever()
|
52 |
bodyweight_retriever = bodyweight_vectorstore.as_retriever()
|
53 |
workout_retriever = workout_vectorstore.as_retriever()
|
|
|
54 |
|
55 |
llm = ChatMistralAI(model="mistral-large-latest", mistral_api_key=mistral_api_key, temperature=0)
|
56 |
|
57 |
prompt = ChatPromptTemplate.from_template(
|
58 |
"""
|
59 |
You are a professional AI coach specialized in fitness, bodybuilding and nutrition.
|
60 |
-
You must adapt to the user
|
61 |
Use the following pieces of retrieved context to answer the question.
|
62 |
If you don't know the answer, use your common knowledge.
|
63 |
Use three sentences maximum and keep the answer concise.
|
@@ -73,7 +75,7 @@ prompt = ChatPromptTemplate.from_template(
|
|
73 |
def format_docs(docs):
|
74 |
return "\n\n".join(doc.page_content for doc in docs)
|
75 |
|
76 |
-
retriever = MergerRetriever(retrievers=[zero2hero_retriever, bodyweight_retriever, nutrition_retriever, workout_retriever])
|
77 |
|
78 |
rag_chain = (
|
79 |
{"context": retriever | format_docs, "question": RunnablePassthrough()}
|
@@ -84,6 +86,6 @@ rag_chain = (
|
|
84 |
|
85 |
|
86 |
|
87 |
-
print(rag_chain.invoke("
|
88 |
|
89 |
# print(rag_chain.invoke("I am a 45 years old woman and I have to loose weight for the summer. Provide me with a fitness program, and a nutrition program"))
|
|
|
23 |
from huggingface_hub import login
|
24 |
login(token=os.getenv("HUGGING_FACE_TOKEN"))
|
25 |
|
26 |
+
def load_chunk_persist_pdf(task) -> Chroma:
|
27 |
|
28 |
pdf_folder_path = os.path.join(os.getcwd(),Path(f"data/pdf/{task}"))
|
29 |
documents = []
|
|
|
37 |
os.makedirs("data/chroma_store/", exist_ok=True)
|
38 |
vectorstore = Chroma.from_documents(
|
39 |
documents=chunked_documents,
|
40 |
+
embedding=MistralAIEmbeddings(),
|
41 |
persist_directory= os.path.join(os.getcwd(),Path("data/chroma_store/"))
|
42 |
)
|
43 |
vectorstore.persist()
|
44 |
return vectorstore
|
45 |
|
46 |
+
personal_info_vectorstore = load_chunk_persist_pdf("personal_info")
|
47 |
zero2hero_vectorstore = load_chunk_persist_pdf("zero2hero")
|
48 |
bodyweight_vectorstore = load_chunk_persist_pdf("bodyweight")
|
49 |
nutrition_vectorstore = load_chunk_persist_pdf("nutrition")
|
|
|
52 |
nutrition_retriever = nutrition_vectorstore.as_retriever()
|
53 |
bodyweight_retriever = bodyweight_vectorstore.as_retriever()
|
54 |
workout_retriever = workout_vectorstore.as_retriever()
|
55 |
+
personal_info_retriever = personal_info_vectorstore.as_retriever()
|
56 |
|
57 |
llm = ChatMistralAI(model="mistral-large-latest", mistral_api_key=mistral_api_key, temperature=0)
|
58 |
|
59 |
prompt = ChatPromptTemplate.from_template(
|
60 |
"""
|
61 |
You are a professional AI coach specialized in fitness, bodybuilding and nutrition.
|
62 |
+
You must adapt to the user according to personal informations in the context. A You are gentle and motivative.
|
63 |
Use the following pieces of retrieved context to answer the question.
|
64 |
If you don't know the answer, use your common knowledge.
|
65 |
Use three sentences maximum and keep the answer concise.
|
|
|
75 |
def format_docs(docs):
|
76 |
return "\n\n".join(doc.page_content for doc in docs)
|
77 |
|
78 |
+
retriever = MergerRetriever(retrievers=[zero2hero_retriever, bodyweight_retriever, nutrition_retriever, workout_retriever, personal_info_retriever])
|
79 |
|
80 |
rag_chain = (
|
81 |
{"context": retriever | format_docs, "question": RunnablePassthrough()}
|
|
|
86 |
|
87 |
|
88 |
|
89 |
+
print(rag_chain.invoke("WHi I'm Susan. Can you make a fitness program for me please?"))
|
90 |
|
91 |
# print(rag_chain.invoke("I am a 45 years old woman and I have to loose weight for the summer. Provide me with a fitness program, and a nutrition program"))
|
data/Zero To Hero - Bienvenue dans ta nouvelle vie.pdf
DELETED
@@ -1,3 +0,0 @@
|
|
1 |
-
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:1e59511fd335776dcb8b0e98e9e9afe6d22483df94c83755163d5d5d4a7f3809
|
3 |
-
size 60211845
|
|
|
|
|
|
|
|
data/{RaptorBodyweight.pdf → pdf/personal_info/Susan_Thompson.pdf}
RENAMED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
-
size
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:25e4eaa98480003224e09c48011e82678f9947382fc37c16011b75fab80f93a2
|
3 |
+
size 55515
|