终极指南:localGPT会话管理API全解析 - 创建、获取、链接与删除完整功能

【免费下载链接】localGPT Chat with your documents on your local device using GPT models. No data leaves your device and 100% private. 【免费下载链接】localGPT 项目地址: https://gitcode.com/GitHub_Trending/lo/localGPT

localGPT是一款强大的本地文档交互工具,让你能够在完全保护隐私的情况下与文档进行对话,所有数据处理均在本地设备完成。本文将详细介绍localGPT的会话管理API,包括创建、获取、链接和删除会话等核心功能,帮助开发者轻松集成和扩展这一强大的本地AI能力。

会话管理API核心功能概览

localGPT的会话管理系统是实现持续对话和状态跟踪的基础,通过API可以轻松管理用户会话生命周期。系统采用了高效的内存存储机制,同时支持实时进度跟踪,为用户提供流畅的交互体验。

localGPT会话管理界面 图1:localGPT主界面展示了会话管理功能区域,用户可以轻松创建和切换不同会话

会话创建:开启全新对话体验

创建会话是使用localGPT进行交互的第一步。系统通过生成唯一的session_id来标识每个会话,同时初始化相关的进度跟踪和连接管理机制。

rag_system/api_server_with_progress.py中,会话创建相关的核心代码实现了会话ID的生成和初始化:

def run_indexing_with_progress(file_paths: List[str], session_id: str):
    ServerSentEventsHandler.send_event(session_id, "status", {
        "session_id": session_id,
        "status": "starting",
        "message": "Beginning document indexing process"
    })

创建会话时,系统会自动初始化进度跟踪器,为后续的文档处理和交互提供基础:

step_tracker = RealtimeProgressTracker(total_steps, "Document Indexing", session_id)

会话获取:实时跟踪交互状态

获取会话状态是实现动态更新和进度展示的关键功能。localGPT提供了两种主要方式来获取会话信息:通过API直接查询和通过SSE(Server-Sent Events)实时推送。

rag_system/api_server_with_progress.py中,通过以下接口可以获取指定会话的进度信息:

def get_progress(self):
    session_id = params.get('session_id', [None])[0]
    progress_data = ACTIVE_PROGRESS_SESSIONS.get(session_id)
    if not progress_data:
        self.send_json_response({"error": "No active progress for this session"}, status_code=404)
    else:
        self.send_json_response({
            "session_id": session_id,
            "progress": progress_data
        })

同时,系统支持通过SSE建立持久连接,实时获取会话状态更新:

def stream_progress(self):
    session_id = params.get('session_id', [None])[0]
    ServerSentEventsHandler.add_connection(session_id, self)
    # 保持连接并持续发送更新

![会话进度跟踪界面](https://raw.gitcode.com/GitHub_Trending/lo/localGPT/raw/4d41c7d1713b16b216d8e062e51a5dd88b20b054/Documentation/images/Retrieval Process.png?utm_source=gitcode_repo_files) 图2:localGPT会话进度跟踪界面,实时显示文档处理进度和状态

会话链接:多端同步与协作

会话链接功能允许不同客户端或模块通过session_id连接到同一个会话,实现状态共享和协作。这一功能通过维护活跃连接列表来实现:

class ServerSentEventsHandler:
    active_connections: Dict[str, Callable] = {}
    
    @classmethod
    def add_connection(cls, session_id: str, response_handler):
        cls.active_connections[session_id] = response_handler
        logger.info(f"SSE connection added for session: {session_id}")
    
    @classmethod
    def remove_connection(cls, session_id: str):
        if session_id in cls.active_connections:
            del cls.active_connections[session_id]

通过这种机制,多个客户端可以同时连接到同一个会话,接收实时更新,为协作场景提供了可能。

会话删除:资源释放与隐私保护

当会话结束或不再需要时,删除会话可以释放系统资源并保护用户隐私。localGPT通过移除会话连接和清理相关数据来实现会话删除:

@classmethod
def remove_connection(cls, session_id: str):
    if session_id in cls.active_connections:
        del cls.active_connections[session_id]
        logger.info(f"SSE connection removed for session: {session_id}")

此外,系统还使用LRU缓存机制自动管理会话历史,限制存储的会话数量,进一步优化资源使用:

# 🚀 NEW: In-memory store for conversational history per session
self.chat_histories: LRUCache = LRUCache(maxsize=100) # Stores history for 100 recent sessions

![会话设置界面](https://raw.gitcode.com/GitHub_Trending/lo/localGPT/raw/4d41c7d1713b16b216d8e062e51a5dd88b20b054/Documentation/images/Retrieval and Chat Settings.png?utm_source=gitcode_repo_files) 图3:localGPT会话设置界面,用户可以管理会话参数和隐私选项

会话管理API的实际应用场景

localGPT的会话管理API为各种应用场景提供了灵活的支持,以下是几个典型的使用案例:

1. 多文档批量处理

通过创建单个会话处理多个文档,系统会跟踪整体进度,并在完成后提供统一的检索接口:

file_paths = ["doc1.pdf", "doc2.txt", "doc3.docx"]
session_id = "batch-processing-123"
run_indexing_with_progress(file_paths, session_id)

2. 长时间运行任务监控

对于大型文档处理任务,客户端可以通过SSE连接实时监控进度:

const eventSource = new EventSource(`/stream?session_id=${sessionId}`);
eventSource.onmessage = function(event) {
  const data = JSON.parse(event.data);
  updateProgressBar(data.progress.percentage);
};

3. 会话上下文隔离

系统支持会话级别的缓存隔离,确保不同会话之间的数据不会相互干扰:

# If set to "session", semantic-cache hits will be restricted to the same chat session.
# Otherwise (default "global") answers can be reused across sessions.
self.cache_scope = self.pipeline_configs.get("cache_scope", "global")  # 'global' or 'session'

总结与最佳实践

localGPT的会话管理API提供了创建、获取、链接和删除会话的完整功能,为构建本地AI应用提供了坚实的基础。以下是使用这些API的最佳实践:

  1. 合理设置会话过期策略:根据应用需求设置适当的会话超时和缓存大小
  2. 使用SSE进行实时更新:对于需要实时反馈的场景,优先使用Server-Sent Events
  3. 实现会话持久化:对于需要长期保存的会话,可以扩展系统将会话数据保存到本地文件
  4. 监控会话资源使用:定期检查活跃会话数量,避免资源耗尽

通过充分利用这些API,开发者可以构建出功能丰富、用户体验优秀的本地AI应用,同时确保数据隐私和安全。要了解更多细节,请参考项目的官方文档Documentation/api_reference.md

【免费下载链接】localGPT Chat with your documents on your local device using GPT models. No data leaves your device and 100% private. 【免费下载链接】localGPT 项目地址: https://gitcode.com/GitHub_Trending/lo/localGPT

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