SQLChatMessageHistory#

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

Chat message history stored in an SQL database.

Example

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()

Initialize with a SQLChatMessageHistory instance.

Parameters:
  • session_id (str) – Indicates the id of the same session.

  • connection_string (str | None) – String parameter configuration for connecting to the database.

  • table_name (str) – Table name used to save data.

  • session_id_field_name (str) – The name of field of session_id.

  • custom_message_converter (BaseMessageConverter | None) – Custom message converter for converting database data and BaseMessage

  • connection (None | AsyncEngine | Engine | str) – Database connection object, which can be a string containing connection configuration, Engine object or AsyncEngine object.

  • engine_args (Dict[str, Any] | None) – Additional configuration for creating database engines.

  • async_mode (bool | None) – Whether it is an asynchronous connection.

Attributes

Session

messages

Retrieve all messages from db

Methods

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

Initialize with a SQLChatMessageHistory instance.

aadd_message(message)

Add a Message object to the store.

aadd_messages(messages)

Async add a list of messages.

aclear()

Clear session memory from db

add_ai_message(message)

Convenience method for adding an AI message string to the store.

add_message(message)

Append the message to the record in db

add_messages(messages)

Add a list of messages.

add_user_message(message)

Convenience method for adding a human message string to the store.

aget_messages()

Retrieve all messages from db

clear()

Clear session memory from db

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

Initialize with a SQLChatMessageHistory instance.

Parameters:
  • session_id (str) – Indicates the id of the same session.

  • connection_string (str | None) – String parameter configuration for connecting to the database.

  • table_name (str) – Table name used to save data.

  • session_id_field_name (str) – The name of field of session_id.

  • custom_message_converter (BaseMessageConverter | None) – Custom message converter for converting database data and BaseMessage

  • connection (None | AsyncEngine | Engine | str) – Database connection object, which can be a string containing connection configuration, Engine object or AsyncEngine object.

  • engine_args (Dict[str, Any] | None) – Additional configuration for creating database engines.

  • async_mode (bool | None) – Whether it is an asynchronous connection.

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

Add a Message object to the store.

Parameters:

message (BaseMessage) – A BaseMessage object to store.

Return type:

None

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

Async add a list of messages.

Parameters:

messages (Sequence[BaseMessage]) – A sequence of BaseMessage objects to store.

Return type:

None

async aclear() β†’ None[source]#

Clear session memory from db

Return type:

None

add_ai_message(message: AIMessage | str) β†’ None#

Convenience method for adding an AI message string to the store.

Please note that this is a convenience method. Code should favor the bulk add_messages interface instead to save on round-trips to the underlying persistence layer.

This method may be deprecated in a future release.

Parameters:

message (AIMessage | str) – The AI message to add.

Return type:

None

add_message(message: BaseMessage) β†’ None[source]#

Append the message to the record in db

Parameters:

message (BaseMessage)

Return type:

None

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

Add a list of messages.

Implementations should over-ride this method to handle bulk addition of messages in an efficient manner to avoid unnecessary round-trips to the underlying store.

Parameters:

messages (Sequence[BaseMessage]) – A sequence of BaseMessage objects to store.

Return type:

None

add_user_message(message: HumanMessage | str) β†’ None#

Convenience method for adding a human message string to the store.

Please note that this is a convenience method. Code should favor the bulk add_messages interface instead to save on round-trips to the underlying persistence layer.

This method may be deprecated in a future release.

Parameters:

message (HumanMessage | str) – The human message to add to the store.

Return type:

None

async aget_messages() β†’ List[BaseMessage][source]#

Retrieve all messages from db

Return type:

List[BaseMessage]

clear() β†’ None[source]#

Clear session memory from db

Return type:

None

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

List[BaseMessage]

Examples using SQLChatMessageHistory