如何为RetrievalQA.from_chain_type添加内存?或者,如何向ConversationalRetrievalChain添加自定义提示符?
在过去的两周里,我一直在尝试制作一个聊天机器人,它可以在文档上聊天(所以不仅仅是一个语义搜索/问答,所以有记忆),而且还有一个自定义提示。我已经尝试了所有链的每一种组合,到目前为止,我得到的最接近的是ConversationalRetrievalChain,但没有自定义提示,和RetrievalQA.from_chain_type,但没有内存
1条答案
按热度按时间rsaldnfx1#
你有没有试过传入
chain_type_kwargs
(下面是源代码的截图,供快速参考)?文档并没有让你很容易地理解引擎盖下的东西,但是这里有一些东西可以实现你的目标。
您可以在此GitHub Link设置中找到该笔记本
然后定义自定义提示:
请注意输入变量使用了什么,特别是
'history'
和'question'
,因为在设置内存时需要匹配这些变量:现在可以调用
qa.run({"query": "who's the client's friend?"})
“客户的朋友是艾玛”
然后是
qa.run("and her pet's name is?")
“艾玛的宠物叫苏利文。”
要检查和验证内存/聊天记录:
qa.combine_documents_chain.memory
ConversationBufferMemory(chat_memory=ChatMessageHistory(messages=[HumanMessage(content=“谁是客户的朋友?“,additional_kwargs={}),AIMessage(content=“客户的朋友是Emma.",additional_kwargs={}),HumanMessage(content=“她的宠物的名字是?“,additional_kwargs={}),AIMessage(content=“Emma's pet's name is Sullivan.",additional_kwargs={})]),output_key=None,input_key='question',return_messages=False,human_prefix='Human',ai_prefix='AI',memory_key='history')