Spaces:
Sleeping
Sleeping
from meal_loader import documents | |
from langchain_community.embeddings import HuggingFaceEmbeddings | |
from langchain_community.vectorstores import FAISS | |
from langchain_community.llms import HuggingFaceHub | |
from langchain.chains import ConversationalRetrievalChain | |
from langchain.memory import ConversationBufferMemory | |
embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2") | |
db = FAISS.from_documents(documents, embeddings) | |
retriever = db.as_retriever(search_kwargs={"k": 3}) | |
llm = HuggingFaceHub(repo_id="mistralai/Mistral-7B-Instruct-v0.1", model_kwargs={"temperature": 0.3, "max_new_tokens": 500}) | |
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True) | |
qa_chain = ConversationalRetrievalChain.from_llm(llm=llm, retriever=retriever, memory=memory) | |
def generate_response(message, history, preferences): | |
prompt = f""" | |
You are a meal plan assistant. The user has the following preferences: | |
- Diet: {', '.join(preferences['diet'])} | |
- Goal: {preferences['goal']} | |
- Duration: {preferences['weeks']} week(s) | |
User query: {message} | |
""" | |
result = qa_chain({"question": prompt}) | |
return result["answer"] | |