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

拆解 LangChain 的大模型記憶方案

人工智能
本文主要聊了安裝記憶的基本原理、快速給LLM安裝記憶、ConversationBufferMemory、MessagesPlaceholder的使用、對話鏈ConversationChain的使用和原理。

之前我們聊過如何使用LangChain給LLM(大模型)裝上記憶,里面提到對話鏈ConversationChain和MessagesPlaceholder,可以簡化安裝記憶的流程。下文來拆解基于LangChain的大模型記憶方案。

1. 安裝記憶的原理

(1) 核心步驟

給LLM安裝記憶的核心步驟就3個:

  • 在對話之前調取之前的歷史消息。
  • 將歷史消息填充到Prompt里。
  • 對話結束后,繼續將歷史消息保存到到memory記憶中。

(2) 常規使用方法的弊端

了解這3個核心步驟后,在開發過程中,就需要手動寫代碼實現這3步,這也比較麻煩,不僅代碼冗余,而且容易遺漏這些模板代碼。

為了讓開發者聚焦于業務實現,LangChain貼心地封裝了這一整套實現。使用方式如下。

2. 記憶的種類

記憶分為 短時記憶 和 長時記憶。

在LangChain中使用ConversationBufferMemory作為短時記憶的組件,實際上就是以鍵值對的方式將消息存在內存中。

如果碰到較長的對話,一般使用ConversationSummaryMemory對上下文進行總結,再交給大模型。或者使用ConversationTokenBufferMemory基于固定的token數量進行內存刷新。

如果想對記憶進行長時間的存儲,則可以使用向量數據庫進行存儲(比如FAISS、Chroma等),或者存儲到Redis、Elasticsearch中。

下面以ConversationBufferMemory為例,對如何快速安裝記憶做個實踐。

3. 給LLM安裝記憶 — 非MessagesPlaceholder

(1)ConversationBufferMemory使用示例

使用ConversationBufferMemory進行記住上下文:

memory = ConversationBufferMemory()
memory.save_context(
    {"input": "你好,我的名字是半支煙,我是一個程序員"}, {"output": "你好,半支煙"}
)
memory.load_memory_variables({})

(2)LLMChain+ConversationBufferMemory使用示例

# prompt模板
template = """
你是一個對話機器人,以下<history>標簽中是AI與人類的歷史對話記錄,請你參考歷史上下文,回答用戶輸入的問題。

歷史對話:
<history>
{customize_chat_history}
</history>

人類:{human_input}
機器人:

"""

prompt = PromptTemplate(
    template=template,
    input_variables=["customize_chat_history", "human_input"],
)
memory = ConversationBufferMemory(
    memory_key="customize_chat_history",
)
model = ChatOpenAI(
    model="gpt-3.5-turbo",
)

chain = LLMChain(
    llm=model,
    memory=memory,
    prompt=prompt,
    verbose=True,
)

chain.predict(human_input="你知道我的名字嗎?")

# chain.predict(human_input="我叫半支煙,我是一名程序員")

# chain.predict(human_input="你知道我的名字嗎?")

此時,已經給LLM安裝上記憶了,免去了我們寫那3步核心的模板代碼。

對于PromptTemplate使用以上方式,但ChatPromptTemplate因為有多角色,所以需要使用MessagesPlaceholder。具體使用方式如下。

4. 給LLM安裝記憶 — MessagesPlaceholder

MessagesPlaceholder主要就是用于ChatPromptTemplate場景。ChatPromptTemplate模式下,需要有固定的格式。

(1) PromptTemplate和ChatPromptTemplate區別

ChatPromptTemplate主要用于聊天場景。ChatPromptTemplate有多角色,第一個是System角色,后續的是Human與AI角色。因為需要有記憶,所以之前的歷史消息要放在最新問題的上方。

(2) 使用MessagesPlaceholder安裝

最終的ChatPromptTemplate + MessagesPlaceholder代碼如下:

chat_prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "你是一個樂于助人的助手。"),
        MessagesPlaceholder(variable_name="customize_chat_history"),
        ("human", "{human_input}"),
    ]
)

memory = ConversationBufferMemory(
    memory_key="customize_chat_history",
    return_messages=True,
)
model = ChatOpenAI(
    model="gpt-3.5-turbo",
)

