LLM 会话管理器
SemanticSessionManager
class SemanticSessionManager(name, session_tag=None, prefix=None, vectorizer=None, distance_threshold=0.3, redis_client=None, redis_url='redis://localhost:6379', connection_kwargs={}, overwrite=False, **kwargs)
基类: BaseSessionManager
使用索引初始化会话内存
会话管理器存储当前和先前的用户文本提示和 LLM 响应,以便用会话上下文丰富未来的提示。会话历史记录存储在单个用户或 LLM 提示和响应中。
- 参数
- name (str) – 会话管理器索引的名称。
- session_tag (Optional [ str ]) – 添加到条目以链接到特定会话的标签。默认为实例 ULID。
- prefix (Optional [ str ]) – 此会话数据的键前缀。默认为 None,将替换为索引名称。
- vectorizer (Optional [ BaseVectorizer ]) – 用于创建嵌入的向量化器。
- distance_threshold (float) – 要包含在上下文中的最大语义距离。默认为 0.3。
- redis_client (Optional [ Redis ]) – Redis 客户端实例。默认为 None。
- redis_url (str , optional) – Redis URL。默认为 redis://localhost:6379。
- connection_kwargs (Dict [ str , Any ]) – Redis 客户端的连接参数。默认为空 {}。
- overwrite (bool) – 是否强制覆盖语义会话索引的模式。默认为 false。
建议的模式将支持从单个字符串中的提示或响应构建的单个向量嵌入。
add_message(message, session_tag=None)
将单个提示或响应插入会话内存。将为其关联一个时间戳,以便在检索后可以按顺序排序。
- 参数
- message (Dict [ str *,*str ]) – 用户提示或 LLM 响应。
- session_tag (Optional [ str ]) – 添加到条目以链接到特定会话的标签。默认为实例 ULID。
- 返回类型: None
add_messages(messages, session_tag=None)
将提示和响应列表插入会话内存。将为每个关联一个时间戳,以便在检索后可以按顺序排序。
- 参数
- messages (List [ Dict [ str , str ] ]) – 用户提示和 LLM 响应的列表。
- session_tag (Optional [ str ]) – 添加到条目以链接到特定会话的标签。默认为实例 ULID。
- 返回类型: None
clear()
清除聊天会话历史记录。
- 返回类型: None
delete()
清除所有对话键并移除搜索索引。
- 返回类型: None
drop(id=None)
从对话历史记录中移除特定交互。
- 参数: id (Optional [ str ]) – 要删除的会话条目的 ID。如果为 None,则删除最后一个条目。
- 返回类型: None
get_recent(top_k=5, as_text=False, raw=False, session_tag=None)
按顺序检索最近的对话历史记录。
- 参数
- top_k (int) – 要返回的先前交互的数量。默认为 5。
- as_text (bool) – 是否将对话作为单个字符串返回,或作为交替的提示和响应列表返回。
- raw (bool) – 是否返回完整的 Redis 哈希条目或仅返回提示和响应。
- session_tag (Optional [ str ]) – 添加到条目以链接到特定会话的标签。默认为实例 ULID。
-
- 返回值
- 会话的单个字符串转录
- 如果 as_text 为 false,则返回字符串列表。
- 返回类型: Union[str, List[str]]
- 抛出: ValueError – 如果 top_k 不是大于或等于 0 的整数。
get_relevant(prompt, as_text=False, top_k=5, fall_back=False, session_tag=None, raw=False, distance_threshold=None)
在聊天历史记录中搜索与指定提示在语义上相关的信息。
此方法使用向量相似度搜索,以文本提示作为输入。它会检查语义相似的提示和响应,并获取与下一个 LLM 调用最相关的 top k 先前提示或响应作为上下文。
- 参数
- prompt (str) – 要在会话内存中搜索的消息文本。
- as_text (bool) – 是否将提示和响应作为文本返回。
- JSON (或作为)
- top_k (int) – 要返回的先前消息的数量。默认为 5。
- session_tag (Optional [ str ]) – 添加到条目以链接到特定会话的标签。默认为实例 ULID。
- distance_threshold (Optional [ float ]) – 语义向量距离的阈值。
- fall_back (bool) – 如果未找到相关上下文,是否回退到最近的对话历史记录。
- raw (bool) – 是否返回完整的 Redis 哈希条目或仅返回消息。
- 返回值: 返回字符串列表,或包含最相关提示和响应的 JSON 列表。
- 返回类型: Union[List[str], List[Dict[str,str]]
抛出 ValueError: 如果 top_k 不是大于或等于 0 的整数。
store(prompt, response, session_tag=None)
将提示:响应对插入会话内存。将为每条消息关联一个时间戳,以便在检索后可以按顺序排序。
- 参数
- prompt (str) – 发送给 LLM 的用户提示。
- response (str) – 对应的 LLM 响应。
- session_tag (Optional [ str ]) – 添加到条目以链接到特定会话的标签。默认为实例 ULID。
- 返回类型: None
属性 messages: List[str] | List[Dict[str, str]]
返回完整的聊天历史记录。
StandardSessionManager
class StandardSessionManager(name, session_tag=None, prefix=None, redis_client=None, redis_url='redis://localhost:6379', connection_kwargs={}, **kwargs)
基类: BaseSessionManager
初始化会话内存
会话管理器存储当前和先前的用户文本提示和 LLM 响应,以便用会话上下文丰富未来的提示。会话历史记录存储在单个用户或 LLM 提示和响应中。
- 参数
- name (str) – 会话管理器索引的名称。
- session_tag (Optional [ str ]) – 添加到条目以链接到特定会话的标签。默认为实例 ULID。
- prefix (Optional [ str ]) – 此会话数据的键前缀。默认为 None,将替换为索引名称。
- redis_client (Optional [ Redis ]) – Redis 客户端实例。默认为 None。
- redis_url (str , optional) – Redis URL。默认为 redis://localhost:6379。
- connection_kwargs (Dict [ str , Any ]) – Redis 客户端的连接参数。默认为空 {}。
建议的模式将支持从单个字符串中的提示和响应构建的单个组合向量嵌入。
add_message(message, session_tag=None)
将单个提示或响应插入会话内存。将为其关联一个时间戳,以便在检索后可以按顺序排序。
- 参数
- message (Dict [ str *,*str ]) – 用户提示或 LLM 响应。
- session_tag (Optional [ str ]) – 添加到条目以链接到特定会话的标签。默认为实例 ULID。
- 返回类型: None
add_messages(messages, session_tag=None)
将提示和响应列表插入会话内存。将为每个关联一个时间戳,以便在检索后可以按顺序排序。
- 参数
- messages (List [ Dict [ str , str ] ]) – 用户提示和 LLM 响应的列表。
- session_tag (Optional [ str ]) – 添加到条目以链接到特定会话的标签。默认为实例 ULID。
- 返回类型: None
clear()
清除聊天会话历史记录。
- 返回类型: None
delete()
清除所有对话键并移除搜索索引。
- 返回类型: None
drop(id=None)
从对话历史记录中移除特定交互。
- 参数: id (Optional [ str ]) – 要删除的会话条目的 ID。如果为 None,则删除最后一个条目。
- 返回类型: None
get_recent(top_k=5, as_text=False, raw=False, session_tag=None)
按顺序检索最近的对话历史记录。
- 参数
- top_k (int) – 要返回的先前消息的数量。默认为 5。
- as_text (bool) – 是否将对话作为单个字符串返回,或作为交替的提示和响应列表返回。
- raw (bool) – 是否返回完整的 Redis 哈希条目或仅返回提示和响应。
- session_tag (Optional [ str ]) – 添加到条目以链接到特定会话的标签。默认为实例 ULID。
-
- 返回值
- 会话的单个字符串转录
- 如果 as_text 为 false,则返回字符串列表。
- 返回类型: Union[str, List[str]]
- 抛出: ValueError – 如果 top_k 不是大于或等于 0 的整数。
store(prompt, response, session_tag=None)
将提示:响应对插入会话内存。将为每次交互关联一个时间戳,以便在检索后可以按顺序排序。
- 参数
- prompt (str) – 发送给 LLM 的用户提示。
- response (str) – 对应的 LLM 响应。
- session_tag (Optional [ str ]) – 添加到条目以链接到特定会话的标签。默认为实例 ULID。
- 返回类型: None
属性 messages: List[str] | List[Dict[str, str]]
返回完整的聊天历史记录。