from langchain.chains import create_history_aware_retriever from langchain_core.prompts import MessagesPlaceholder
# 首先我们需要创建一个提示词,可以将其传递给 一个LLM 来生成这个搜索查询
prompt = ChatPromptTemplate.from_messages([ MessagesPlaceholder(variable_name="chat_history"), ("user", "{input}"), ("user", "Given the above conversation, generate a search query to look up in order to get information relevant to the conversation") ]) retriever_chain = create_history_aware_retriever(llm, retriever, prompt)
我们可以通过构建如下例子来验证一下,其中用户输入的内容为询问后续问题(“Tell me how”)。
1 2 3 4 5 6 7
from langchain_core.messages import HumanMessage, AIMessage
chat_history = [HumanMessage(content="Can LangSmith help test my LLM applications?"), AIMessage(content="Yes!")] retriever_chain.invoke({ "chat_history": chat_history, "input": "Tell me how" })
chat_history = [HumanMessage(content="Can LangSmith help test my LLM applications?"), AIMessage(content="Yes!")] retrieval_chain.invoke({ "chat_history": chat_history, "input": "Tell me how" })
from langchain_core.prompts import ChatPromptTemplate from langchain_core.prompts import MessagesPlaceholder from langchain_core.messages import HumanMessage, AIMessage from langchain.chains import create_retrieval_chain from langchain.chains import create_history_aware_retriever from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_openai import ChatOpenAI from langchain_openai import OpenAIEmbeddings
from langchain_community.document_loaders import WebBaseLoader from langchain_community.vectorstores import FAISS
from langchain_text_splitters import RecursiveCharacterTextSplitter
prompt = ChatPromptTemplate.from_messages([ MessagesPlaceholder(variable_name="chat_history"), ("user", "{input}"), ("user", "Given the above conversation, generate a search query to look up in order to get information relevant to the conversation") ]) retriever_chain = create_history_aware_retriever(llm, retriever, prompt)
# chat_history = [HumanMessage(content="Can LangSmith help test my LLM applications?"), AIMessage(content="Yes!")] # chat_msg = retriever_chain.invoke({ # "chat_history": chat_history, # "input": "Tell me how" # })
prompt = ChatPromptTemplate.from_messages([ ("system", "Answer the user's questions based on the below context:\n\n{context}"), MessagesPlaceholder(variable_name="chat_history"), ("user", "{input}"), ]) document_chain = create_stuff_documents_chain(llm, prompt)