chain = LLMChain(
    llm=model,
    memory=memory,
    prompt=chat_prompt,
    verbose=True,
)

chain.predict(human_input="你好,我叫半支煙,我是一名程序員。")

至此,我們使用了ChatPromptTemplate簡化了構建prompt的過程。

5.使用對話鏈ConversationChain

如果連ChatPromptTemplate都懶得寫了,那直接使用對話鏈ConversationChain,讓一切變得更簡單。實踐代碼如下:

memory = ConversationBufferMemory(
    memory_key="history",  # 此處的占位符必須是history
    return_messages=True,
)
model = ChatOpenAI(
    model="gpt-3.5-turbo",
)

chain = ConversationChain(
    llm=model,
    memory=memory,
    verbose=True,
)

chain.predict(input="你好,我叫半支煙,我是一名程序員。")  # 此處的變量必須是input

ConversationChain提供了包含AI角色和人類角色的對話摘要格式。ConversationChain實際上是對Memory和LLMChain和ChatPrompt進行了封裝,簡化了初始化Memory和構建ChatPromptTemplate的步驟。

6. ConversationBufferMemory

(1) memory_key

ConversationBufferMemory有一個入參是memory_key,表示內存中存儲的本輪對話的鍵,后續可以根據鍵找到對應的值。

(2) 使用"chat_history"還是"history"

ConversationBufferMemory的memory_key,有些資料里是設置是memory_key="history",有些資料里是"chat_history"。

這里有2個規則,如下:

  • 在使用MessagesPlaceholder和ConversationBufferMemory時,MessagesPlaceholder的variable_name和ConversationBufferMemory的memory_key可以自定義,只要相同就可以。比如這樣:
chat_prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "你是一個樂于助人的助手。"),
        MessagesPlaceholder(variable_name="customize_chat_history"),
        ("human", "{input}"),
    ]
)

memory = ConversationBufferMemory(
    memory_key="customize_chat_history",  # 此處的占位符可以是自定義
    return_messages=True,
)
model = ChatOpenAI(
    model="gpt-3.5-turbo",
)

chain = ConversationChain(
    llm=model,
    memory=memory,
    prompt=chat_prompt,
    verbose=True,
)

chain.predict(input="你好,我叫半支煙,我是一名程序員。")  # 此處的變量必須是input
  • 如果只是使用ConversationChain,又沒有使用MessagesPlaceholder的場景下,ConversationBufferMemory的memory_key,必須用history。

7. MessagesPlaceholder的使用場景

MessagesPlaceholder其實就是在與AI對話過程中的Prompt的一部分,它代表Prompt中的歷史消息這部分。它提供了一種結構化和可配置的方式來處理這些消息列表,使得在構建復雜Prompt時更加靈活和高效。

說白了它就是個占位符,相當于把從memory讀取的歷史消息插入到這個占位符里了。

比如這樣,就可以表示之前的歷史對話消息:

chat_prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "你是一個樂于助人的助手。"),
        MessagesPlaceholder(variable_name="customize_chat_history"),
        ("human", "{human_input}"),
    ]
)

是否需要使用MessagesPlaceholder,記住2個原則:

  • PromptTemplate類型的模板,無需使用MessagesPlaceholder
  • ChatPromptTemplate 類型的聊天模板,需要使用MessagesPlaceholder。但是在使用ConversationChain時,可以省去創建ChatPromptTemplate的過程(也可以不省去)。省去和不省去在輸出過程中有些區別,如下:

總結

本文主要聊了安裝記憶的基本原理、快速給LLM安裝記憶、ConversationBufferMemory、MessagesPlaceholder的使用、對話鏈ConversationChain的使用和原理。希望對你有幫助!

責任編輯:趙寧寧 來源: 程序員半支煙
相關推薦

2024-07-12 14:07:04

2023-09-20 08:00:00

大語言模型代碼庫

2024-07-15 08:31:19

2025-07-28 07:42:08

2024-06-12 08:30:34

2025-11-04 07:15:00

LangChain大模型AI

2025-08-04 02:45:00

2025-06-03 08:32:00

2025-09-02 03:00:00

2025-11-04 09:16:14

2024-07-12 11:35:20

2023-05-19 15:58:52

2023-12-01 14:34:42

AnthropicAILLM

2023-06-20 13:44:49

清華推理

2025-06-05 00:00:00

