菜单

摘要服务

相关源文件

总结服务是PrivateGPT的核心组件,提供文档总结功能。它允许用户生成文本的简洁摘要,这些文本可以直接提供,也可以来自先前摄取的文档。此服务被实现为一个“配方”——一个预定义的用例,帮助用户使用PrivateGPT解决特定任务。

本文档涵盖了总结服务的架构、实现和使用。有关摄取或聊天等其他服务的信息,请参阅摄取服务聊天服务

架构概述

总结服务构建在PrivateGPT核心组件之上,利用检索增强生成(RAG)管道提供上下文感知的总结能力。

来源:private_gpt/server/recipes/summarize/summarize_service.py34-172 private_gpt/ui/ui.py24-25 private_gpt/server/recipes/summarize/summarize_router.py12-86

实现细节

SummarizeService 类

SummarizeService 类是总结功能的核心实现。

该服务使用LlamaIndex的SummaryIndex和树状总结技术来生成文档的全面摘要。它支持标准响应和流式响应。

关键功能:

  1. 文档过滤:可以使用ContextFilter参数根据文档ID过滤文档。
  2. 文本和上下文摘要:可以总结直接提供的文本、摄取的文档或两者兼有。
  3. 可定制总结:允许通过指令和提示参数进行定制。
  4. 流式支持:支持同步和流式响应模式。

来源:private_gpt/server/recipes/summarize/summarize_service.py34-172

默认提示

如果未提供自定义提示,则服务将使用默认提示。

Provide a comprehensive summary of the provided context information. 
The summary should cover all the key points and main ideas presented in 
the original text, while also condensing the information into a concise 
and easy-to-understand format. Please ensure that the summary includes 
relevant details and examples that support the main ideas, while avoiding 
any unnecessary information or repetition.

来源:private_gpt/server/recipes/summarize/summarize_service.py24-31

API 端点

该服务通过FastAPI公开了一个/v1/summarize端点。

该端点接受一个SummarizeBody对象,该对象包含以下参数:

  • text:要总结的可选文本。
  • use_context:一个布尔值,用于确定是否应使用摄取的文档。
  • context_filter:一个可选过滤器,用于指定要使用的文档。
  • prompt:用于总结的可选自定义提示。
  • instructions:用于指导摘要生成的可选指令。
  • stream:一个布尔值,用于启用流式响应。

来源:private_gpt/server/recipes/summarize/summarize_router.py12-86

UI 集成

总结服务已集成到PrivateGPT UI中,作为用户可以选择的模式之一。

UI允许用户:

  1. 选择“总结”模式。
  2. 选择要总结的特定文件。
  3. 提供指令以自定义摘要。
  4. 实时查看流式响应。

来源:private_gpt/ui/ui.py40-44 private_gpt/ui/ui.py215-233 private_gpt/ui/ui.py246-250

请求流程

下图说明了从API或UI到最终响应的完整总结请求流程。

来源:private_gpt/server/recipes/summarize/summarize_service.py69-138 private_gpt/server/recipes/summarize/summarize_router.py35-86

使用示例

API 使用

要通过API使用总结服务:

  1. 总结文本:向/v1/summarize提交一个带有文本的POST请求。

  2. 总结摄取的文档:使用来自摄取文档的上下文。

来源:private_gpt/server/recipes/summarize/summarize_router.py15-21 fern/openapi/openapi.json342-382

UI使用

在UI中:

  1. 点击模式选择下拉菜单中的“总结”模式。
  2. 选择性地选择要总结的特定文件。
  3. 在提示框中输入指令(例如,“总结这些文档的关键论点”)。
  4. 接收显示生成摘要的流式响应。

来源:private_gpt/ui/ui.py215-233 private_gpt/ui/ui.py40-44

配置

总结服务可以通过PrivateGPT的设置系统进行配置。相关设置包括:

设置描述默认
summarize.use_async是否对总结使用异步执行。可变
ui.default_summarization_system_promptUI总结模式下使用的默认提示。自定义提示

来源:private_gpt/server/recipes/summarize/summarize_service.py124-126 private_gpt/ui/ui.py246-250

与PrivateGPT的集成

总结服务已与PrivateGPT的其他组件完全集成。

来源:private_gpt/ui/ui.py23-26 private_gpt/ui/ui.py88-95

总结

总结服务为PrivateGPT提供了强大的文档总结能力,利用LLM和检索组件生成全面的摘要。它支持直接文本输入和摄取的文档总结,并可通过指令和提示进行自定义。该服务可通过API和UI接口访问,并支持流式响应以改善用户体验。