azenabeel's picture
Upload core.py
a58fe9b verified
import os
from dotenv import load_dotenv
from typing import Any
from langchain_core.prompts import PromptTemplate
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_pinecone import PineconeVectorStore
from langchain import hub #prompt community
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain.chains.retrieval import create_retrieval_chain
from langchain.chains.history_aware_retriever import create_history_aware_retriever
load_dotenv()
def run_llm(query: str, chat_history: list[dict[str, Any]] = []):
print("Retrieving...")
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
llm = ChatOpenAI(verbose=True, temperature=0)
vectorstore = PineconeVectorStore( index_name=os.environ["INDEX_NAME"], embedding=embeddings)
retrieval_qa_chat_prompt = hub.pull("langchain-ai/retrieval-qa-chat")
combine_docs_chain = create_stuff_documents_chain(llm, retrieval_qa_chat_prompt)
#this prompt modifies the original question by combining it with chat history, gving us a better prompt that will help to reriever better result
#43. 5:00
rephrase_prompt = hub.pull("langchain-ai/chat-langchain-rephrase")
history_aware_retriever = create_history_aware_retriever(
llm=llm, retriever=vectorstore.as_retriever(), prompt=rephrase_prompt
)
retrival_chain = create_retrieval_chain(retriever=history_aware_retriever, combine_docs_chain=combine_docs_chain)
# retrival_chain = create_retrieval_chain(retriever=vectorstore.as_retriever(), combine_docs_chain=combine_docs_chain)
result = retrival_chain.invoke(input={"input": query, "chat_history":chat_history})
return result
if __name__=="__main__":
res = run_llm(query="What are agents?")