跳转到主内容

详细报告

概述

DetailedReport 类的灵感来源于最近的 STORM 论文,它是 GPT Researcher 的一个强大组件,旨在生成关于复杂主题的综合报告。它对于创建超出 LLM 输出典型限制的长篇内容特别有用。该类负责协调整个研究过程,将主查询分解为子主题,对每个子主题进行深入研究,并将结果整合成一份连贯、详细的报告。

该类位于 GPT Researcher GitHub 仓库backend/report_types/detailed_report.py 文件中,利用 GPTResearcher 代理的能力执行定向研究和内容生成。

主要特性

  • 将复杂主题分解为可管理的子主题
  • 对每个子主题进行深入研究
  • 生成包含引言、目录和正文的综合报告
  • 通过跟踪已撰写的内容来避免冗余
  • 支持异步操作以提高性能

类结构

初始化

DetailedReport 类通过以下参数进行初始化

  • query:主要的研究查询
  • report_type:报告的类型
  • report_source:报告的来源
  • source_urls:初始的源 URL 列表
  • config_path:配置文件的路径
  • tone:报告的语气(使用 Tone 枚举)
  • websocket:用于实时通信的 WebSocket
  • subtopics:可选的预定义子主题列表
  • headers:可选的 HTTP 请求头

工作原理

  1. DetailedReport 类首先对主查询进行初步研究。
  2. 然后,它将主题分解为多个子主题。
  3. 对于每个子主题,它会:
    • 进行重点研究
    • 生成章节标题草稿
    • 检索相关的已撰写内容以避免冗余
    • 撰写报告章节
  4. 最后,它将所有子主题的报告合并,添加目录,并包含参考文献,从而创建最终的详细报告。

使用示例

以下是如何在您的项目中使用 DetailedReport 类的示例:

import asyncio
from fastapi import WebSocket
from gpt_researcher.utils.enum import Tone
from backend.report_type import DetailedReport

async def generate_report(websocket: WebSocket):
detailed_report = DetailedReport(
query="The impact of artificial intelligence on modern healthcare",
report_type="research_report",
report_source="web_search",
source_urls=[], # You can provide initial source URLs if available
config_path="path/to/config.yaml",
tone=Tone.FORMAL,
websocket=websocket,
subtopics=[], # You can provide predefined subtopics if desired
headers={} # Add any necessary HTTP headers
)

final_report = await detailed_report.run()
return final_report

# In your FastAPI app
@app.websocket("/generate_report")
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
report = await generate_report(websocket)
await websocket.send_text(report)

此示例演示了如何创建一个 DetailedReport 实例并运行它,以生成一份关于人工智能对医疗保健影响的综合报告。

结论

DetailedReport 类是一个用于生成关于复杂主题的深入、结构良好报告的复杂工具。通过将主查询分解为子主题并利用 GPT Researcher 的强大功能,它可以生成超出 LLM 输出典型限制的内容。这使其成为研究人员、内容创作者以及任何需要关于特定主题的详细、研究充分信息的人的宝贵资产。