現(xiàn)在讓我們看一下使用稍微復(fù)雜的內(nèi)存類型 - ConversationSummaryMemory
。這種類型的記憶會(huì)隨著時(shí)間的推移創(chuàng)建對(duì)話的摘要。這對(duì)于隨著時(shí)間的推移壓縮對(duì)話中的信息非常有用。對(duì)話摘要內(nèi)存對(duì)發(fā)生的對(duì)話進(jìn)行總結(jié),并將當(dāng)前摘要存儲(chǔ)在內(nèi)存中。然后可以使用該內(nèi)存將迄今為止的對(duì)話摘要注入提示/鏈中。此內(nèi)存對(duì)于較長(zhǎng)的對(duì)話最有用,因?yàn)樵谔崾局兄鹱直A暨^(guò)去的消息歷史記錄會(huì)占用太多令牌。
我們首先來(lái)探討一下這種存儲(chǔ)器的基本功能。
示例代碼,
from langchain.memory import ConversationSummaryMemory, ChatMessageHistory
from langchain.llms import OpenAI
memory = ConversationSummaryMemory(llm=OpenAI(temperature=0))
memory.save_context({"input": "hi"}, {"output": "whats up"})
memory.load_memory_variables({})
輸出結(jié)果,
{'history': '\nThe human greets the AI, to which the AI responds.'}
我們還可以獲取歷史記錄作為消息列表(如果您將其與聊天模型一起使用,這非常有用)。
memory = ConversationSummaryMemory(llm=OpenAI(temperature=0), return_messages=True)
memory.save_context({"input": "hi"}, {"output": "whats up"})
memory.load_memory_variables({})
輸出結(jié)果,
{'history': [SystemMessage(content='\nThe human greets the AI, to which the AI responds.', additional_kwargs={})]}
我們也可以直接使用 predict_new_summary 方法。
messages = memory.chat_memory.messages
previous_summary = ""
memory.predict_new_summary(messages, previous_summary)
輸出結(jié)果,
'\nThe human greets the AI, to which the AI responds.'
Initializing with messages
如果您有此類之外的消息,您可以使用 ChatMessageHistory 輕松初始化該類。加載期間,將計(jì)算摘要。
示例代碼,
history = ChatMessageHistory()
history.add_user_message("hi")
history.add_ai_message("hi there!")
memory = ConversationSummaryMemory.from_messages(llm=OpenAI(temperature=0), chat_memory=history, return_messages=True)
memory.buffer
輸出結(jié)果,
'\nThe human greets the AI, to which the AI responds with a friendly greeting.'
Using in a chain
讓我們看一下在鏈中使用它的示例,再次設(shè)置 verbose=True
以便我們可以看到提示。
示例代碼,
from langchain.llms import OpenAI
from langchain.chains import ConversationChain
llm = OpenAI(temperature=0)
conversation_with_summary = ConversationChain(
llm=llm,
memory=ConversationSummaryMemory(llm=OpenAI()),
verbose=True
)
conversation_with_summary.predict(input="Hi, what's up?")
輸出結(jié)果,
> Entering new ConversationChain chain...
Prompt after formatting:
The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.
Current conversation:
Human: Hi, what's up?
AI:
> Finished chain.
" Hi there! I'm doing great. I'm currently helping a customer with a technical issue. How about you?"
示例代碼,
conversation_with_summary.predict(input="Tell me more about it!")
輸出結(jié)果,
> Entering new ConversationChain chain...
Prompt after formatting:
The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.
Current conversation:
The human greeted the AI and asked how it was doing. The AI replied that it was doing great and was currently helping a customer with a technical issue.
Human: Tell me more about it!
AI:
> Finished chain.
" Sure! The customer is having trouble with their computer not connecting to the internet. I'm helping them troubleshoot the issue and figure out what the problem is. So far, we've tried resetting the router and checking the network settings, but the issue still persists. We're currently looking into other possible solutions."
示例代碼,
conversation_with_summary.predict(input="Very cool -- what is the scope of the project?")
輸出結(jié)果,文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-610106.html
> Entering new ConversationChain chain...
Prompt after formatting:
The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.
Current conversation:
The human greeted the AI and asked how it was doing. The AI replied that it was doing great and was currently helping a customer with a technical issue where their computer was not connecting to the internet. The AI was troubleshooting the issue and had already tried resetting the router and checking the network settings, but the issue still persisted and they were looking into other possible solutions.
Human: Very cool -- what is the scope of the project?
AI:
> Finished chain.
" The scope of the project is to troubleshoot the customer's computer issue and find a solution that will allow them to connect to the internet. We are currently exploring different possibilities and have already tried resetting the router and checking the network settings, but the issue still persists."
完結(jié)!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-610106.html
到了這里,關(guān)于Langchain 的 Conversation summary memory的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!