Wie man OpenAI Deep Research nachbildet, aber Open Source

Im KI-Bereich gewinnen Open-Source-Initiativen an Bedeutung. "Open Deep Research" ist eine frei zugängliche Alternative zu proprietären KI-Tools.

Leo Schulz

Leo Schulz

8 September 2025

Wie man OpenAI Deep Research nachbildet, aber Open Source

Fundierte Recherche im Bereich der künstlichen Intelligenz ist kein einzelnes monolithisches Modell – es ist vielmehr ein Prozess, ein iterativer Workflow, der Suchen, Lesen und Schlussfolgern beinhaltet, bis eine Antwort gefunden wird. Die proprietären Systeme von OpenAI, wie z. B. die, die ChatGPT oder GPT-4 antreiben, verwenden komplexe Pipelines, die Antworten kontinuierlich verfeinern. Stellen Sie sich nun vor, Sie könnten ein ähnliches System mit Open-Source-Tools erstellen. Dieser Artikel erklärt, wie Sie ein Deep Research-System mit dem Projekt jina-ai/node-DeepResearch nachbilden können. Wir werden den Code aufschlüsseln, jede Komponente detailliert beschreiben und Ihnen zeigen, wie Sie das System einrichten und erweitern können.

button

1. Überblick und Zweck

DeepResearch basiert auf einer einfachen, aber leistungsstarken Idee:

Suchen und lesen Sie Webseiten weiter, bis Sie die Antwort gefunden haben (oder das Token-Budget überschritten haben).

Das System nimmt eine Anfrage entgegen (z. B. „Wer ist größer? cohere, jina ai, voyage?“) und tritt in eine Schleife ein. In jedem Schritt entscheidet der Agent (ein intelligentes Modul) über eine Aktion. Er könnte nach neuen Schlüsselwörtern suchen, den Inhalt von URLs lesen, durch Generieren von Folgefragen reflektieren oder eine Antwort geben, wenn er sich sicher ist. Dieser iterative Zyklus wird fortgesetzt, bis die Antwort endgültig ist oder das Token-Budget (ein Proxy für Rechenressourcen) überschritten wird.

Installation und Einrichtung

Bevor Sie in den Code eintauchen, müssen Sie die erforderlichen Abhängigkeiten installieren und Ihre API-Schlüssel festlegen. Das Projekt verwendet Gemini für die Sprachmodellierung, Brave oder DuckDuckGo für die Websuche und den Jina Reader zum Abrufen von Webseiteninhalten. So richten Sie das Projekt ein:

export GEMINI_API_KEY=...  # for Gemini API, ask Han
export JINA_API_KEY=jina_...  # free Jina API key, get from https://jina.ai/reader
export BRAVE_API_KEY=...  # optional; if not provided, it defaults to DuckDuckGo search

git clone https://github.com/jina-ai/node-DeepResearch.git
cd node-DeepResearch
npm install

Die README-Datei enthält sogar Beispiele für die Ausführung des Systems mit verschiedenen Abfragen:

Zusätzlich zu einer Befehlszeilenschnittstelle enthält das Projekt auch einen Webserver-API, der Endpunkte zum Übermitteln von Abfragen und zum Streamen von Fortschrittsaktualisierungen bereitstellt.


2. Architektur und Schlüsselkomponenten

Lassen Sie uns die Hauptkomponenten des Systems aufschlüsseln, indem wir die Kern-Dateien untersuchen:

2.1 agent.ts – Die Kernlogik

Die Datei agent.ts ist das Herzstück des Systems. Sie implementiert die Logik für den „Deep Research“-Zyklus: Generieren von Prompts, Entscheiden über Aktionen und Iterieren durch Such-, Lese-, Reflektier- und Antwortschritte.

Schlüsselelemente in agent.ts:

Imports and Setup:

Die Datei beginnt mit dem Import verschiedener Tools und Bibliotheken:

Sleep Function:

async function sleep(ms: number) {
  const seconds = Math.ceil(ms / 1000);
  console.log(`Waiting ${seconds}s...`);
  return new Promise(resolve => setTimeout(resolve, ms));
}

Diese Hilfsfunktion wird verwendet, um Operationen zu verzögern – nützlich, um eine Ratenbegrenzung beim Aufrufen externer APIs zu vermeiden.

Schema Generation:

Die Funktion getSchema definiert das JSON-Schema für die Antwort des Agenten. Sie erstellt dynamisch ein Schema, das Eigenschaften für Folgendes enthält:

Durch die Durchsetzung eines strengen JSON-Schemas bleibt die Ausgabe des Agenten konsistent und maschinenlesbar.

Prompt Generation:

Die Funktion getPrompt erstellt einen detaillierten Prompt, der an das Sprachmodell gesendet wird. Sie aggregiert mehrere Abschnitte:

