菜单

用户界面

相关源文件

PrivateGPT 的用户界面 (UI) 提供了一个基于 Web 的界面,用于与所有系统功能进行交互。本文档涵盖了 UI 架构、组件、模式和主要功能。有关基于 API 的交互,请参阅API 参考页面。

概述

PrivateGPT 提供了一个功能丰富的 UI,该 UI 使用 Gradio 构建,允许用户进行以下操作:

  • 上传和管理文档
  • 使用 RAG 驱动的响应与文档聊天
  • 在文档中搜索特定内容
  • 生成文档内容的摘要
  • 通过基本聊天功能直接与 LLM 交互

UI 在用户和底层 PrivateGPT 服务之间架起了一座桥梁,为基于文档的 AI 交互提供了统一的界面。

来源: private_gpt/ui/ui.py73-96 README.md39-41

UI 架构

UI 组件被实例化为一个单例类 PrivateGptUi,它与主应用程序集成。它被设计为可以挂载到 FastAPI 服务器中或作为独立应用程序运行。

来源: private_gpt/ui/ui.py82-107 private_gpt/ui/ui.py40-52

UI 组件

UI 由几个关键组件组成,它们协同工作以提供全面的用户体验:

1. 模式选择器

模式选择器允许用户在不同的操作模式之间切换:

模式描述目的
RAG检索增强生成从选定文件中获取上下文相关答案
搜索文档检索在选定文件中查找相关的文本片段
基础直接 LLM 交互仅使用 LLM 的训练数据与其聊天
摘要文档摘要生成选定文档的摘要

每种模式都会改变聊天界面的行为,并使用不同的后端服务来处理用户查询。

来源: private_gpt/ui/ui.py398-408 private_gpt/ui/ui.py256-267

2. 文件管理面板

文件管理面板支持文档操作:

  • 上传文件:向系统添加新文档
  • 查看已摄入文件:查看所有当前可用的文档
  • 选择文件:选择特定文档进行查询或删除
  • 删除文件:从系统中删除单个或所有文档

文件上传后,将由摄入服务处理,该服务负责解析、分块和索引。

来源: private_gpt/ui/ui.py409-483 private_gpt/ui/ui.py298-364

3. 系统提示编辑器

系统提示编辑器允许通过系统提示自定义 LLM 的行为。每种模式都有一个默认系统提示,可以进行修改以实现不同的结果。

来源: private_gpt/ui/ui.py484-501 private_gpt/ui/ui.py237-253

4. 聊天界面

聊天界面是用户与系统交互的主要区域:

  • 输入区:用于输入查询或指令
  • 聊天历史:显示对话线程
  • 响应区:在适用时显示带有来源的响应
  • 模型信息:显示活动的 LLM 和模型名称

来源: private_gpt/ui/ui.py549-562 private_gpt/ui/ui.py109-234

交互流程

以下是 PrivateGPT UI 中的主要交互流程:

文档摄入流程

来源: private_gpt/ui/ui.py298-320

RAG 模式聊天流程

来源: private_gpt/ui/ui.py175-194

搜索模式流程

来源: private_gpt/ui/ui.py202-214

摘要模式流程

来源: private_gpt/ui/ui.py215-233 private_gpt/server/recipes/summarize/summarize_service.py157-172

系统集成

UI 通过依赖注入与 PrivateGPT 系统的其余部分集成,在初始化期间接收服务实例。它可以挂载到 FastAPI 应用程序中或作为独立应用程序运行。

来源: private_gpt/ui/ui.py573-582 private_gpt/ui/ui.py585-589

UI自定义

UI 的外观和行为可以通过以下方式自定义:

  1. 设置:
    • 默认模式选择 (settings.ui.default_mode)
    • 每种模式的默认系统提示
    • 按钮可见性选项
  2. 自定义 CSS:
    • UI 应用自定义 CSS 进行布局和样式设计
    • 包含响应式设计元素
    • 自定义聊天界面外观

来源: private_gpt/ui/ui.py368-390

运行 UI

有两种方法可以运行 PrivateGPT UI:

  1. 作为 FastAPI 服务器的一部分:UI 在服务器启动时挂载到特定路径(通常是 /)。

  2. 独立模式:UI 可以通过直接执行 UI 模块来运行

    python -m private_gpt.ui.ui
    

以独立模式运行时,UI 将启动本地服务器并打开一个带有界面的浏览器窗口。

来源: private_gpt/ui/ui.py585-589

技术细节

来源处理

UI 有一个特殊的 Source 类,用于处理文档来源信息,当响应包含来自文档的上下文时,会显示这些信息。

当响应包含来源时,它们会追加在分隔符之后,并进行格式化以提高用户清晰度。

来源: private_gpt/ui/ui.py55-79 private_gpt/ui/ui.py123-137

聊天消息处理

聊天消息会经过几个步骤:

  1. 根据之前的交互构建消息历史
  2. 添加新的用户消息
  3. 如果存在,添加系统提示
  4. 根据模式通过相应的服务进行处理
  5. 格式化响应以供显示

支持多种响应类型:

  • 流式文本响应
  • 逐词响应
  • 来源丰富的响应

来源: private_gpt/ui/ui.py109-137

文件选择上下文

当选择特定文件时,UI 会创建一个 ContextFilter 对象,其中包含与所选文件名匹配的文档 ID,确保查询仅在选定文档中搜索。

此过滤器会传递给聊天和摘要服务,以将其操作限制在选定文档中。

来源: private_gpt/ui/ui.py179-187 private_gpt/ui/ui.py218-226

结论

PrivateGPT UI 提供了一个全面的界面,用于访问所有系统功能。它提供多种模式以实现不同类型的交互、强大的文件管理和可自定义的系统提示。该 UI 设计为用户友好型,同时展现了 PrivateGPT 系统强大的底层功能。