精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何讓AI Agent在多輪對話中保持長期記憶?7種關(guān)鍵優(yōu)化方法解析 原創(chuàng)

發(fā)布于 2025-6-20 06:40
瀏覽
0收藏

在基于大模型的 Agent 中,長期記憶的狀態(tài)維護(hù)至關(guān)重要,在 OpenAIAI 應(yīng)用研究主管 Lilian Weng 的 博客《基于大模型的 Agent 構(gòu)成》中,將記憶視為關(guān)鍵的組件之一,下面我將結(jié)合 LangChain 中的代碼,分享7 種不同的Agent記憶維護(hù)方式在不同場景中的應(yīng)用。

獲取全量歷史對話

在電信公司的客服聊天機(jī)器人場景中,如果用戶在對話中先是詢問了賬單問題,接著又談到了網(wǎng)絡(luò)連接問 題,ConversationBufferMemory 可以用來記住整個與用戶的對話歷史,可以幫助 AI 在回答網(wǎng)絡(luò)問題時還 記得賬單問題的相關(guān)細(xì)節(jié),從而提供更連貫的服務(wù)。

from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
memory.save_context({"input": "你好"}, {"output": "怎么了"})
print(memory.load_memory_variables({}))

滑動窗口獲取最近部分對話內(nèi)容

在一個電商平臺上,如果用戶詢問關(guān)于特定產(chǎn)品的問題(如手機(jī)的電池續(xù)航時間),然后又問到了配送方 式,ConversationBufferWindowMemory 可以幫助AI 只專注于最近的一兩個問題(如配送方式),而不是整個對話歷史,以提供更快速和專注的答復(fù)。

from langchain.memory import ConversationBufferWindowMemory
memory = ConversationBufferWindowMemory(k=1)
memory.save_context({"input": "iphone15續(xù)航"}, {"output": "續(xù)航一般"})
memory.save_context({"input": "配送"}, {"output": "很快"})
# {'history': 'Human: 配送\nAI: 很快'}
print(memory.load_memory_variables({}))

ConversationBufferWindowMemory 這個類在存儲message還是全量存儲的,只是在讀數(shù)據(jù)的時候只讀k個窗口。

獲取歷史對話中實(shí)體信息

在法律咨詢的場景中,客戶可能會提到特定的案件名稱、相關(guān)法律條款或個人信息(如“我在去年的交通 事故中受了傷,想了解關(guān)于賠償?shù)姆山ㄗh”)。 ConversationEntityMemory可以幫助 AI 記住這些關(guān)鍵 實(shí)體和實(shí)體關(guān)系細(xì)節(jié),從而在整個對話過程中提供更準(zhǔn)確、更個性化的法律建議。

llm = ChatOpenAI(temperature=0, model="gpt-4o")


memory = ConversationEntityMemory(
    llm=llm,
    return_messages=True,
)
print(memory.load_memory_variables(inputs={"input": "good!  busy working on Langchain.  lots to do."}))
memory.save_context({"input": "good!  busy working on Langchain.  lots to do."}, {"output": "That sounds like a lot of work!  What kind of things are you doing to make Langchain better?"})
print(memory.load_memory_variables(inputs={"input": "i'm trying to improve Langchain's interfaces, the UX, its integrations with various products the user might want ...  a lot of stuff"}))
memory.save_context(inputs={"input": "i'm trying to improve Langchain's interfaces, the UX, its integrations with various products the user might want ...  a lot of stuff"}, outputs={"output": "that sounds great job"})
print(memory.load_memory_variables(inputs={"input": "what is langchain"}))

在會話過程中,需要從memory load 變量時:

  1. 根據(jù)history和用戶的提問(也就是最新一句話)提取實(shí)體,注意這里提取的是用戶最新提問的query的實(shí)體
  2. 從entity_store這個大字典查詢之前是否存在對應(yīng)實(shí)體的描述信息,如果有對應(yīng)的描述信息,則把對應(yīng)的實(shí)體和描述信息作為entities字段返回
  3. 如果之前提取了實(shí)體,但是最新一句話

