docstrings memory (#8018)

docstrings `memory`:
- added module summary
- added missed docstrings
- updated docstrings into consistent format
- 
@baskaryan
This commit is contained in:
Leonid Ganeline 2023-07-24 10:05:36 -07:00 committed by GitHub
parent 026269bfa9
commit 120cdf813d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 30 additions and 15 deletions

View File

@ -1,3 +1,4 @@
"""Memory maintains Chain state, incorporating context from past runs."""
from langchain.memory.buffer import ( from langchain.memory.buffer import (
ConversationBufferMemory, ConversationBufferMemory,
ConversationStringBufferMemory, ConversationStringBufferMemory,

View File

@ -5,12 +5,13 @@ from langchain.schema.messages import BaseMessage, get_buffer_string
class ConversationBufferWindowMemory(BaseChatMemory): class ConversationBufferWindowMemory(BaseChatMemory):
"""Buffer for storing conversation memory.""" """Buffer for storing conversation memory inside a limited size window."""
human_prefix: str = "Human" human_prefix: str = "Human"
ai_prefix: str = "AI" ai_prefix: str = "AI"
memory_key: str = "history" #: :meta private: memory_key: str = "history" #: :meta private:
k: int = 5 k: int = 5
"""Number of messages to store in buffer."""
@property @property
def buffer(self) -> List[BaseMessage]: def buffer(self) -> List[BaseMessage]:

View File

@ -9,6 +9,8 @@ from langchain.schema import BaseChatMessageHistory, BaseMemory
class BaseChatMemory(BaseMemory, ABC): class BaseChatMemory(BaseMemory, ABC):
"""Abstract base class for chat memory."""
chat_memory: BaseChatMessageHistory = Field(default_factory=ChatMessageHistory) chat_memory: BaseChatMessageHistory = Field(default_factory=ChatMessageHistory)
output_key: Optional[str] = None output_key: Optional[str] = None
input_key: Optional[str] = None input_key: Optional[str] = None

View File

@ -17,7 +17,7 @@ if TYPE_CHECKING:
class CosmosDBChatMessageHistory(BaseChatMessageHistory): class CosmosDBChatMessageHistory(BaseChatMessageHistory):
"""Chat history backed by Azure CosmosDB.""" """Chat message history backed by Azure CosmosDB."""
def __init__( def __init__(
self, self,

View File

@ -16,6 +16,7 @@ logger = logging.getLogger(__name__)
class DynamoDBChatMessageHistory(BaseChatMessageHistory): class DynamoDBChatMessageHistory(BaseChatMessageHistory):
"""Chat message history that stores history in AWS DynamoDB. """Chat message history that stores history in AWS DynamoDB.
This class expects that a DynamoDB table with name `table_name` This class expects that a DynamoDB table with name `table_name`
and a partition Key of `SessionId` is present. and a partition Key of `SessionId` is present.

View File

@ -16,7 +16,7 @@ if TYPE_CHECKING:
class FirestoreChatMessageHistory(BaseChatMessageHistory): class FirestoreChatMessageHistory(BaseChatMessageHistory):
"""Chat history backed by Google Firestore.""" """Chat message history backed by Google Firestore."""
def __init__( def __init__(
self, self,

View File

@ -36,6 +36,7 @@ def _ensure_cache_exists(cache_client: momento.CacheClient, cache_name: str) ->
class MomentoChatMessageHistory(BaseChatMessageHistory): class MomentoChatMessageHistory(BaseChatMessageHistory):
"""Chat message history cache that uses Momento as a backend. """Chat message history cache that uses Momento as a backend.
See https://gomomento.com/""" See https://gomomento.com/"""
def __init__( def __init__(

View File

@ -21,6 +21,7 @@ logger = logging.getLogger(__name__)
def create_message_model(table_name, DynamicBase): # type: ignore def create_message_model(table_name, DynamicBase): # type: ignore
""" """
Create a message model for a given table name. Create a message model for a given table name.
Args: Args:
table_name: The name of the table to use. table_name: The name of the table to use.
DynamicBase: The base class to use for the model. DynamicBase: The base class to use for the model.

View File

@ -20,7 +20,7 @@ logger = logging.getLogger(__name__)
class ZepChatMessageHistory(BaseChatMessageHistory): class ZepChatMessageHistory(BaseChatMessageHistory):
"""A ChatMessageHistory implementation that uses Zep as a backend. """Chat message history that uses Zep as a backend.
Recommended usage:: Recommended usage::

View File

@ -8,7 +8,7 @@ from langchain.schema import BaseMemory
class CombinedMemory(BaseMemory): class CombinedMemory(BaseMemory):
"""Class for combining multiple memories' data together.""" """Combining multiple memories' data together."""
memories: List[BaseMemory] memories: List[BaseMemory]
"""For tracking all the memories that should be accessed.""" """For tracking all the memories that should be accessed."""

View File

@ -21,6 +21,8 @@ logger = logging.getLogger(__name__)
class BaseEntityStore(BaseModel, ABC): class BaseEntityStore(BaseModel, ABC):
"""Abstract base class for Entity store."""
@abstractmethod @abstractmethod
def get(self, key: str, default: Optional[str] = None) -> Optional[str]: def get(self, key: str, default: Optional[str] = None) -> Optional[str]:
"""Get entity value from store.""" """Get entity value from store."""
@ -48,7 +50,7 @@ class BaseEntityStore(BaseModel, ABC):
class InMemoryEntityStore(BaseEntityStore): class InMemoryEntityStore(BaseEntityStore):
"""Basic in-memory entity store.""" """In-memory Entity store."""
store: Dict[str, Optional[str]] = {} store: Dict[str, Optional[str]] = {}
@ -69,7 +71,9 @@ class InMemoryEntityStore(BaseEntityStore):
class RedisEntityStore(BaseEntityStore): class RedisEntityStore(BaseEntityStore):
"""Redis-backed Entity store. Entities get a TTL of 1 day by default, and """Redis-backed Entity store.
Entities get a TTL of 1 day by default, and
that TTL is extended by 3 days every time the entity is read back. that TTL is extended by 3 days every time the entity is read back.
""" """
@ -245,7 +249,7 @@ class ConversationEntityMemory(BaseChatMemory):
"""Entity extractor & summarizer memory. """Entity extractor & summarizer memory.
Extracts named entities from the recent chat history and generates summaries. Extracts named entities from the recent chat history and generates summaries.
With a swapable entity store, persisting entities across conversations. With a swappable entity store, persisting entities across conversations.
Defaults to an in-memory entity store, and can be swapped out for a Redis, Defaults to an in-memory entity store, and can be swapped out for a Redis,
SQLite, or other entity store. SQLite, or other entity store.
""" """

View File

@ -17,7 +17,7 @@ from langchain.schema.messages import BaseMessage, SystemMessage, get_buffer_str
class ConversationKGMemory(BaseChatMemory): class ConversationKGMemory(BaseChatMemory):
"""Knowledge graph memory for storing conversation memory. """Knowledge graph conversation memory.
Integrates with external knowledge graph to store and retrieve Integrates with external knowledge graph to store and retrieve
information about knowledge triples in the conversation. information about knowledge triples in the conversation.

View File

@ -10,6 +10,8 @@ MANAGED_URL = "https://api.getmetal.io/v1/motorhead"
class MotorheadMemory(BaseChatMemory): class MotorheadMemory(BaseChatMemory):
"""Chat message memory backed by Motorhead service."""
url: str = MANAGED_URL url: str = MANAGED_URL
timeout = 3000 timeout = 3000
memory_key = "history" memory_key = "history"

View File

@ -4,7 +4,7 @@ from langchain.schema import BaseMemory
class SimpleMemory(BaseMemory): class SimpleMemory(BaseMemory):
"""Simple memory for storing context or other bits of information that shouldn't """Simple memory for storing context or other information that shouldn't
ever change between prompts. ever change between prompts.
""" """

View File

@ -16,6 +16,8 @@ from langchain.schema.messages import BaseMessage, SystemMessage, get_buffer_str
class SummarizerMixin(BaseModel): class SummarizerMixin(BaseModel):
"""Mixin for summarizer."""
human_prefix: str = "Human" human_prefix: str = "Human"
ai_prefix: str = "AI" ai_prefix: str = "AI"
llm: BaseLanguageModel llm: BaseLanguageModel
@ -36,7 +38,7 @@ class SummarizerMixin(BaseModel):
class ConversationSummaryMemory(BaseChatMemory, SummarizerMixin): class ConversationSummaryMemory(BaseChatMemory, SummarizerMixin):
"""Conversation summarizer to memory.""" """Conversation summarizer to chat memory."""
buffer: str = "" buffer: str = ""
memory_key: str = "history" #: :meta private: memory_key: str = "history" #: :meta private:

View File

@ -6,7 +6,7 @@ from langchain.schema.messages import BaseMessage, get_buffer_string
class ConversationTokenBufferMemory(BaseChatMemory): class ConversationTokenBufferMemory(BaseChatMemory):
"""Buffer for storing conversation memory.""" """Conversation chat memory with token limit."""
human_prefix: str = "Human" human_prefix: str = "Human"
ai_prefix: str = "AI" ai_prefix: str = "AI"

View File

@ -11,7 +11,7 @@ from langchain.vectorstores.base import VectorStoreRetriever
class VectorStoreRetrieverMemory(BaseMemory): class VectorStoreRetrieverMemory(BaseMemory):
"""Class for a VectorStore-backed memory object.""" """VectorStoreRetriever-backed memory."""
retriever: VectorStoreRetriever = Field(exclude=True) retriever: VectorStoreRetriever = Field(exclude=True)
"""VectorStoreRetriever object to connect to.""" """VectorStoreRetriever object to connect to."""

View File

@ -7,7 +7,7 @@ from langchain.memory.chat_message_histories import ZepChatMessageHistory
class ZepMemory(ConversationBufferMemory): class ZepMemory(ConversationBufferMemory):
"""Persist your chain history to the Zep Long-term Memory Server """Persist your chain history to the Zep Memory Server.
The number of messages returned by Zep and when the Zep server summarizes chat The number of messages returned by Zep and when the Zep server summarizes chat
histories is configurable. See the Zep documentation for more details. histories is configurable. See the Zep documentation for more details.

View File

@ -8,7 +8,7 @@ from langchain.schema.messages import AIMessage, BaseMessage, HumanMessage
class BaseMemory(Serializable, ABC): class BaseMemory(Serializable, ABC):
"""Base abstract class for memory in Chains. """Abstract base class for memory in Chains.
Memory refers to state in Chains. Memory can be used to store information about Memory refers to state in Chains. Memory can be used to store information about
past executions of a Chain and inject that information into the inputs of past executions of a Chain and inject that information into the inputs of