Preise

Projektüberblick

Quelldateien

Diese Seite wurde aus den folgenden Quelldateien erstellt:

GPT Researcher ist ein Open-Source-Forschungsagent, der für webbasierte und lokale Recherchen zu beliebigen Aufgaben konzipiert ist. Das System generiert detaillierte, faktische und unvoreingenommene Forschungsberichte mit Quellenangaben. Inspiriert von den Plan-and-Solve- und RAG-Ansätzen (Retrieval-Augmented Generation) adressiert das Projekt zentrale Herausforderungen wie Fehlinformationen, Geschwindigkeit, Determinismus und Zuverlässigkeit durch parallele Agentenarbeit (README.md:23-29).

Die Motivation hinter GPT Researcher ergibt sich aus fundamentalen Limitationen bestehender LLM-basierter Lösungen: Manuelle Forschung erfordert Wochen und enorme Ressourcen; LLMs mit veralteten Trainingsdaten neigen zu Halluzinationen; Token-Limits verhindern die Generierung umfangreicher Berichte; und begrenzte Webquellen führen zu oberflächlichen oder verzerrten Ergebnissen (README.md:31-38).

Projektdefinition und Kernfunktionen

Technologie-Stack

KomponenteTechnologieBeschreibung
ProgrammiersprachePythonHauptimplementierungssprache
Web-FrameworkFastAPI/UvicornAsynchroner Webserver
LLM-IntegrationMulti-ProviderUnterstützung verschiedener LLM-Anbieter
EmbeddingKonfigurierbarFlexibles Embedding-Provider-System
VektordatenbankOptionalIntegration über VectorStoreWrapper
DeploymentDockerContainerisierte Bereitstellung

Verzeichnisstruktur

gpt-researcher/
├── gpt_researcher/
│   ├── __init__.py          # Paket-Export: GPTResearcher-Klasse
│   └── agent.py             # Hauptagent-Implementierung
├── backend/
│   └── server/
│       ├── app.py           # FastAPI-Anwendung
│       └── server_utils.py  # Server-Hilfsfunktionen
├── tests/
│   ├── report-types.py      # Berichtstyp-Tests
│   ├── research_test.py     # Forschungsfunktionalität-Tests
│   └── vector-store.py      # Vektordatenbank-Tests
└── main.py                  # Anwendungseinstiegspunkt

Kernmerkmale

  1. Automatisierte Websuche: Parallele Aggregation von Informationen aus mehreren Webquellen mit automatischer Scraping-Funktionalität
  2. Multiple Berichtsformate: Unterstützung für Research Report, Subtopic Report und Deep Research mit anpassbaren Formaten (Markdown, PDF)
  3. Quellenverwaltung: Automatische Kuratierung und Zitierung von Quellen mit Unterstützung für benutzerdefinierte URL-Listen
  4. Vektordatenbank-Integration: Optionale Einbindung externer Vektorspeicher für lokale Dokumentrecherche
  5. MCP-Server-Unterstützung: Integration des Model Context Protocol für erweiterte Tool-Nutzung mit konfigurierbaren Strategien
  6. Streaming-Ausgabe: WebSocket-basierte Echtzeit-Übertragung von Forschungsfortschritten
  7. Kostenverfolgung: Detaillierte API-Kostenüberwachung pro Schritt und gesamt
  8. Domäneneinschränkung: Optionale Beschränkung der Suche auf spezifische Domains

Anwendungsgebiete

  • Akademische Forschung: Literaturrecherche und Zusammenfassung wissenschaftlicher Quellen
  • Marktanalyse: Automatisierte Erstellung von Marktstudien und Wettbewerbsanalysen
  • Due Diligence: Umfassende Hintergrundrecherche für Investitionsentscheidungen
  • Content-Erstellung: Rechercheunterstützung für journalistische und redaktionelle Inhalte
  • Wissensmanagement: Unternehmensinterne Dokumentrecherche mit Vektordatenbank-Anbindung

Architektur und Hauptkomponenten

Systemarchitektur

正在加载图表渲染器...

Die Architektur von GPT Researcher basiert auf der zentralen GPTResearcher-Klasse, die als Orchestrator für den gesamten Forschungsprozess fungiert. Diese Klasse koordiniert Websuche, Content-Scraping, Kontextverwaltung und Berichtsgenerierung unter Verwendung von LLMs (gpt_researcher/agent.py:36-50).