當(dāng)一次會話結(jié)束之后,需要save_contexts:

  1. 保存human message和ai message到 messages列表
  2. 因?yàn)锳I message 可能補(bǔ)充了human 提到的實(shí)體信息,所以使用LLM更新當(dāng)前query提到的實(shí)體的描述信息
  3. 如果在當(dāng)前會話之前提取了實(shí)體,但是當(dāng)前會話只是簡單的問候,那么就不會更新實(shí)體的描述信息,本質(zhì)還是因?yàn)閷?shí)體信息是綁定在當(dāng)前的query的

利用知識圖譜獲取歷史對話中的實(shí)體及其聯(lián)系

在醫(yī)療咨詢中, 一個病人可能會描述多個癥狀和過去的醫(yī)療歷史(如“我有糖尿病史,最近覺得經(jīng)常口渴 和疲勞”)。 ConversationKGMemory 可以構(gòu)建一個包含病人癥狀、疾病歷史和可能的健康關(guān)聯(lián)的知識圖譜,從而幫助 AI 提供更全面和深入的醫(yī)療建議。

from langchain_community.memory.kg import ConversationKGMemory

llm = ChatOpenAI(temperature=0, model="gpt-4o")

memory = ConversationKGMemory(llm=llm)
memory.save_context({"input": "say hi to sam"}, {"output": "who is sam"})
memory.save_context({"input": "sam is a friend"}, {"output": "okay"})
print(memory.load_memory_variables({"input": "who is sam"}))  # {'history': 'On Sam: Sam is a friend.'}
print(memory.get_current_entities("what's Sams favorite color?"))  # ['Sam']

當(dāng)每次會話結(jié)束的時候,會利用LLM從history中抽取知識的三元組,并存儲到NetworkxEntityGraph圖對象中。

當(dāng)新的會話開始需要從memory load數(shù)據(jù)的時候,從當(dāng)前Query中利用LLM抽取實(shí)體,并從NetworkxEntityGraph圖對象中獲取這個實(shí)體的knowledge, 把所有實(shí)體的知識信息返回。

對歷史對話進(jìn)行階段性總結(jié)摘要

在一系列的教育輔導(dǎo)對話中,學(xué)生可能會提出不同的數(shù)學(xué)問題或理解難題(如“我不太理解二次方程的求解方法”)。 ConversationSummaryMemory 可以幫助 AI 總結(jié)之前的輔導(dǎo)內(nèi)容和學(xué)生的疑問點(diǎn),以便在隨后的輔導(dǎo)中提供更針對性的解釋和練習(xí).

llm = ChatOpenAI(temperature=0, model="gpt-4o")
memory = ConversationSummaryMemory(llm=llm)
memory.save_context({"input": "hi"}, {"output": "whats up"})
print(memory.load_memory_variables({}))  # {'history': 'The human greets the AI with "hi," and the AI responds with "what\'s up."'}

ConversationSummaryMemory 有個buffer的屬性,存放summary信息。每次會話結(jié)束的時候,用新生成的會話和之前的summary生成新的summary存儲在buffer屬性中。

ConversationSummaryMemory 特點(diǎn):

  1. 只存儲摘要,不存儲原始對話
  2. 每次對話后都會更新摘要
  3. 適合長期對話,節(jié)省 token
  4. 可能丟失細(xì)節(jié)信息

需要獲取最新對話,又要兼顧較早歷史對話

在處理一個長期的技術(shù)問題時(如軟件故障排查),用戶可能會在多次對話中提供不同的錯誤信息和反 饋。ConversationSummaryBufferMemory 可以幫助 AI 保留最近幾次交互的詳細(xì)信息,同時提供歷史問 題處理的摘要,以便于更有效地識別和解決問題。

