Source code for langchain_core.memory
""" **Memory** 维护链状态,包含来自过去运行的上下文。
**Memory的类层次结构:**
.. code-block::
BaseMemory --> <name>Memory --> <name>Memory # 例子:BaseChatMemory -> MotorheadMemory
""" # noqa: E501
from __future__ import annotations
from abc import ABC, abstractmethod
from typing import Any, Dict, List
from langchain_core.load.serializable import Serializable
from langchain_core.runnables import run_in_executor
[docs]class BaseMemory(Serializable, ABC):
"""抽象基类,用于Chains中的记忆。
记忆指的是Chains中的状态。记忆可用于存储有关Chains过去执行的信息,并将该信息注入到Chains未来执行的输入中。例如,对于对话式Chains,记忆可用于存储对话,并自动将其添加到未来模型提示中,以便模型具有必要的上下文来连贯地响应最新的输入。
示例:
.. code-block:: python
class SimpleMemory(BaseMemory):
memories: Dict[str, Any] = dict()
@property
def memory_variables(self) -> List[str]:
return list(self.memories.keys())
def load_memory_variables(self, inputs: Dict[str, Any]) -> Dict[str, str]:
return self.memories
def save_context(self, inputs: Dict[str, Any], outputs: Dict[str, str]) -> None:
pass
def clear(self) -> None:
pass
""" # noqa: E501
class Config:
"""这个pydantic对象的配置。"""
arbitrary_types_allowed = True
@property
@abstractmethod
def memory_variables(self) -> List[str]:
"""此内存类将添加到链输入的字符串键。"""
[docs] @abstractmethod
def load_memory_variables(self, inputs: Dict[str, Any]) -> Dict[str, Any]:
"""给定文本输入,返回键值对。"""
[docs] async def aload_memory_variables(self, inputs: Dict[str, Any]) -> Dict[str, Any]:
"""给定文本输入,返回键值对。"""
return await run_in_executor(None, self.load_memory_variables, inputs)
[docs] @abstractmethod
def save_context(self, inputs: Dict[str, Any], outputs: Dict[str, str]) -> None:
"""将此链式运行的上下文保存到内存中。"""
[docs] async def asave_context(
self, inputs: Dict[str, Any], outputs: Dict[str, str]
) -> None:
"""将此链式运行的上下文保存到内存中。"""
await run_in_executor(None, self.save_context, inputs, outputs)
[docs] @abstractmethod
def clear(self) -> None:
"""清除内存内容。"""
[docs] async def aclear(self) -> None:
"""清除内存内容。"""
await run_in_executor(None, self.clear)