Komponenteninitialisierung

Bei der Instanziierung initialisiert der GPTResearcher fünf Kernkomponenten, die für unterschiedliche Aspekte des Forschungsprozesses verantwortlich sind:

KomponenteKlasseVerantwortlichkeit
ResearchConductorResearchConductorDurchführung der eigentlichen Recherche
ReportGeneratorReportGeneratorErstellung des finalen Berichts
ContextManagerContextManagerVerwaltung des Forschungskontextes
BrowserManagerBrowserManagerWeb-Scraping und Browser-Operationen
SourceCuratorSourceCuratorKuratierung und Bewertung von Quellen

Die Initialisierung erfolgt im Konstruktor, wobei jede Komponente eine Referenz auf die Hauptinstanz erhält (gpt_researcher/agent.py:184-198).

Kernmodul: GPTResearcher-Klasse

Die GPTResearcher-Klasse in agent.py bildet das Herzstück des Systems mit folgenden Verantwortlichkeiten:

Zustandsverwaltung:

  • query: Die Forschungsfrage oder Aufgabenstellung
  • report_type: Typ des zu generierenden Berichts (ResearchReport, SubtopicReport, DeepResearch)
  • context: Akkumulierter Forschungskontext als Liste
  • research_costs: Kumulierte API-Kosten
  • step_costs: Detaillierte Kostenaufschlüsselung pro Schritt
  • visited_urls: Menge der bereits besuchten URLs zur Vermeidung von Duplikaten

Konfiguration:

  • cfg: Config-Objekt für zentrale Einstellungen
  • report_format: Ausgabeformat (Markdown, PDF)
  • report_source: Informationsquelle (Web, Local)
  • tone: Tonalität des Berichts (Objective, etc.)

Externe Integrationen:

  • vector_store: VectorStoreWrapper für Dokumentenrecherche
  • websocket: WebSocket-Verbindung für Streaming-Ausgabe
  • retrievers: Konfigurierte Retriever für Informationsbeschaffung

Kernmodul: ResearchConductor

Der ResearchConductor ist für die Durchführung der eigentlichen Recherche verantwortlich. Die Komponente wird bei der Initialisierung des GPTResearcher erstellt und führt die conduct_research()-Methode aus.

Hauptaufgaben:

  • Generierung von Suchanfragen basierend auf der Forschungsfrage
  • Parallele Ausführung von Suchvorgängen
  • Scraping und Extraktion von Webinhalten
  • Aggregation der Ergebnisse in den Forschungskontext

Kernmodul: ReportGenerator

Der ReportGenerator übernimmt die Synthese des gesammelten Kontextes zu einem strukturierten Bericht.

Verantwortlichkeiten:

  • Strukturierung der Informationen nach Berichtstyp
  • Anwendung der konfigurierten Tonalität
  • Formatierung gemäß report_format
  • Einbettung von Quellenangaben und Zitaten

Kernmodul: ContextManager

Der ContextManager verwaltet den akkumulierten Forschungskontext und stellt ihn für die Berichtsgenerierung bereit.

Funktionen:

  • Speicherung und Organisation von Rechercheergebnissen
  • Deduplizierung von Informationen
  • Priorisierung nach Relevanz
  • Bereitstellung für den ReportGenerator

Konfigurationsoptionen und Schnittstellen

Initialisierungsparameter

Der Konstruktor der GPTResearcher-Klasse akzeptiert eine umfangreiche Liste von Parametern zur Feinsteuerung des Forschungsprozesses (gpt_researcher/agent.py:52-83):

ParameterTypStandardwertBeschreibung
querystrErforderlichDie Forschungsfrage
report_typestrResearchReportTyp des Berichts
report_formatstrmarkdownAusgabeformat
report_sourcestrWebInformationsquelle
toneToneObjectiveTonalität
source_urlslist[str]NoneSpezifische Quell-URLs
document_urlslist[str]NoneDokument-URLs
complement_source_urlsboolFalseErgänzung durch Websuche
query_domainslist[str]NoneDomäneneinschränkung
vector_storeAnyNoneVektordatenbank
max_subtopicsint5Maximale Unterthemen
verboseboolTrueAusführliche Protokollierung

MCP-Integration

Das System unterstützt die Integration von MCP-Servern (Model Context Protocol) für erweiterte Tool-Nutzung. Die Konfiguration erfolgt über den mcp_configs-Parameter (gpt_researcher/agent.py:113-136):

