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)方便的方法,用于向存储添加人类消息字符串。
异步版本的获取消息。
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]