llm = ChatOpenAI(temperature=0, model="gpt-4o")
memory = ConversationSummaryBufferMemory(llm=llm, max_token_limit=10)
memory.save_context({"input": "hi"}, {"output": "whats up"})
memory.save_context({"input": "not much you"}, {"output": "not much"})
# {'history': 'System: The human greets with "hi." The AI responds with "what\'s up," and the human replies with "not much, you?"\nAI: not much'}
print(memory.load_memory_variables({}))

ConversationSummaryBufferMemory 會暫存不會超過max_token_limit的會話歷史,當(dāng)歷史長度超過這個大小的時候,會截?cái)嘀暗臅挌v史以使得會話現(xiàn)存的會話長度不超過max_token_limit,并把截?cái)嗟闹暗臅挌v史和之前的moving_summary_buffer更新moving_summary_buffer信息。

ConversationSummaryBufferMemory 特點(diǎn):

  1. 存儲最近的對話 + 早期對話的摘要
  2. 結(jié)合了完整對話和摘要的優(yōu)勢
  3. 保持最近對話的細(xì)節(jié),壓縮早期對話
  4. 適合中等長度的對話

基于向量檢索對話信息

用戶可能會對特定新聞事件提出問題,如“最近的經(jīng)濟(jì)峰會有什么重要決策?? VectorStoreRetrieverMemory 能夠快速從大量歷史新聞數(shù)據(jù)中檢索出與當(dāng)前問題最相關(guān)的信息,即使這些信息在整個對話歷史中不是最新的,也能提供及時準(zhǔn)確的背景信息和詳細(xì)報(bào)道。

import faiss

from langchain.docstore import InMemoryDocstore
from langchain.vectorstores import FAISS


embedding_size = 1536 # Dimensions of the OpenAIEmbeddings
index = faiss.IndexFlatL2(embedding_size)
embedding_fn = OpenAIEmbeddings().embed_query
vectorstore = FAISS(embedding_fn, index, InMemoryDocstore({}), {})


# the vector lookup still returns the semantically relevant information
retriever = vectorstore.as_retriever(search_kwargs=dict(k=1))
memory = VectorStoreRetrieverMemory(retriever=retriever)

# When added to an agent, the memory object can save pertinent information from conversations or used tools
memory.save_context({"input": "My favorite food is pizza"}, {"output": "thats good to know"})
memory.save_context({"input": "My favorite sport is soccer"}, {"output": "..."})
memory.save_context({"input": "I don't the Celtics"}, {"output": "ok"})

總結(jié)

在實(shí)際項(xiàng)目中,記憶方案的選擇需要綜合考量以下因素:

  1. 業(yè)務(wù)場景的信息生命周期要求
  2. 對話復(fù)雜度和上下文依賴程度
  3. 系統(tǒng)資源與響應(yīng)延遲限制

在實(shí)際項(xiàng)目里,我常跟團(tuán)隊(duì)說:"別一上來就整最復(fù)雜的,先想清楚你的AI到底需要記住什么。"有時候簡單的滑動窗口就夠用,非得加個知識圖譜反而把簡單問題復(fù)雜化。最近我在做一個客服系統(tǒng),就用了混合記憶的方案,效果還不錯。


