langchain_core.chat_history.BaseChatMessageHistory

class langchain_core.chat_history.BaseChatMessageHistory[source]

抽象基类,用于存储聊天消息历史记录。

实现指南:

期望实现覆盖以下方法中的全部或部分:

  • add_messages:用于批量添加消息的同步变体

  • aadd_messages:用于批量添加消息的异步变体

  • messages:用于获取消息的同步变体

  • aget_messages:用于获取消息的异步变体

  • clear:用于清除消息的同步变体

  • aclear:用于清除消息的异步变体

add_messages 包含一个默认实现,用于对序列中的每条消息调用 add_message。这是为了向后兼容现有实现,这些实现仅具有 add_message。

异步变体都有调用同步变体的默认实现。实现者可以选择覆盖异步实现,以提供真正的异步实现。

使用指南:

在用于更新历史记录时,用户应优先使用 add_messages 而不是 add_message 或其他变体,如 add_user_messageadd_ai_message,以避免不必要的往返到底层持久性层。

示例:显示一个默认实现。

class FileChatMessageHistory(BaseChatMessageHistory):
    storage_path:  str
    session_id: str

   @property
   def messages(self):
       with open(os.path.join(storage_path, session_id), 'r:utf-8') as f:
           messages = json.loads(f.read())
        return messages_from_dict(messages)

   def add_messages(self, messages: Sequence[BaseMessage]) -> None:
       all_messages = list(self.messages) # Existing messages
       all_messages.extend(messages) # Add new messages

       serialized = [message_to_dict(message) for message in all_messages]
       # Can be further optimized by only writing new messages
       # using append mode.
       with open(os.path.join(storage_path, session_id), 'w') as f:
           json.dump(f, messages)

   def clear(self):
       with open(os.path.join(storage_path, session_id), 'w') as f:
           f.write("[]")

Attributes

messages

一个返回消息列表的属性或特性。

Methods

__init__()

aadd_messages(messages)

添加一个消息列表。

aclear()

从存储中删除所有消息。

add_ai_message(message)

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

add_message(message)

将一个消息对象添加到存储中。

add_messages(messages)

添加消息列表。

add_user_message(message)

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

aget_messages()

异步版本的获取消息。

clear()

从存储中删除所有消息。

__init__()
async aadd_messages(messages: Sequence[BaseMessage]) None[source]

添加一个消息列表。

参数:

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

Parameters

messages (Sequence[BaseMessage]) –

Return type

None

async aclear() None[source]

从存储中删除所有消息。

Return type

None

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

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

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

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

参数:

message: 要添加的AI消息。

Parameters

message (Union[AIMessage, str]) –

Return type

None

add_message(message: BaseMessage) None[source]

将一个消息对象添加到存储中。

参数:

message: 要存储的BaseMessage对象。

Parameters

message (BaseMessage) –

Return type

None

add_messages(messages: Sequence[BaseMessage]) None[source]

添加消息列表。

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

参数:

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

Parameters

messages (Sequence[BaseMessage]) –

Return type

None

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

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

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

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

参数:

message: 要添加的人类消息

Parameters

message (Union[HumanMessage, str]) –

Return type

None

async aget_messages() List[BaseMessage][source]

异步版本的获取消息。

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

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

Return type

List[BaseMessage]

abstract clear() None[source]

从存储中删除所有消息。

Return type

None

Examples using BaseChatMessageHistory