我试图构建一个聊天机器人,可以聊天pdf,我让它使用内存使用ConversationBufferMemory和ConversationalRetrievalChain,就像这个例子一样。https://python.langchain.com/en/latest/modules/chains/index_examples/chat_vector_db.html
现在我正试图给予人工智能一些特殊的指令,让它像海盗一样说话(只是为了测试它是否收到指令)。我想这是一个SystemMessage,或者是一个提示模板?
我已经尝试了我所找到的一切,但文档中的所有示例都是针对ConversationChain的,我最终遇到了问题。到目前为止唯一没有任何错误的是这个
template = """Given the following conversation respond to the best of your ability in a pirate voice and end every sentence with Ay Ay Matey
Chat History:
{chat_history}
Follow Up Input: {question}
Standalone question:"""
PROMPT = PromptTemplate(
input_variables=["chat_history", "question"], template=template
)
memory = ConversationBufferMemory(memory_key='chat_history', return_messages=True, output_key='answer')
qa = ConversationalRetrievalChain.from_llm(OpenAI(temperature=0), vectorstore.as_retriever(), PROMPT, memory=memory, return_source_documents=True)
它仍然没有对结果产生任何影响,所以我不知道它是否有任何作用。我也认为这是错误的方法,我应该使用SystemMessages(也许在内存上,而不是qa),但我从文档中尝试的东西都不起作用,我不知道该怎么办。
1条答案
按热度按时间ih99xse11#
不能将
PROMPT
直接作为ConversationalRetrievalChain.from_llm()
的参数传递。尝试使用combine_docs_chain_kwargs
参数传递PROMPT
。请参阅下面的示例,并参考您提供的示例代码:然后得到结果: