SQL聊天消息历史#

class langchain_community.chat_message_histories.sql.SQLChatMessageHistory(session_id: str, connection_string: str | None = None, table_name: str = 'message_store', session_id_field_name: str = 'session_id', custom_message_converter: BaseMessageConverter | None = None, connection: None | AsyncEngine | Engine | str = None, engine_args: Dict[str, Any] | None = None, async_mode: bool | None = None)[source]#

聊天消息历史存储在SQL数据库中。

示例

from langchain_core.messages import HumanMessage

from langchain_community.chat_message_histories import SQLChatMessageHistory

# create sync sql message history by connection_string
message_history = SQLChatMessageHistory(
    session_id='foo', connection_string='sqlite///:memory.db'
)
message_history.add_message(HumanMessage("hello"))
message_history.message

# create async sql message history using aiosqlite
# from sqlalchemy.ext.asyncio import create_async_engine
#
# async_engine = create_async_engine("sqlite+aiosqlite:///memory.db")
# async_message_history = SQLChatMessageHistory(
#     session_id='foo', connection=async_engine,
# )
# await async_message_history.aadd_message(HumanMessage("hello"))
# await async_message_history.aget_messages()

使用 SQLChatMessageHistory 实例进行初始化。

Parameters:
  • session_id (str) – 表示同一会话的ID。

  • connection_string (str | None) – 用于连接数据库的字符串参数配置。

  • table_name (str) – 用于保存数据的表名。

  • session_id_field_name (str) – session_id字段的名称。

  • custom_message_converter (BaseMessageConverter | None) – 自定义消息转换器,用于转换数据库数据和BaseMessage

  • connection (None | AsyncEngine | Engine | str) – 数据库连接对象,可以是一个包含连接配置的字符串、Engine对象或AsyncEngine对象。

  • engine_args (Dict[str, Any] | None) – 用于创建数据库引擎的额外配置。

  • async_mode (bool | None) – 是否为异步连接。

属性

Session

messages

从数据库中检索所有消息

方法

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

使用 SQLChatMessageHistory 实例进行初始化。

aadd_message(message)

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

aadd_messages(messages)

异步添加消息列表。

aclear()

从数据库中清除会话内存

add_ai_message(message)

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

add_message(message)

将消息追加到数据库中的记录

add_messages(messages)

添加消息列表。

add_user_message(message)

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

aget_messages()

从数据库中检索所有消息

clear()

从数据库中清除会话内存

get_messages()

__init__(session_id: str, connection_string: str | None = None, table_name: str = 'message_store', session_id_field_name: str = 'session_id', custom_message_converter: BaseMessageConverter | None = None, connection: None | AsyncEngine | Engine | str = None, engine_args: Dict[str, Any] | None = None, async_mode: bool | None = None)[来源]#

使用 SQLChatMessageHistory 实例进行初始化。

Parameters:
  • session_id (str) – 表示同一会话的ID。

  • connection_string (str | None) – 用于连接数据库的字符串参数配置。

  • table_name (str) – 用于保存数据的表名。

  • session_id_field_name (str) – session_id字段的名称。

  • custom_message_converter (BaseMessageConverter | None) – 自定义消息转换器,用于转换数据库数据和BaseMessage

  • connection (None | AsyncEngine | Engine | str) – 数据库连接对象,可以是一个包含连接配置的字符串、Engine对象或AsyncEngine对象。

  • engine_args (Dict[str, Any] | None) – 用于创建数据库引擎的额外配置。

  • async_mode (bool | None) – 是否为异步连接。

async aadd_message(message: BaseMessage) None[source]#

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

Parameters:

消息 (BaseMessage) – 一个用于存储的BaseMessage对象。

Return type:

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

异步添加消息列表。

Parameters:

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

Return type:

async aclear() None[source]#

从数据库中清除会话内存

Return type:

add_ai_message(message: AIMessage | str) None#

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

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

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

Parameters:

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

Return type:

add_message(message: BaseMessage) None[source]#

将消息附加到数据库中的记录

Parameters:

消息 (BaseMessage)

Return type:

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

添加消息列表。

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

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][source]#

从数据库中检索所有消息

Return type:

列表[BaseMessage]

clear() None[source]#

从数据库中清除会话内存

Return type:

get_messages() List[BaseMessage][source]#
Return type:

列表[BaseMessage]

使用 SQLChatMessageHistory 的示例