详细报告
概述
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:用于实时通信的 WebSocketsubtopics:可选的预定义子主题列表headers:可选的 HTTP 请求头
工作原理
DetailedReport类首先对主查询进行初步研究。- 然后,它将主题分解为多个子主题。
- 对于每个子主题,它会:
- 进行重点研究
- 生成章节标题草稿
- 检索相关的已撰写内容以避免冗余
- 撰写报告章节
- 最后,它将所有子主题的报告合并,添加目录,并包含参考文献,从而创建最终的详细报告。
使用示例
以下是如何在您的项目中使用 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 输出典型限制的内容。这使其成为研究人员、内容创作者以及任何需要关于特定主题的详细、研究充分信息的人的宝贵资产。