python
1mcp_configs=[{
2    "command": "python",
3    "args": ["my_mcp_server.py"],
4    "name": "search",
5    "connection_type": "stdio"  # oder "websocket", "http"
6}]

MCP-Strategien:

  • fast: Einmalige Ausführung mit ursprünglicher Abfrage (Standard)
  • deep: Ausführung für alle Unterabfragen (maximale Gründlichkeit)
  • disabled: Deaktivierung, nur Web-Retriever verwenden

Die Strategieauflösung folgt einer definierten Priorität: Parameter mcp_strategy > Parameter mcp_max_iterations (veraltet) > Config-Wert > Standard "fast".

Berichtstypen

Das System unterstützt verschiedene Berichtstypen, die im Testcode demonstriert werden (tests/report-types.py:9-10):

TypBeschreibungAnwendungsfall
research_reportVollständiger ForschungsberichtUmfassende Analysen
subtopic_reportFokussierter Unterthemen-BerichtSpezifische Aspekte
deep_researchTiefgehende UntersuchungKomplexe Fragestellungen

Einstiegspunkte und Ausführung

Server-Modus

Der Haupteinstiegspunkt für den Serverbetrieb befindet sich in main.py. Die Anwendung verwendet Uvicorn als ASGI-Server und startet auf Port 8000 (main.py:29-37):

python
1if __name__ == "__main__":
2    import uvicorn
3    logger.info("Starting server...")
4    uvicorn.run(app, host="0.0.0.0", port=8000)

Die FastAPI-Anwendung wird aus dem Backend-Modul importiert und bietet REST-Endpunkte sowie WebSocket-Unterstützung für Streaming-Ausgaben.

Programmatische Nutzung

Die direkte Nutzung der GPTResearcher-Klasse ermöglicht die Integration in eigene Anwendungen. Ein typischer Ablauf wird in den Tests demonstriert (tests/report-types.py:18-37):

python
1from gpt_researcher.agent import GPTResearcher
2
3async def conduct_research():
4    researcher = GPTResearcher(
5        query="what is gpt-researcher",
6        query_domains=["github.com"],
7        report_type="research_report"
8    )
9    await researcher.conduct_research()
10    report = await researcher.write_report()
11    return report, researcher.visited_urls

Ausführungsfluss

正在加载图表渲染器...

Test-Driven Development

Die Testsuite demonstriert die Kernfunktionalität und dient als Verwendungsnachweis. Der Test test_gpt_researcher validiert:

  1. Initialisierung: Erstellung einer GPTResearcher-Instanz mit spezifischen Parametern
  2. Domäneneinschränkung: Beschränkung der Suche auf github.com
  3. Forschungsdurchführung: Asynchrone Ausführung von conduct_research()
  4. Berichtsgenerierung: Erstellung des Berichts via write_report()
  5. Ergebnisvalidierung: Prüfung auf erwartete Inhalte und korrekte Domains

Die Validierung stellt sicher, dass der Bericht den Suchbegriff enthält und mindestens eine URL aus der eingeschränkten Domain stammt (tests/report-types.py:36-43).

Quantifizierte Projektkennzahlen

MetrikWertQuelle
Kernkomponenten5ResearchConductor, ReportGenerator, ContextManager, BrowserManager, SourceCurator
Berichtstypen3+ResearchReport, SubtopicReport, DeepResearch
Ausgabeformate2+Markdown, PDF
Konfigurationsparameter25+Initialisierungsparameter des GPTResearcher
MCP-Strategien3fast, deep, disabled
Unterstützte Sprachen4+Englisch, Chinesisch, Japanisch, Koreanisch (Dokumentation)

Berichtsleseführer

正在加载图表渲染器...

Empfohlene Lesereihenfolge:

  1. Projektüberblick (aktuelle Seite): Grundlegendes Verständnis von Zweck, Architektur und Komponenten
  2. Architektur: Detaillierte Analyse der Systemstruktur und Modulabhängigkeiten
  3. API-Design: Schnittstellenbeschreibung der öffentlichen APIs
  4. Datenmodell: Struktur der verwendeten Datenobjekte
  5. Datenfluss: Detaillierte Ablaufdiagramme der Forschungs- und Berichtsprozesse
  6. Deployment: Anleitungen zur Bereitstellung und Konfiguration in Produktionsumgebungen