Dieser geschichtete Prompt leitet das generative KI-Modell an, Schritt für Schritt zu „denken“ und jeweils eine Aktion auszuwählen.

Main Loop in getResponse:

Die Funktion getResponse ist der Kern der iterativen Schleife des Agenten. Sie richtet den anfänglichen Kontext ein:

Innerhalb einer While-Schleife gilt für den Agenten:

Wenn der Schleife das Budget ausgeht oder zu viele schlechte Versuche auftreten, wechselt das System in den „Beast Mode“, in dem ein letzter, aggressiver Versuch unternommen wird, zu antworten.

Context Storage:

Die Funktion storeContext schreibt den aktuellen Prompt und verschiedene Speicherzustände (Kontext, Abfragen, Fragen und gesammeltes Wissen) in Dateien. Dieser Archivierungsprozess unterstützt das Debuggen und ermöglicht eine weitere Analyse des Entscheidungsprozesses.

Final Execution:

Die Funktion main() am Ende von agent.ts verwendet das Befehlszeilenargument (die Abfrage), ruft getResponse auf und gibt die endgültige Antwort zusammen mit einer Zusammenfassung der Token-Nutzung aus.


2.2 config.ts – Konfigurieren der Umgebung

Die Datei config.ts ist der Ort, an dem die Umgebungs- und Modellkonfigurationen definiert werden:

Diese Konfigurationsdatei erleichtert das Ändern von Einstellungen und das Anpassen des Systems an verschiedene Umgebungen oder Modellverhalten.


2.3 server.ts – Die Webserver-API

Um Benutzern die Interaktion mit DeepResearch über HTTP-Anfragen zu ermöglichen, enthält das System einen einfachen Express-basierten Server in server.ts. Diese Datei richtet Endpunkte ein, die Abfrageübermittlungen verarbeiten und Fortschrittsaktualisierungen in Echtzeit streamen.

Wichtige Punkte in server.ts:

Express Setup:

Der Server verwendet Express und CORS, um Cross-Origin-Anforderungen zu unterstützen. Er lauscht auf Port 3000 (oder einem in der Umgebung angegebenen Port).

Query Endpoint (POST /api/v1/query):

Streaming Endpoint (GET /api/v1/stream/:requestId):

Task Storage and Retrieval:

Der Server schreibt Aufgabenresultate in das Dateisystem (unter einem tasks-Verzeichnis) und stellt einen Endpunkt (GET /api/v1/task/:requestId) zum Abrufen eines gespeicherten Ergebnisses bereit.

Diese Webserver-Komponente macht den Forschungsagenten über HTTP zugänglich und ermöglicht sowohl interaktive Experimente als auch die Integration in größere Systeme.


2.4 test-duck.ts – Ein Dienstprogramm zum Testen der Suche

Die Datei test-duck.ts ist ein eigenständiges Skript, das Axios verwendet, um eine HTTP-GET-Anfrage an eine externe API (in diesem Fall jsonplaceholder.typicode.com) als Test zu senden. Obwohl seine Hauptfunktion darin besteht, zu überprüfen, ob HTTP-Anfragen korrekt funktionieren (einschließlich des Festlegens der richtigen Header und der Fehlerbehandlung), dient es als Beispiel dafür, wie externe Anfragen innerhalb des Systems verarbeitet werden. In einem komplexeren Setup werden ähnliche Muster verwendet, wenn Such-APIs wie DuckDuckGo oder Brave abgefragt werden.


2.5 types.ts – Definieren konsistenter Datenstrukturen

Die Datei types.ts definiert alle benutzerdefinierten Typen, die im gesamten Projekt verwendet werden:

Action Types:
Diese umfassen die verschiedenen Aktionen, die der Agent ausführen kann:

Response Types:
Die Datei definiert strukturierte Antworten für Suchergebnisse, URL-Lesen, Auswertung, Fehleranalyse und mehr. Dies trägt dazu bei, die Konsistenz zu wahren und sicherzustellen, dass jedes Modul die Daten auf die gleiche Weise interpretiert.

Schema Types:
Die JSON-Schemadefinitionen stellen sicher, dass Antworten, die vom Sprachmodell generiert werden, strikt dem erwarteten Format entsprechen. Dies ist für die nachgelagerte Verarbeitung von entscheidender Bedeutung.

Tracker Context:
Benutzerdefinierte Typen für die Token- und Action-Tracker werden ebenfalls definiert, die verwendet werden, um den Zustand der Konversation und des Forschungsprozesses zu überwachen.


3. Der iterative Deep Research-Prozess

Das Gesamtsystem folgt einem methodischen, iterativen Prozess, der nachahmt, wie ein menschlicher Forscher arbeiten könnte:

Initialization:
Der Prozess beginnt mit der ursprünglichen Frage, die einer „Lücken“-Liste hinzugefügt wird (d. h. den Unbekannten, die gefüllt werden müssen).