向量數據庫線程安全Redis

2023-07-13 11:03:12

2025-04-24 11:09:13

2025-01-06 07:00:00

大模型人工智能LLM

2025-07-21 09:09:00

2025-08-18 09:15:00

點贊
收藏

51CTO技術棧公眾號

97se亚洲国产综合自在线观| 少妇愉情理伦三级| 欧美日韩免费做爰视频| 大桥未久在线视频| 日韩系列欧美系列| 无码av免费一区二区三区试看| 最近2019免费中文字幕视频三 | 91精品久久久久久综合五月天| 26uuu亚洲综合色| 欧美国产极速在线| www.com操| av女名字大全列表| 中文字幕一区二区三区在线视频| 色婷婷综合五月| 国产精品伊人日日| 强乱中文字幕av一区乱码| 国内视频在线精品| 亚洲欧洲三级电影| 国产精品丝袜视频| 97人妻精品一区二区免费| 波多野结衣久久| 国产精品一区二区果冻传媒| 一区二区三区四区视频| 久久久精品在线视频| 婷婷伊人综合中文字幕| 亚洲电影成人| 精品国产91九色蝌蚪| 国产91在线亚洲| 成人黄色免费视频| 欧美精品啪啪| 日韩欧美综合一区| 成年人视频大全| 国产高清第一页| 亚洲一区二区日韩| 亚洲乱码国产乱码精品精天堂| 毛片在线播放视频| 午夜视频在线免费播放| 韩国av一区二区三区在线观看| 中文字幕欧美精品在线| 国产原创精品在线| 最近在线中文字幕| 久久久不卡网国产精品一区| 国产精品aaa| 国产又黄又粗又猛又爽的| 日本久久二区| 亚洲精品国产第一综合99久久| 2022国产精品| 日本亚洲色大成网站www久久| 久久久久97| 91激情五月电影| 制服诱惑一区| 欧洲av在线播放| 美女精品在线| 最好看的2019年中文视频| 国产吞精囗交久久久| 午夜日韩成人影院| 成人免费一区二区三区在线观看| 欧美精品尤物在线| 国产精品久久久久久久久久久久久久久久久久 | 性做久久久久久| 九九99久久| 国产在线观看你懂的| 人体久久天天| 欧美日韩日日摸| 国产爆乳无码一区二区麻豆| 四虎在线免费看| 麻豆传媒一区二区三区| 欧美黑人巨大xxx极品| 麻豆精品一区二区三区视频| 欧美一区二区三区另类| 亚洲欧美制服第一页| 女同激情久久av久久| segui88久久综合9999| 亚洲国产一区视频| 西游记1978| 人妻丰满熟妇av无码区hd| 国产精品99久久久久久久女警| 91产国在线观看动作片喷水| 黑人狂躁日本娇小| 久久悠悠精品综合网| 亚洲成人久久网| www.99r| 国产电影一区| 欧美亚洲一区三区| 青青青在线视频播放| 香蕉视频网站在线观看| 久久综合一区二区| av一本久道久久波多野结衣| 中文字幕人妻一区二区在线视频 | 懂色av一区二区三区免费看| 91精品国产91久久久久久| 五月天综合激情网| 欧美另类亚洲| 97热在线精品视频在线观看| 秋霞欧美一区二区三区视频免费| 91亚洲国产成人久久精品| 亚洲精品色婷婷福利天堂| wwwww在线观看| 国语自产精品视频在线看抢先版结局| 欧美日韩加勒比精品一区| 欧美aaa在线观看| 成年在线观看免费人视频| 99久久精品99国产精品| 日韩国产欧美精品| 欧美性受xxxx狂喷水| 久久精品人人做人人爽人人| 久久久一本精品99久久精品| 亚洲欧美视频一区二区| 亚洲一卡二卡三卡四卡无卡久久 | 日本三级韩国三级欧美三级| 中文字幕欧美国产| 蜜桃av噜噜一区二区三区| 草草视频在线播放| wwwwxxxxx欧美| 最新精品视频| 另类激情视频| 在线视频你懂得一区二区三区| 久久综合色视频| 国产精品yjizz视频网| 欧美视频中文字幕| www国产视频| 巨人精品**| 日韩中文在线中文网三级| 亚洲精品视频在线观看免费视频| 在线免费高清一区二区三区| 日本一区二区三区四区视频| 亚洲 欧美 日韩 在线| 久久中文欧美| 国产精品劲爆视频| 在线免费a视频| 极品尤物av久久免费看| 久久青青草原| 国产乱妇乱子在线播视频播放网站| 欧美日韩一区二区三区视频| 精品亚洲视频在线| 欧美日韩国产一区二区在线观看| 日韩免费视频线观看| 国产情侣久久久久aⅴ免费| 久久97精品| 久久综合伊人77777| 激情五月少妇a| 亚洲精选国产| 日韩免费观看av| 日本wwwxxxx| 亚洲激情一二三区| 亚洲一级片av| 久久社区一区| 国产欧美久久久久久| 国内精品在线视频| 综合色天天鬼久久鬼色| 中文字幕av专区| 欧美日韩中文一区二区| 久久香蕉国产线看观看网| 国产伦精品一区二区三区视频网站| 日韩不卡免费视频| 成人h视频在线观看播放| 精品国产九九九| 亚洲欧美日韩国产一区二区三区| 日韩精品在线观看av| 午夜精品成人av| 亚洲美女自拍视频| 中文字幕69页| 欧美国产日韩在线观看| 东北少妇不带套对白| 日韩在线观看一区二区三区| 亚洲欧美国产va在线影院| 成人精品免费在线观看| 26uuu久久天堂性欧美| 美女福利视频在线| 嫩草一区二区三区| 欧美成人免费小视频| 无码人妻黑人中文字幕| 久久尤物电影视频在线观看| 国产精品久久久久9999小说| 97青娱国产盛宴精品视频| 亚洲天堂男人天堂女人天堂| 久久久久无码国产精品| 久久机这里只有精品| 手机看片日韩国产| 日韩精品视频一区二区三区| 高清欧美性猛交xxxx| 一级久久久久久久| 99综合电影在线视频| 热这里只有精品| 超碰成人在线免费| 欧美一级免费视频| 开心激情综合网| 亚洲欧美一区二区在线观看| 天堂va欧美va亚洲va老司机| 久久动漫亚洲| 在线视频精品一区| 成人激情自拍| 国产精品露脸av在线| 日本不卡视频一区二区| 亚洲成人tv网| 不许穿内裤随时挨c调教h苏绵| 99pao成人国产永久免费视频| 91视频国产精品| 99re在线视频| 欧美网站一区二区| 欧美成人精品欧美一| 久久综合久久久久88| 天天干天天操天天做| 亚洲韩日在线| 视频一区不卡| 精品淫伦v久久水蜜桃| 国产精品嫩草影院一区二区| 黄色成人在线网| 在线一区二区日韩| 午夜黄色小视频| 欧美精品丝袜中出| 操她视频在线观看| 91亚洲午夜精品久久久久久| 国产女同无遮挡互慰高潮91| 亚洲欧美日韩国产一区二区| 鲁鲁视频www一区二区| 在线不卡一区| 久久九九亚洲综合| 91无套直看片红桃| 激情懂色av一区av二区av| 男人av资源站| 国产三级欧美三级日产三级99| 少妇伦子伦精品无吗| 久久国产尿小便嘘嘘| 18禁男女爽爽爽午夜网站免费| 中文字幕免费一区二区三区| 日本在线一区| 婷婷综合成人| 国产成人福利网站| 91九色美女在线视频| 日韩av在线一区| 久久夜色精品国产噜噜亚洲av| 亚洲精品伦理在线| 亚洲a∨无码无在线观看| 久久久亚洲综合| 国产高清成人久久| 国产成人精品亚洲777人妖| 精品久久久99| 久久成人精品无人区| 三上悠亚免费在线观看| 日韩欧美高清一区二区三区| 国产精品丝袜白浆摸在线| 另类图片综合电影| 欧美在线亚洲一区| 97电影在线看视频| 国产亚洲成精品久久| 精品无人乱码| 亚洲区一区二区| 久久久久久久久亚洲精品| 欧美乱妇23p| 国产在线一区二区三区| 国产精品无码自拍| 久久电影国产免费久久电影 | 国产精品美女| 欧美区高清在线| 美女主播精品视频一二三四| 成人欧美一区二区三区视频 | 欧洲成人在线观看| 天堂8中文在线最新版在线| 97免费在线视频| 天堂网在线最新版www中文网| 538国产精品一区二区在线| 性欧美又大又长又硬| 日本精品免费观看| 日韩欧美一区二区三区在线观看| 日韩亚洲在线观看| 涩涩视频免费看| 日韩精品中文字幕在线播放| 日韩精品视频在线观看一区二区三区| 亚洲精品理论电影| 黄色片免费在线| 神马久久久久久| 直接在线观看的三级网址| 精品一区二区电影| 毛片在线播放网站| 中文字幕精品在线| 91中文在线| 午夜剧场成人观在线视频免费观看| 在线天堂资源www在线污| 国产成人亚洲综合91精品| 日日夜夜综合| 成人在线资源网址| 欧美男gay| 免费在线观看污污视频| 亚洲久久视频| 一区二区三区国产免费| 国产一区二区三区成人欧美日韩在线观看 | 狠狠色狠狠色综合婷婷tag| 亚洲综合日韩中文字幕v在线| 电影一区二区三区| 国产欧美 在线欧美| 97se亚洲| 亚洲精品视频一二三| 亚洲人成网www| 国产一级精品aaaaa看| 国产一区二区高清在线| 成人3d动漫一区二区三区91| 亚洲精品国模| 亚洲国产精品女人| 午夜在线精品偷拍| 中文字幕一区二区在线观看视频 | 91国产美女视频| 视频精品导航| 奇门遁甲1982国语版免费观看高清 | 国产一区视频免费观看| 亚洲福利精品| 一区二区三区 欧美| 日韩精品免费视频人成| 日本少妇一区二区三区| 久久精品国产免费| 伊人久久一区二区三区| 国产ts人妖一区二区| av网站免费在线看| 国产三级一区二区| 精品在线视频免费| 欧美日韩在线电影| 色资源在线观看| 欧美精品亚州精品| 成人精品动漫| 国产精品吴梦梦| 国产精品xxx在线观看| 制服国产精品| 日本不卡一区二区| 五月婷婷激情久久| av在线不卡电影| 亚洲熟女www一区二区三区| 欧洲国产伦久久久久久久| 秋霞视频一区二区| 欧美久久精品午夜青青大伊人| yiren22综合网成人| 97在线视频免费| av不卡一区二区| 公共露出暴露狂另类av| 日本午夜一本久久久综合| 日本黄色动态图| 久久免费的精品国产v∧| 精品无码人妻一区二区三| 91精品国产综合久久精品性色| 国产黄色片免费观看| 色爱av美腿丝袜综合粉嫩av| 欧美电影h版| 免费在线一区二区| 亚洲影院免费| 一本加勒比北条麻妃| 精品人伦一区二区三区蜜桃网站 | 狠狠狠色丁香婷婷综合久久五月| 无码 人妻 在线 视频| 福利视频第一区| 婷婷婷国产在线视频| 91精品国产免费久久久久久| 老司机成人在线| 激情五月宗合网| 91在线porny国产在线看| 日韩免费视频网站| 亚洲福利视频专区| 久久男人av资源站| 国产精品青草久久久久福利99| 国产成人一区二区三区影院| 任你操这里只有精品| 国产三级欧美三级日产三级99| 老熟妇一区二区三区啪啪| 欧美成人性战久久| 国产一区电影| 国产精品久久999| 日韩一区自拍| 伊人成人免费视频| 久久久综合网站| 无码视频在线观看| 怡红院精品视频| 亚洲视频资源| 国产成人亚洲综合无码| 成人福利在线看| www.超碰在线观看| 色国产综合视频| 91视频在线观看| 亚洲自拍av在线| 亚洲日本黄色| 欧美黄色一级生活片| 欧美日韩午夜精品| 日韩精品分区| 乱色588欧美| 精品一区二区影视| 国产一卡二卡在线| 亚洲欧美日韩成人| 亚洲欧美在线人成swag| 国产美女永久无遮挡| 26uuu久久综合| 99riav国产| zzjj国产精品一区二区| 秋霞一区二区| 男人的天堂99| 最好看的中文字幕久久| 日韩有码第一页| 国产欧美日韩亚洲精品| 狠狠噜噜久久| 亚洲一区和二区| 91国产免费观看| 欧美videos另类精品| 99国产在线观看| 三级精品在线观看|