PrivateGPT 的用户界面 (UI) 提供了一个基于 Web 的界面,用于与所有系统功能进行交互。本文档涵盖了 UI 架构、组件、模式和主要功能。有关基于 API 的交互,请参阅API 参考页面。
PrivateGPT 提供了一个功能丰富的 UI,该 UI 使用 Gradio 构建,允许用户进行以下操作:
UI 在用户和底层 PrivateGPT 服务之间架起了一座桥梁,为基于文档的 AI 交互提供了统一的界面。
来源: private_gpt/ui/ui.py73-96 README.md39-41
UI 组件被实例化为一个单例类 PrivateGptUi,它与主应用程序集成。它被设计为可以挂载到 FastAPI 服务器中或作为独立应用程序运行。
来源: private_gpt/ui/ui.py82-107 private_gpt/ui/ui.py40-52
UI 由几个关键组件组成,它们协同工作以提供全面的用户体验:
模式选择器允许用户在不同的操作模式之间切换:
| 模式 | 描述 | 目的 |
|---|---|---|
| RAG | 检索增强生成 | 从选定文件中获取上下文相关答案 |
| 搜索 | 文档检索 | 在选定文件中查找相关的文本片段 |
| 基础 | 直接 LLM 交互 | 仅使用 LLM 的训练数据与其聊天 |
| 摘要 | 文档摘要 | 生成选定文档的摘要 |
每种模式都会改变聊天界面的行为,并使用不同的后端服务来处理用户查询。
来源: private_gpt/ui/ui.py398-408 private_gpt/ui/ui.py256-267
文件管理面板支持文档操作:
文件上传后,将由摄入服务处理,该服务负责解析、分块和索引。
来源: private_gpt/ui/ui.py409-483 private_gpt/ui/ui.py298-364
系统提示编辑器允许通过系统提示自定义 LLM 的行为。每种模式都有一个默认系统提示,可以进行修改以实现不同的结果。
来源: private_gpt/ui/ui.py484-501 private_gpt/ui/ui.py237-253
聊天界面是用户与系统交互的主要区域:
来源: private_gpt/ui/ui.py549-562 private_gpt/ui/ui.py109-234
以下是 PrivateGPT UI 中的主要交互流程:
来源: private_gpt/ui/ui.py298-320
来源: 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 的外观和行为可以通过以下方式自定义:
settings.ui.default_mode)来源: private_gpt/ui/ui.py368-390
有两种方法可以运行 PrivateGPT UI:
作为 FastAPI 服务器的一部分:UI 在服务器启动时挂载到特定路径(通常是 /)。
独立模式: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
聊天消息会经过几个步骤:
支持多种响应类型:
来源: 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 系统强大的底层功能。