by:wenwenc9
如果本文有错误地方,欢迎指正。
01|LangChain | 从入门到实战-介绍
02|LangChain | 从入门到实战 -六大组件之Models IO
03|LangChain | 从入门到实战 -六大组件之Retrival
04|LangChain | 从入门到实战 -六大组件之Chain
一、简介
大多数法学硕士申请都有对话界面。对话的一个重要组成部分是能够引用对话中先前介绍的信息。至少,对话系统应该能够直接访问过去消息的某些窗口。更复杂的系统需要有一个不断更新的世界模型,这使得它能够执行诸如维护有关实体及其关系的信息之类的事情。
我们将这种存储过去交互信息的能力称为“记忆”。LangChain 提供了许多用于向系统添加内存的实用程序
。这些实用程序可以单独使用,也可以无缝地合并到链中。
内存系统需要支持两个基本操作:读和写。
回想一下,每个链都定义了一些需要某些输入的核心执行逻辑。其中一些输入直接来自用户,但其中一些输入可以来自内存。在给定的运行中,一条链将与其内存系统交互两次。
- 在收到初始用户输入之后但在执行核心逻辑之前,链将从其内存系统中读取并增加用户输入。
- 在执行核心逻辑之后但在返回答案之前,链会将当前运行的输入和输出写入内存,以便在将来的运行中引用它们。
两个核心设计
- 如何读取 READ
- 如何写入 WRTIE
1、剖析 ConversationBufferMemory
利用 ConversationBufferMemory
实现会话缓存存储过程
看看这个类是怎么个组成的,继承调用方式,可能有点啰嗦,但是我想说的是,通过dir() 查看类函数的构成、继承、方法、参数 是一个不错的选择
看看这个类方法有哪些参数,黄色部分为常用的
看看这个类本身有哪些方法,如果是继承的方法这里不看了,自己help()查看内容
当然也可以自己打开源码链接,github上面查看也很方便
好了,现在用一些代码,看看怎么事
from langchain.memory import ConversationBufferMemory
# 构建会话内存
memory = ConversationBufferMemory()
# 添加用户对话内容
memory.chat_memory.add_user_message("你好!")
# 添加机器对话内容
memory.chat_memory.add_ai_message("你好,有什么需要帮助的吗?")
消息存储在memory中,进行查看
memory.load_memory_variables({
})
默认的对话内容为history,也可以设置key
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(memory_key='chat_history')
# 添加用户对话内容
memory.chat_memory.add_user_message("你好!")
# 添加机器对话内容
memory.chat_memory.add_ai_message("你好,有什么需要帮助的吗?")
memory.load_memory_variables({
})
默认返回的是字符串对象,也可以返回消息实体
memory = ConversationBufferMemory(return_messages=True)
# 添加用户对话内容
memory.chat_memory.add_user_message("你好!")
# 添加机器对话内容
memory.chat_memory.add_ai_message("你好,有什么需要帮助的吗?")
memory.load_memory_variables({
})
2、使用ConverstaionBufferMemory
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langchain.memory import ConversationBufferMemory
llm = OpenAI(temperature=0)
template = """
你是一个会话机器人,能够记住上一次会话的内容
上一次会话内容:{chat_history}
新一次对话:{question}
你的回复:
"""
prompt = PromptTemplate.from_template(template)
memory = ConversationBufferMemory(memory_key='chat_history')
chain = LLMChain(
llm=llm,
prompt=prompt,
verbose=True,
memory=memory,
)
# chain = prompt | llm | memory
print()
chain({
'question': '你好'})
from langchain.chat_models import ChatOpenAI
from langchain.prompts import (
ChatPromptTemplate,
MessagesPlaceholder,
SystemMessagePromptTemplate,
HumanMessagePromptTemplate,
)
from langchain.chains import LLMChain
from langchain.memory import ConversationBufferMemory
llm = ChatOpenAI()
prompt = ChatPromptTemplate(
messages=[
SystemMessagePromptTemplate.from_template(
"你是一个会话机器人可以记录上一次对话内容."
)