Prompt Generation:
Der Agent erstellt einen Prompt unter Verwendung der aktuellen Frage, des vorherigen Kontexts, des gesammelten Wissens und sogar erfolgloser Versuche. Dieser Prompt wird dann an das generative KI-Modell gesendet.

Action Selection:
Basierend auf der Ausgabe des Modells wählt der Agent eine von mehreren Aktionen aus:

Context Update:
Jeder Schritt aktualisiert die internen Tracker (Token-Nutzung und Aktionsstatus) und archiviert den aktuellen Zustand in Dateien. Dies gewährleistet Transparenz und ermöglicht das Debuggen oder die spätere Überprüfung.

Evaluation and Looping:
Wenn eine Antwort vorgeschlagen wird, prüft ein Auswertungsschritt, ob sie endgültig ist. Wenn nicht, speichert das System die Details des fehlgeschlagenen Versuchs und passt seine Strategie an. Der Zyklus wird fortgesetzt, bis eine zufriedenstellende Antwort gefunden oder das Token-Budget erschöpft ist.

Beast Mode:
Wenn normale Schritte innerhalb der Einschränkungen keine definitive Antwort ergeben, wechselt das System in den „Beast Mode“. In diesem Modus wird die generative KI gezwungen, eine Antwort basierend auf dem akkumulierten Kontext zu erzeugen – selbst wenn dies bedeutet, eine fundierte Vermutung anzustellen.


4. Echtzeit-Fortschritt und Feedback

Ein wesentliches Merkmal des DeepResearch-Systems ist sein Echtzeit-Feedback-Mechanismus. Über den Streaming-Endpunkt des Webservers:

Ein Fortschrittsereignis könnte beispielsweise so aussehen:

data: {
  "type": "progress",
  "trackers": {
    "tokenUsage": 74950,
    "tokenBreakdown": {
      "agent": 64631,
      "read": 10319
    },
    "actionState": {
      "action": "search",
      "thoughts": "The text mentions several investors in Jina AI but doesn’t specify ownership percentages. A direct search is needed.",
      "URLTargets": [],
      "answer": "",
      "questionsToAnswer": [],
      "references": [],
      "searchQuery": "Jina AI investor ownership percentages"
    },
    "step": 7,
    "badAttempts": 0,
    "gaps": []
  }
}

Diese detaillierte Fortschrittsberichterstattung ermöglicht es Entwicklern, zu sehen, wie sich die Argumentation des Agenten im Laufe der Zeit entwickelt, und liefert Einblicke in Erfolge und Bereiche, die verbessert werden müssen.


5. Erweitern und Anpassen von DeepResearch

Die Open-Source-Natur dieses Projekts bedeutet, dass Sie das System an Ihre Bedürfnisse anpassen können. Hier sind einige Ideen zur Erweiterung von DeepResearch:

Custom Search Providers:
Sie könnten zusätzliche Suchanbieter integrieren oder den Prozess des Umschreibens von Abfragen für domänenspezifische Suchen anpassen.

Enhanced Reading Modules:
Wenn Sie eine detailliertere Textverarbeitung benötigen, können Sie alternative NLP-Modelle integrieren oder die Jina Reader-Komponente anpassen, um neue Inhaltstypen zu verarbeiten.

Improved Evaluation:
Das Evaluierungsmodul prüft derzeit, ob eine Antwort endgültig ist. Sie könnten dies erweitern, um differenziertere Metriken wie Stimmungsanalyse oder Faktencheck-Algorithmen zu integrieren.

User Interface:
Während das aktuelle System eine Befehlszeilenschnittstelle und einen einfachen Webserver für das Streaming von Ereignissen verwendet, könnten Sie eine vollwertige Web- oder mobile Oberfläche für interaktive Forschungssitzungen erstellen.

Scalability Enhancements:
Die aktuelle Implementierung wird als Single-Node-Dienst ausgeführt. Für den Produktionseinsatz sollten Sie die Anwendung in Containern verpacken und sie mithilfe von Kubernetes oder einer anderen Orchestrierungsplattform bereitstellen, um hohen Datenverkehr und verteilte Verarbeitung zu bewältigen.


6. Sicherheit, Leistung und Best Practices

Beim Einsatz eines KI-gesteuerten Systems wie DeepResearch sind einige zusätzliche Überlegungen zu beachten:

API Key Management:
Stellen Sie sicher, dass Ihre API-Schlüssel (für Gemini, Jina und Brave) sicher gespeichert und niemals in Ihrem Quellcode fest codiert werden. Umgebungsvariablen und sichere Tresore werden empfohlen.

