DynamoDBChatMessageHistory#

class langchain_community.chat_message_histories.dynamodb.DynamoDBChatMessageHistory(table_name: str, session_id: str, endpoint_url: str | None = None, primary_key_name: str = 'SessionId', key: Dict[str, str] | None = None, boto3_session: Session | None = None, kms_key_id: str | None = None, ttl: int | None = None, ttl_key_name: str = 'expireAt', history_size: int | None = None, history_messages_key: str | None = 'History', *, coerce_float_to_decimal: bool = False)[source]#

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

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

Parameters:
  • table_name (str) – DynamoDB表的名称

  • session_id (str) – 用于存储单个聊天会话消息的任意键。

  • endpoint_url (可选[str]) – 要连接的AWS端点的URL。此参数是可选的,对于测试目的非常有用,例如使用Localstack。如果您计划使用AWS云服务,通常不需要担心设置endpoint_url。

  • primary_key_name (str) – DynamoDB表的主键名称。此参数是可选的,默认为“SessionId”。

  • key (可选[Dict[str, str]]) – 一个可选的字典,包含自定义的主键和次键。 此参数是可选的,但在使用复合DynamoDB键或基于应用程序详细信息(如用户ID)隔离记录时非常有用。 此字典还可能包含全局和本地次索引键。

  • kms_key_id (Optional[str]) – 一个可选的AWS KMS密钥ID、AWS KMS密钥ARN或AWS KMS别名,用于客户端加密

  • ttl (可选[int]) – 可选的生存时间(TTL),以秒为单位。允许您为每个项目定义过期时间戳,指示何时可以从表中删除项目。DynamoDB 处理过期项目的删除,而不会消耗写入吞吐量。要在表上启用此功能,请遵循 [AWS DynamoDB 文档](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/time-to-live-ttl-how-to.html)

  • history_size (可选[int]) – 存储消息的最大数量。如果为None,则没有限制。如果不为None,则只存储最新的history_size条消息。

  • history_messages_key (Optional[str]) – 用于存储和更新聊天记录的消息的键

  • coerce_float_to_decimal (bool) – 如果为True,消息中的所有浮点值将被转换为Decimal。

  • boto3_session (可选[Session])

  • ttl_key_name (str)

属性

messages

从DynamoDB中检索消息

方法

__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中清除会话内存

__init__(table_name: str, session_id: str, endpoint_url: str | None = None, primary_key_name: str = 'SessionId', key: Dict[str, str] | None = None, boto3_session: Session | None = None, kms_key_id: str | None = None, ttl: int | None = None, ttl_key_name: str = 'expireAt', history_size: int | None = None, history_messages_key: str | None = 'History', *, coerce_float_to_decimal: bool = False)[source]#
Parameters:
  • table_name (str)

  • session_id (str)

  • endpoint_url (可选[str])

  • primary_key_name (str)

  • key (可选[字典[字符串, 字符串]])

  • boto3_session (可选[Session])

  • kms_key_id (可选[str])

  • ttl (可选[整数])

  • ttl_key_name (str)

  • history_size (可选[整数])

  • history_messages_key (可选[str])

  • coerce_float_to_decimal (bool)

async aadd_messages(messages: Sequence[BaseMessage]) None#

异步添加消息列表。

Parameters:

messages (Sequence[BaseMessage]) – 要存储的BaseMessage对象序列。

Return type:

async aclear() None#

异步从存储中移除所有消息

Return type:

add_ai_message(message: AIMessage | str) None#

向存储中添加AI消息字符串的便捷方法。

请注意,这是一个便捷方法。代码应优先使用批量 add_messages 接口,以减少与底层持久层的往返次数。

此方法可能在未来的版本中被弃用。

Parameters:

message (AIMessage | str) – 要添加的AI消息。

Return type:

add_message(message: BaseMessage) None[来源]#

将消息附加到DynamoDB中的记录

Parameters:

消息 (BaseMessage)

Return type:

add_messages(messages: Sequence[BaseMessage]) None#

添加消息列表。

实现应重写此方法,以高效地处理消息的批量添加,避免对底层存储进行不必要的往返。

Parameters:

messages (Sequence[BaseMessage]) – 要存储的BaseMessage对象序列。

Return type:

add_user_message(message: HumanMessage | str) None#

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

请注意,这是一个便捷方法。代码应优先使用批量 add_messages 接口,以减少对底层持久层的往返次数。

此方法可能在未来的版本中被弃用。

Parameters:

message (HumanMessage | str) – 要添加到存储中的人类消息。

Return type:

async aget_messages() list[BaseMessage]#

获取消息的异步版本。

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

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

Return type:

列表[BaseMessage]

clear() None[source]#

从DynamoDB清除会话内存

Return type:

使用 DynamoDBChatMessageHistory 的示例