跳至内容

线程

在 LangMem 中,线程表示用户与您的聊天机器人的对话。每个线程包含

  • id:线程的唯一标识符
  • messages:对话中交换的消息列表
  • metadata(可选):关于线程的其他数据

消息

消息可以遵循 OpenAI 的格式,并包含其他元数据,供 LangMem 指示其如何持久化记忆。

  • role:消息发送者的角色(例如,“用户”、“助手”)
  • content:消息的文本内容
  • name(可选):用户的姓名(如果可用)
  • metadata(可选):关于消息或用户的其他数据。元数据可以包含
    • 一个可选的 user_id 字段,其中包含您希望保留其记忆的用户
    • 一个可选的 timestamp 字段,如果您希望向服务发布更多消息,则添加重复数据删除。

基础:TypedDict

OpenAI 消息。

表示 OpenAI 消息,包含可选的用户元数据,以指示 LangMem 为用户处理记忆。

属性

名称 类型 描述
content str | List[dict]

消息的内容。

role str

消息发送者的角色。

name Optional[str]

消息发送者的姓名。

metadata Optional[Union[Metadata, Dict[str, Any]]]

消息的其他元数据。

langmem/schemas.py 中的源代码
class OpenAIMessage(TypedDict, total=False):
    """OpenAI Message.

    Represents an OpenAI message, with optional user metadata to direct
    LangMem to process memories for the user.

    Attributes:
        content (str | List[dict]): The content of the message.
        role (str): The role of the message sender.
        name (Optional[str]): The name of the message sender.
        metadata (Optional[Union[Metadata, Dict[str, Any]]]): Additional metadata for the message.
    """

    content: str | List[dict]
    role: str
    name: Optional[str]
    metadata: Optional[Union[Metadata, Dict[str, Any]]]

基础:TypedDict

LangMem 消息。

表示一条消息。

属性

名称 类型 描述
id UUID

消息的唯一标识符。

content str | List[Dict[str, Any]]

消息的内容。

timestamp datetime

消息的时间戳。

user UserForMessage

与消息关联的用户。

langmem/schemas.py 中的源代码
class Message(TypedDict, total=False):
    """LangMem Message.

    Represents a message.

    Attributes:
        id (uuid.UUID): The unique identifier of the message.
        content (str | List[Dict[str, Any]]): The content of the message.
        timestamp (datetime): The timestamp of the message.
        user (UserForMessage): The user associated with the message.
    """

    id: uuid.UUID
    content: str | List[Dict[str, Any]]
    timestamp: datetime
    user: UserForMessage

表示类似消息的对象,可以是 OpenAIMessage 或 Message。

创建线程

创建新线程最简单的方法是通过客户端中的 add_messages() 方法隐式创建。您还可以使用 create_thread() 方法显式创建。

处理记忆

LangMem 异步处理消息和相关记忆,因此无需等待响应即可发送其他消息或继续聊天机器人的对话。

随着消息添加到线程中,LangMem 会定期根据您配置的记忆类型(用户状态、语义记忆、追加状态)提取和存储相关记忆。您可以使用 trigger_all_for_thread() 方法急切地触发记忆的形成。

消息中存在的任何 user_id 的记忆都将更新。

如果您已配置任何 thread_summary 记忆类型,这些类型也将被处理。