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)