rag.chat_session

聊天会话模块 - 实现基于Haystack的聊天会话管理

Classes

ChatSession([session_id, rag_pipeline, ...])

聊天会话类

ChatSessionManager([rag_pipeline, ...])

聊天会话管理器

Citation(document_id, text[, metadata])

引用类

Message(role, content[, message_id, ...])

聊天消息类

class rag.chat_session.Message(role, content, message_id=None, timestamp=None, metadata=None)[source]

Bases: object

聊天消息类

__init__(role, content, message_id=None, timestamp=None, metadata=None)[source]

初始化聊天消息

Parameters:
  • role (str) – 消息角色,如”user”、”assistant”、”system”

  • content (str) – 消息内容

  • message_id (str, optional) – 消息ID,如果为None则自动生成

  • timestamp (float, optional) – 消息时间戳,如果为None则使用当前时间

  • metadata (dict, optional) – 消息元数据

to_dict()[source]

转换为字典

Returns:

消息字典

Return type:

dict

classmethod from_dict(data)[source]

从字典创建消息

Parameters:

data (dict) – 消息字典

Returns:

消息实例

Return type:

Message

class rag.chat_session.Citation(document_id, text, metadata=None)[source]

Bases: object

引用类

__init__(document_id, text, metadata=None)[source]

初始化引用

Parameters:
  • document_id (str) – 文档ID

  • text (str) – 引用文本

  • metadata (dict, optional) – 引用元数据

to_dict()[source]

转换为字典

Returns:

引用字典

Return type:

dict

classmethod from_dict(data)[source]

从字典创建引用

Parameters:

data (dict) – 引用字典

Returns:

引用实例

Return type:

Citation

class rag.chat_session.ChatSession(session_id=None, rag_pipeline=None, max_history_length=10, metadata=None)[source]

Bases: object

聊天会话类

__init__(session_id=None, rag_pipeline=None, max_history_length=10, metadata=None)[source]

初始化聊天会话

Parameters:
  • session_id (str, optional) – 会话ID,如果为None则自动生成

  • rag_pipeline (RAGPipeline, optional) – RAG管道

  • max_history_length (int) – 最大历史记录长度

  • metadata (dict, optional) – 会话元数据

add_message(role, content, message_id=None, metadata=None)[source]

添加消息

Parameters:
  • role (str) – 消息角色

  • content (str) – 消息内容

  • message_id (str, optional) – 消息ID

  • metadata (dict, optional) – 消息元数据

Returns:

添加的消息

Return type:

Message

add_citation(message_id, document_id, text, metadata=None)[source]

添加引用

Parameters:
  • message_id (str) – 消息ID

  • document_id (str) – 文档ID

  • text (str) – 引用文本

  • metadata (dict, optional) – 引用元数据

Returns:

添加的引用

Return type:

Citation

process_query(query, generation_kwargs=None)[source]

处理查询

Parameters:
  • query (str) – 用户查询

  • generation_kwargs (dict, optional) – 生成参数

Returns:

(回答消息, 检索到的文档列表)

Return type:

tuple

Raises:

ValueError – 如果RAG管道未设置

get_messages(limit=0)[source]

获取消息列表

Parameters:

limit (int) – 返回消息的数量限制,0表示返回所有消息

Returns:

消息字典列表

Return type:

list

get_last_message()[source]

获取最后一条消息

Returns:

消息字典,如果没有消息则返回None

Return type:

dict

clear_history()[source]

清空历史记录

set_rag_pipeline(rag_pipeline)[source]

设置RAG管道

Parameters:

rag_pipeline (RAGPipeline) – RAG管道实例

query(query, generation_kwargs=None, top_k=None)[source]

执行查询

Parameters:
  • query (str) – 用户查询

  • generation_kwargs (dict, optional) – 生成参数

  • top_k (int, optional) – 单次检索数量,省略时保留配置默认值

Returns:

查询结果,包含answer和documents

Return type:

dict

to_dict()[source]

转换为字典

Returns:

会话字典

Return type:

dict

classmethod from_dict(data, rag_pipeline=None)[source]

从字典创建会话

Parameters:
  • data (dict) – 会话字典

  • rag_pipeline (RAGPipeline, optional) – RAG管道

Returns:

会话实例

Return type:

ChatSession

class rag.chat_session.ChatSessionManager(rag_pipeline=None, max_sessions=100, default_max_history_length=10)[source]

Bases: object

聊天会话管理器

__init__(rag_pipeline=None, max_sessions=100, default_max_history_length=10)[source]

初始化聊天会话管理器

Parameters:
  • rag_pipeline (RAGPipeline, optional) – RAG管道

  • max_sessions (int) – 最大会话数量

  • default_max_history_length (int) – 默认最大历史记录长度

create_session(session_id=None, metadata=None, max_history_length=None)[source]

创建会话

Parameters:
  • session_id (str, optional) – 会话ID

  • metadata (dict, optional) – 会话元数据

  • max_history_length (int, optional) – 最大历史记录长度

Returns:

创建的会话

Return type:

ChatSession

get_session(session_id)[source]

获取会话

Parameters:

session_id (str) – 会话ID

Returns:

会话实例,如果不存在则返回None

Return type:

ChatSession

delete_session(session_id)[source]

删除会话

Parameters:

session_id (str) – 会话ID

Returns:

是否成功删除

Return type:

bool

get_all_sessions()[source]

获取所有会话

Returns:

会话ID到会话实例的映射

Return type:

dict

save_sessions(file_path)[source]

保存会话到文件

Parameters:

file_path (str) – 文件路径

Returns:

是否成功保存

Return type:

bool

load_sessions(file_path)[source]

从文件加载会话

Parameters:

file_path (str) – 文件路径

Returns:

是否成功加载

Return type:

bool