线程¶
在 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
中的源代码
基础:TypedDict
LangMem 消息。
表示一条消息。
属性
名称 | 类型 | 描述 |
---|---|---|
id |
UUID
|
消息的唯一标识符。 |
content |
str | List[Dict[str, Any]]
|
消息的内容。 |
timestamp |
datetime
|
消息的时间戳。 |
user |
UserForMessage
|
与消息关联的用户。 |
langmem/schemas.py
中的源代码
表示类似消息的对象,可以是 OpenAIMessage 或 Message。
创建线程¶
创建新线程最简单的方法是通过客户端中的 add_messages()
方法隐式创建。您还可以使用 create_thread()
方法显式创建。
处理记忆¶
LangMem 异步处理消息和相关记忆,因此无需等待响应即可发送其他消息或继续聊天机器人的对话。
随着消息添加到线程中,LangMem 会定期根据您配置的记忆类型(用户状态、语义记忆、追加状态)提取和存储相关记忆。您可以使用 trigger_all_for_thread()
方法急切地触发记忆的形成。
消息中存在的任何 user_id
的记忆都将更新。
如果您已配置任何 thread_summary
记忆类型,这些类型也将被处理。