Rate Limiting:
Die eingebaute sleep-Funktion hilft, Ratenbegrenzungen zu vermeiden, indem aufeinanderfolgende Anfragen verzögert werden. Erwägen Sie jedoch, zusätzliche Ratenbegrenzungsmechanismen auf Server- oder API-Gateway-Ebene zu implementieren.

Data Validation:
Überprüfen Sie Eingabeabfragen und -antworten streng. Das im Agenten definierte JSON-Schema hilft, aber Sie sollten auch eingehende HTTP-Anfragen validieren, um böswillige Eingaben zu verhindern.

Error Handling:
Eine robuste Fehlerbehandlung (wie im Servercode und in test-duck.ts zu sehen) ist entscheidend. Dies stellt sicher, dass unerwartete API-Fehler oder fehlerhafte Antworten das System nicht zum Absturz bringen.

Resource Monitoring:
Das Verfolgen der Token-Nutzung ist unerlässlich. Die Klassen TokenTracker und ActionTracker geben Einblicke in den Ressourcenverbrauch. Die Überwachung dieser Metriken kann dazu beitragen, die Leistung des Systems zu optimieren und eine übermäßige Nutzung zu vermeiden.


7. Fazit

Das DeepResearch-Projekt von Jina AI veranschaulicht, wie komplexe, iterative Forschungsprozesse mit Open-Source-Tools erstellt werden können. Durch die Integration von Suchmaschinen, generativen KI-Modellen und intelligenten Argumentationsschleifen verfeinert das System seine Antwort kontinuierlich, bis es sicher ist – oder bis die Ressourcenlimits erreicht sind.

In diesem Artikel haben wir untersucht, wie man OpenAI Deep Research mit einem Open-Source-Ansatz nachbilden kann:

Indem diese fortschrittlichen Forschungstechniken als Open Source verfügbar gemacht werden, demokratisieren Projekte wie DeepResearch den Zugang zu modernsten KI-Methoden. Egal, ob Sie Forscher, Entwickler oder Unternehmen sind, die Deep-Research-Funktionen in Ihre Workflows integrieren möchten, dieses Projekt dient sowohl als Inspiration als auch als praktische Grundlage für den Aufbau Ihrer eigenen Lösung.

Das iterative Design – die Kombination von Suchen, Lesen, Reflektieren und Antworten in einer kontinuierlichen Schleife – stellt sicher, dass selbst mehrdeutige oder komplexe Abfragen mit mehreren Ebenen der Prüfung behandelt werden. Und mit einer detaillierten Architektur, die die Token-Nutzung verfolgt und Live-Feedback liefert, erhalten Sie tiefe Einblicke in den Argumentationsprozess hinter jeder Antwort.

Wenn Sie gerne experimentieren, klonen Sie das Repository, richten Sie Ihre Umgebung wie beschrieben ein und führen Sie Abfragen aus, die von einfacher Arithmetik bis hin zu facettenreichen Forschungsfragen reichen. Mit ein wenig Anpassung können Sie das System an neue Domänen anpassen und sogar seine Argumentationsfähigkeiten verbessern. Open-Source-Projekte wie dieses ebnen den Weg für gemeinschaftsgetriebene Innovationen in der KI-Forschung.


Indem Sie dieser detaillierten Aufschlüsselung und Analyse folgen, können Sie die Ideen hinter OpenAI’s Deep Research auf vollständig Open-Source-Weise nachbilden und erweitern. Egal, ob Sie auf der bestehenden Codebasis aufbauen oder ähnliche Methoden in Ihre Projekte integrieren möchten, die Roadmap ist klar: iterieren, verfeinern und die Grenzen der automatisierten Forschung verschieben.

button

Explore more

Fathom-R1-14B: Fortschrittliches KI-Argumentationsmodell aus Indien

Fathom-R1-14B: Fortschrittliches KI-Argumentationsmodell aus Indien

Künstliche Intelligenz wächst rasant. FractalAIResearch/Fathom-R1-14B (14,8 Mrd. Parameter) glänzt in Mathe & Logik.

5 June 2025

Cursor 1.0 mit BugBot: KI-gestütztes Automatisierungstest-Tool ist da:

Cursor 1.0 mit BugBot: KI-gestütztes Automatisierungstest-Tool ist da:

Die Softwareentwicklung erlebt Innovationen durch KI. Cursor, ein KI-Editor, erreicht mit Version 1.0 einen Meilenstein.

5 June 2025

30+ öffentliche Web 3.0 APIs, die Sie jetzt nutzen können

30+ öffentliche Web 3.0 APIs, die Sie jetzt nutzen können

Der Aufstieg von Web 3.0: Dezentral, nutzerorientiert, transparent. APIs ermöglichen innovative dApps und Blockchain-Integration.

4 June 2025

Praktizieren Sie API Design-First in Apidog

Entdecken Sie eine einfachere Möglichkeit, APIs zu erstellen und zu nutzen