langchain_community.chat_message_histories.dynamodb.DynamoDBChatMessageHistory

class langchain_community.chat_message_histories.dynamodb.DynamoDBChatMessageHistory(table_name: str, session_id: str, endpoint_url: Optional[str] = None, primary_key_name: str = 'SessionId', key: Optional[Dict[str, str]] = None, boto3_session: Optional[Session] = None, kms_key_id: Optional[str] = None, ttl: Optional[int] = None, ttl_key_name: str = 'expireAt', history_size: Optional[int] = None)[source]

聊天消息历史记录,将历史记录存储在AWS DynamoDB中。

该类期望存在一个名为`table_name`的DynamoDB表

参数:

table_name: DynamoDB表的名称 session_id: 用于存储单个聊天会话消息的任意键。 endpoint_url: 用于连接的AWS端点的URL。此参数是可选的,对于测试目的很有用,比如使用Localstack。如果您计划使用AWS云服务,通常不必担心设置endpoint_url。 primary_key_name: DynamoDB表的主键名称。此参数是可选的,默认为”SessionId”。 key: 一个可选的带有自定义主键和次要键的字典。此参数是可选的,但在使用复合DynamoDB键或基于应用程序细节(如用户ID)隔离记录时很有用。这也可能包含全局和本地辅助索引键。 kms_key_id: 可选的AWS KMS密钥ID,AWS KMS密钥ARN或AWS KMS别名,用于客户端端加密 ttl: 可选的生存时间(TTL)(以秒为单位)。允许您定义每个项目的到期时间戳,指示何时可以从表中删除项目。DynamoDB处理过期项目的删除,而不会消耗写入吞吐量。要在表上启用此功能,请参阅[AWS DynamoDB文档](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/time-to-live-ttl-how-to.html) history_size: 要存储的最大消息数量。如果为None,则没有限制。如果不为None,则仅存储最新的`history_size`条消息。

Attributes

messages

从DynamoDB检索消息

Methods

__init__(table_name, session_id[, ...])

aadd_messages(messages)

添加一个消息列表。

aclear()

从存储中删除所有消息。

add_ai_message(message)

便利方法,用于将AI消息字符串添加到存储中。

add_message(message)

将消息附加到DynamoDB中的记录

add_messages(messages)

添加消息列表。

add_user_message(message)

方便的方法,用于向存储添加人类消息字符串。

aget_messages()

异步版本的获取消息。

clear()

清除DynamoDB中的会话内存

Parameters
  • table_name (str) –

  • session_id (str) –

  • endpoint_url (Optional[str]) –

  • primary_key_name (str) –

  • key (Optional[Dict[str, str]]) –

  • boto3_session (Optional[Session]) –

  • kms_key_id (Optional[str]) –

  • ttl (Optional[int]) –

  • ttl_key_name (str) –

  • history_size (Optional[int]) –

__init__(table_name: str, session_id: str, endpoint_url: Optional[str] = None, primary_key_name: str = 'SessionId', key: Optional[Dict[str, str]] = None, boto3_session: Optional[Session] = None, kms_key_id: Optional[str] = None, ttl: Optional[int] = None, ttl_key_name: str = 'expireAt', history_size: Optional[int] = None)[source]
Parameters
  • table_name (str) –

  • session_id (str) –

  • endpoint_url (Optional[str]) –

  • primary_key_name (str) –

  • key (Optional[Dict[str, str]]) –

  • boto3_session (Optional[Session]) –

  • kms_key_id (Optional[str]) –

  • ttl (Optional[int]) –

  • ttl_key_name (str) –

  • history_size (Optional[int]) –

async aadd_messages(messages: Sequence[BaseMessage]) None

添加一个消息列表。

参数:

messages: 要存储的BaseMessage对象列表。

Parameters

messages (Sequence[BaseMessage]) –

Return type

None

async aclear() None

从存储中删除所有消息。

Return type

None

add_ai_message(message: Union[AIMessage, str]) None

便利方法,用于将AI消息字符串添加到存储中。

请注意,这是一个便利方法。 代码应该更倾向于使用bulk add_messages接口,以节省对底层持久性层的往返次数。

这种方法可能在将来的版本中被弃用。

参数:

message: 要添加的AI消息。

Parameters

message (Union[AIMessage, str]) –

Return type

None

add_message(message: BaseMessage) None[source]

将消息附加到DynamoDB中的记录

Parameters

message (BaseMessage) –

Return type

None

add_messages(messages: Sequence[BaseMessage]) None

添加消息列表。

实现应该重写此方法,以有效地处理消息的批量添加,以避免不必要地往基础存储中进行往返。

参数:

messages: 要存储的 BaseMessage 对象列表。

Parameters

messages (Sequence[BaseMessage]) –

Return type

None

add_user_message(message: Union[HumanMessage, str]) None

方便的方法,用于向存储添加人类消息字符串。

请注意,这是一个方便的方法。代码应该更倾向于使用批量add_messages接口,以节省对底层持久性层的往返次数。

这种方法可能在将来的版本中被弃用。

参数:

message: 要添加的人类消息

Parameters

message (Union[HumanMessage, str]) –

Return type

None

async aget_messages() List[BaseMessage]

异步版本的获取消息。

可以重写此方法以提供高效的异步实现。

通常,获取消息可能涉及到与底层持久化层的IO操作。

Return type

List[BaseMessage]

clear() None[source]

清除DynamoDB中的会话内存

Return type

None

Examples using DynamoDBChatMessageHistory