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
| Komponente | Technologie | Beschreibung |
|---|---|---|
| Programmiersprache | Python | Hauptimplementierungssprache |
| Web-Framework | FastAPI/Uvicorn | Asynchroner Webserver |
| LLM-Integration | Multi-Provider | Unterstützung verschiedener LLM-Anbieter |
| Embedding | Konfigurierbar | Flexibles Embedding-Provider-System |
| Vektordatenbank | Optional | Integration über VectorStoreWrapper |
| Deployment | Docker | Containerisierte 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
- Automatisierte Websuche: Parallele Aggregation von Informationen aus mehreren Webquellen mit automatischer Scraping-Funktionalität
- Multiple Berichtsformate: Unterstützung für Research Report, Subtopic Report und Deep Research mit anpassbaren Formaten (Markdown, PDF)
- Quellenverwaltung: Automatische Kuratierung und Zitierung von Quellen mit Unterstützung für benutzerdefinierte URL-Listen
- Vektordatenbank-Integration: Optionale Einbindung externer Vektorspeicher für lokale Dokumentrecherche
- MCP-Server-Unterstützung: Integration des Model Context Protocol für erweiterte Tool-Nutzung mit konfigurierbaren Strategien
- Streaming-Ausgabe: WebSocket-basierte Echtzeit-Übertragung von Forschungsfortschritten
- Kostenverfolgung: Detaillierte API-Kostenüberwachung pro Schritt und gesamt
- 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:
| Komponente | Klasse | Verantwortlichkeit |
|---|---|---|
| ResearchConductor | ResearchConductor | Durchführung der eigentlichen Recherche |
| ReportGenerator | ReportGenerator | Erstellung des finalen Berichts |
| ContextManager | ContextManager | Verwaltung des Forschungskontextes |
| BrowserManager | BrowserManager | Web-Scraping und Browser-Operationen |
| SourceCurator | SourceCurator | Kuratierung 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 Aufgabenstellungreport_type: Typ des zu generierenden Berichts (ResearchReport, SubtopicReport, DeepResearch)context: Akkumulierter Forschungskontext als Listeresearch_costs: Kumulierte API-Kostenstep_costs: Detaillierte Kostenaufschlüsselung pro Schrittvisited_urls: Menge der bereits besuchten URLs zur Vermeidung von Duplikaten
Konfiguration:
cfg: Config-Objekt für zentrale Einstellungenreport_format: Ausgabeformat (Markdown, PDF)report_source: Informationsquelle (Web, Local)tone: Tonalität des Berichts (Objective, etc.)
Externe Integrationen:
vector_store: VectorStoreWrapper für Dokumentenrecherchewebsocket: WebSocket-Verbindung für Streaming-Ausgaberetrievers: 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):
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
query | str | Erforderlich | Die Forschungsfrage |
report_type | str | ResearchReport | Typ des Berichts |
report_format | str | markdown | Ausgabeformat |
report_source | str | Web | Informationsquelle |
tone | Tone | Objective | Tonalität |
source_urls | list[str] | None | Spezifische Quell-URLs |
document_urls | list[str] | None | Dokument-URLs |
complement_source_urls | bool | False | Ergänzung durch Websuche |
query_domains | list[str] | None | Domäneneinschränkung |
vector_store | Any | None | Vektordatenbank |
max_subtopics | int | 5 | Maximale Unterthemen |
verbose | bool | True | Ausfü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):
python1mcp_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):
| Typ | Beschreibung | Anwendungsfall |
|---|---|---|
research_report | Vollständiger Forschungsbericht | Umfassende Analysen |
subtopic_report | Fokussierter Unterthemen-Bericht | Spezifische Aspekte |
deep_research | Tiefgehende Untersuchung | Komplexe 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):
python1if __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):
python1from 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:
- Initialisierung: Erstellung einer GPTResearcher-Instanz mit spezifischen Parametern
- Domäneneinschränkung: Beschränkung der Suche auf
github.com - Forschungsdurchführung: Asynchrone Ausführung von
conduct_research() - Berichtsgenerierung: Erstellung des Berichts via
write_report() - 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
| Metrik | Wert | Quelle |
|---|---|---|
| Kernkomponenten | 5 | ResearchConductor, ReportGenerator, ContextManager, BrowserManager, SourceCurator |
| Berichtstypen | 3+ | ResearchReport, SubtopicReport, DeepResearch |
| Ausgabeformate | 2+ | Markdown, PDF |
| Konfigurationsparameter | 25+ | Initialisierungsparameter des GPTResearcher |
| MCP-Strategien | 3 | fast, deep, disabled |
| Unterstützte Sprachen | 4+ | Englisch, Chinesisch, Japanisch, Koreanisch (Dokumentation) |
Berichtsleseführer
正在加载图表渲染器...
Empfohlene Lesereihenfolge:
- Projektüberblick (aktuelle Seite): Grundlegendes Verständnis von Zweck, Architektur und Komponenten
- Architektur: Detaillierte Analyse der Systemstruktur und Modulabhängigkeiten
- API-Design: Schnittstellenbeschreibung der öffentlichen APIs
- Datenmodell: Struktur der verwendeten Datenobjekte
- Datenfluss: Detaillierte Ablaufdiagramme der Forschungs- und Berichtsprozesse
- Deployment: Anleitungen zur Bereitstellung und Konfiguration in Produktionsumgebungen