本文轉(zhuǎn)載自???AI 博物院??? 作者:longyunfeigu

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
一区二区精品免费视频| 国产精品久久久999| 国产精品一区二区人妻喷水| 中文字幕在线视频久| 国产欧美日韩中文久久| 亚洲aaa激情| 色老头一区二区| 欧美淫片网站| 亚洲天堂av在线免费| 三级av免费看| 视频二区不卡| 亚洲一二三区不卡| 亚洲一区二区三区午夜| 无码国产伦一区二区三区视频| 日本在线不卡一区| 97超碰色婷婷| 日韩女优一区二区| 国产一区二区三区电影在线观看 | 国产做受高潮69| 亚洲第一视频区| 欧美黑人巨大videos精品| 欧美精品免费视频| 青青青国产在线视频| av电影免费在线看| 亚洲免费在线视频一区 二区| 欧美午夜视频在线| 亚洲 欧美 激情 小说 另类| 国产乱码精品一品二品| 国产欧美日韩中文| 国产suv精品一区二区33| 亚洲日产国产精品| 欧美激情性做爰免费视频| 情侣偷拍对白清晰饥渴难耐| 国产一区网站| 日韩精品中文字| 又黄又爽的网站| 99久久香蕉| 日韩久久久精品| 黄色aaaaaa| 香蕉久久一区| 欧美日本视频在线| 亚洲天堂2018av| 成人涩涩视频| 欧美日韩一区二区三区在线看 | 特级片在线观看| 久久久久久美女精品| 日韩在线观看免费全集电视剧网站 | 91在线丨porny丨国产| 91嫩草在线| 精品人妻伦一二三区久久| 狠狠色丁香婷婷综合久久片| 国产精品免费一区豆花| 中国黄色一级视频| 麻豆精品久久久| 国产裸体写真av一区二区| 做爰视频毛片视频| 久久国产福利国产秒拍| 国产日产欧美精品| 99精品免费观看| 国产成人欧美日韩在线电影| 99在线影院| 亚洲av成人无码网天堂| 久久综合久久综合久久| 久草精品电影| 国产午夜精品一区理论片| 欧美激情综合五月色丁香小说| 亚洲春色在线视频| a黄色片在线观看| 一区二区三区毛片| 欧美 丝袜 自拍 制服 另类| 一区二区精品伦理...| 日本道在线观看一区二区| 亚洲欧洲日本精品| 一区二区三区欧洲区| 亚洲国产欧美自拍| 国产精品久久久久久久av| 手机在线电影一区| 欧美国产高跟鞋裸体秀xxxhd| 五月天综合在线| 久久中文在线| 成人在线中文字幕| 欧美自拍第一页| 欧美国产在线观看| 毛片在线视频观看| 免费福利视频一区二区三区| 欧美喷潮久久久xxxxx| 成人在线观看一区二区| 欧美美女在线| 久久国产精品电影| 天天综合网入口| 久久99国产精品成人| 国产日韩欧美综合精品| aaa在线观看| 亚洲国产精品一区二区www| 97公开免费视频| 天堂va欧美ⅴa亚洲va一国产| 亚洲美女av在线| 国产高清在线免费观看| 日韩成人精品视频| 国产精品一区二区a| 在线看的av网站| 亚洲成av人片一区二区梦乃| 超碰在线播放91| 久久精品国产亚洲5555| 久久视频在线观看免费| youjizz在线视频| 成人性生交大片免费看中文| 亚洲精品不卡| 小h片在线观看| 日韩欧美国产麻豆| 成人性视频免费看| 国产亚洲毛片| 99精彩视频在线观看免费| a黄色在线观看| 欧美日韩一区二区在线| 国产免费a级片| 99九九热只有国产精品| 国产97在线视频| 天天干天天草天天射| 亚洲欧美色图小说| 天天干天天干天天干天天干天天干| 久久久久97| 欧美激情极品视频| 99热这里只有精品66| 国产精品污网站| 亚洲色成人一区二区三区小说| 一区中文字幕电影| 美女黄色丝袜一区| 一区二区日韩视频| 国产精品拍天天在线| 北条麻妃在线一区| 网红女主播少妇精品视频| 久久久噜噜噜久久中文字免| 国产精品毛片一区二区在线看舒淇| 欧美国产亚洲另类动漫| 久草综合在线观看| 亚洲婷婷丁香| 国产91在线高潮白浆在线观看| 无码精品人妻一区二区| 香蕉成人伊视频在线观看| 伊人av在线播放| 欧美成人嫩草网站| 成人国产1314www色视频| 国产精品一区二区三区视频网站| 欧美日韩精品综合在线| 黄色免费一级视频| 精品一区二区久久| 婷婷视频在线播放| 久久伊人影院| 欧美激情免费在线| 亚洲 另类 春色 国产| 色综合欧美在线| 人妻一区二区视频| 理论片日本一区| 黄色一级片av| 国产精品乱战久久久| 国产成人一二片| 精品亚洲一区二区三区在线观看| 日本网站在线免费观看| 99久久婷婷国产| 女人和拘做爰正片视频| 日韩欧美影院| 国产精品国语对白| 毛片免费不卡| 日韩精品一区二区三区老鸭窝| 18精品爽视频在线观看| av电影在线观看完整版一区二区| 久久久999免费视频| 美女精品一区最新中文字幕一区二区三区| 奇米影视亚洲狠狠色| 川上优的av在线一区二区| 欧美日韩国产另类一区| avove在线播放| 成人av免费网站| 不要播放器的av网站| 久久社区一区| 国产精品99久久久久久久| 欧美私密网站| 日韩有码片在线观看| 国产精品久久无码一三区| 亚洲永久精品大片| 久久久无码人妻精品一区| 日韩av一区二区三区四区| 偷拍盗摄高潮叫床对白清晰| 国产精品网址| 国产欧美日韩亚洲精品| 丰满的护士2在线观看高清| 亚洲免费一级电影| 国产av精国产传媒| 欧美色另类天堂2015| 精品国产视频一区二区三区| 91在线视频免费观看| 五月天开心婷婷| 亚洲在线观看| 久久观看最新视频| 国产乱码精品一区二区亚洲| 99国产高清| 亚洲电影有码| 97在线精品视频| 午夜小视频在线观看| 国产亚洲免费的视频看| 亚洲精品免费在线观看视频| 欧美色老头old∨ideo| 国产一级淫片免费| 国产精品不卡在线| 三级黄色片网站| 国产精品18久久久久久久久久久久| 丰满少妇被猛烈进入高清播放| 亚洲影视一区| 视频一区视频二区视频| 欧美交a欧美精品喷水| 91久久大香伊蕉在人线| 欧美黑粗硬大| 日本午夜在线亚洲.国产| 999精品网| 欧美乱大交xxxxx另类电影| 在线激情小视频| 一区二区三区国产在线观看| 香蕉av一区二区三区| 日韩三级在线观看| 一级做a爱片久久毛片| 色偷偷成人一区二区三区91 | 亚洲a一区二区三区| 日本一区二区三区免费看| 日韩av不卡一区| 国产色综合一区二区三区| 中文字幕久久精品一区二区| 91亚洲国产成人精品性色| 精品久久99| 国产精品入口免费视| 欧美福利在线播放| 欧美有码在线视频| 在线观看爽视频| 国产91精品久| 欧美人体一区二区三区| 日韩av第一页| 春暖花开亚洲一区二区三区| 日本成人在线视频网址| 26uuu亚洲电影| 欧美在线激情视频| 伊人久久av| 日本久久久久久久久久久| 中文字幕在线视频久| 人妖精品videosex性欧美| 欧美www.| 国产精品人成电影在线观看| 日韩av电影资源网| 国产欧美日韩最新| 九九九九九九精品任你躁 | 香蕉国产成人午夜av影院| 国严精品久久久久久亚洲影视| 老汉色老汉首页av亚洲| 久久精品人人做人人爽电影| 伊人成综合网伊人222| 欧美一区二区三区在线免费观看| 蜜桃精品噜噜噜成人av| 日本在线观看一区二区| 日韩精品2区| 久久av秘一区二区三区| 欧美日韩在线大尺度| 久久手机在线视频| 一本久道久久综合婷婷鲸鱼| 粉嫩虎白女毛片人体| 免费在线看一区| 性鲍视频在线观看| 成人小视频免费在线观看| 国产国语性生话播放| 久久久美女艺术照精彩视频福利播放| 国产又黄又粗的视频| 亚洲三级在线观看| 日韩女优在线观看| 日本精品视频一区二区| 97人妻精品一区二区三区动漫| 日韩欧美精品在线视频| 天堂а√在线8种子蜜桃视频| 国产亚洲一区二区在线| av免费网站在线| 96精品视频在线| 国产三级一区| 精品久久久久久一区| 欧美精品一二| 欧妇女乱妇女乱视频| 久久性天堂网| 欧美老女人bb| 久久久久88色偷偷免费| 超碰人人干人人| 樱桃国产成人精品视频| 日韩精品一区不卡| 欧美日韩国产不卡| 天天操天天操天天操| 日韩在线精品一区| 黄视频免费在线看| 成人在线国产精品| 蜜臀久久99精品久久一区二区| 手机成人av在线| 米奇777在线欧美播放| 1314成人网| 国产日韩欧美高清| 日产亚洲一区二区三区| 欧美丰满高潮xxxx喷水动漫| 先锋av资源站| 欧美大片大片在线播放| 欧美综合影院| 欧洲亚洲一区二区三区四区五区| 国产精品成人一区二区网站软件| 国产一区视频免费观看| 不卡一区在线观看| 国产黄色小视频网站| 日韩欧美中文在线| 欧美熟妇乱码在线一区| 久久视频在线视频| a屁视频一区二区三区四区| 国产一区福利视频| 你懂的视频一区二区| 欧美成人黄色网址| 久久久综合视频| 欧美亚洲天堂网| 欧美一二三区在线观看| 无遮挡动作视频在线观看免费入口| 奇米成人av国产一区二区三区| 999国产精品一区| 四虎精品欧美一区二区免费| 久久精品久久久精品美女| 亚洲色成人网站www永久四虎| 欧美日韩午夜剧场| www.国产免费| 欧美精品亚州精品| vam成人资源在线观看| 亚洲一区三区| 琪琪一区二区三区| 99久久久无码国产精品衣服| 欧美日韩精品在线视频| 日批免费在线观看| 久久久久国产精品一区| 国产精品99久久免费观看| 国产传媒久久久| 懂色av中文一区二区三区| 久草成人在线视频| 精品久久久三级丝袜| 女囚岛在线观看| 成人情视频高清免费观看电影| 国内揄拍国内精品久久| 四虎永久免费观看| 五月天婷婷综合| 午夜影院免费视频| 秋霞av国产精品一区| 亚洲欧洲av| 日韩中文字幕组| 国产精品情趣视频| 国产裸体永久免费无遮挡| 超碰日本道色综合久久综合| 日韩第一区第二区| 国产一区二区三区小说| 97精品久久久午夜一区二区三区| 欧美特黄aaaaaa| 国产一区二区三区在线观看网站| 91大神在线观看线路一区| 在线视频一区观看| 国产精品自产自拍| 日本一区二区三区免费视频| 精品亚洲国产视频| 成人精品一区二区三区电影| 精品久久免费观看| 国产xxx精品视频大全| 国产高潮久久久| 中文字幕亚洲专区| 视频欧美一区| 久久精品99国产| 亚洲欧洲www| 婷婷色在线观看| 国产精品成人av在线| 久久久久亚洲| 熟妇高潮精品一区二区三区| 91高清视频在线| 97caopron在线视频| 美女主播视频一区| 激情综合色综合久久综合| 久久久久亚洲AV| 国产亚洲视频中文字幕视频| 久久久久久久久久久久电影| 阿v天堂2017| 国产精品福利在线播放| 亚洲欧美强伦一区二区| 国产精品美腿一区在线看| 欧美伊人久久| 蜜桃传媒一区二区亚洲| 日韩一区二区在线看片| sese综合| xxxxxx在线观看| 久久精品一区二区| 亚洲精品97久久中文字幕无码| 国产99久久精品一区二区永久免费 | 亚洲国产一成人久久精品| 91av在线免费| 宅男噜噜噜66一区二区66| 在线天堂新版最新版在线8| av中文字幕av| 国产精品人妖ts系列视频| 天天摸夜夜添狠狠添婷婷| 国产综合香蕉五月婷在线|