入门: 内存
info
在对话过程中存储和检索数据的概念被称为内存。有两种主要方法, loadMemoryVariables
和 saveContext
。第一种方法用于从内存中检索数据(可选择使用当前输入值), 第二种方法用于将数据存储到内存中。
export type InputValues = Record<string, any>;
export type OutputValues = Record<string, any>;
interface BaseMemory {
loadMemoryVariables(values: InputValues): Promise<MemoryVariables>;
saveContext(
inputValues: InputValues,
outputValues: OutputValues
): Promise<void>;
}
note
不要在两个不同的链之间共享相同的存储器实例, 存储器实例代表单个对话的历史记录
note
如果您将LangChain应用部署在无服务器环境中,请不要将存储器实例存储在变量中, 因为您的托管提供商可能会在下一次调用该函数时重置它。
所有内存类
🗃️ 示例
12 items
高级
要实现您自己的内存类,有两个选项:
子类化 BaseChatMemory
这是实现自己的内存类的最简单方法。您可以子类化 BaseChatMemory
, 通过将输入和输出保存为聊天消息来处理 saveContext
, 并仅实现 loadMemoryVariables
方法。该方法负责返回与当前输入值相关的存储器变量。
abstract class BaseChatMemory extends BaseMemory {
chatHistory: ChatMessageHistory;
abstract loadMemoryVariables(values: InputValues): Promise<MemoryVariables>;
}
Subclassing BaseMemory
如果您想要实现一个更自定义的内存类,您可以继承 BaseMemory
类并实现 loadMemoryVariables
和 saveContext
方法。saveContext
方法负责将输入和输出值存储在内存中。loadMemoryVariables
方法负责返回与当前输入值相关的内存变量。
abstract class BaseMemory {
abstract loadMemoryVariables(values: InputValues): Promise<MemoryVariables>;
abstract saveContext(
inputValues: InputValues,
outputValues: OutputValues
): Promise<void>;
}