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)用于将人类消息字符串添加到存储中的便捷方法。
获取消息的异步版本。
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]
使用 DynamoDBChatMessageHistory 的示例