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)用于将人类消息字符串添加到存储中的便捷方法。
从数据库中检索所有消息
clear
()从数据库中清除会话内存
- __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:
无
- 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]
- get_messages() List[BaseMessage] [source]#
- Return type:
列表[BaseMessage]
使用 SQLChatMessageHistory 的示例