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"]