deep_research.py


Overview

The deep_research.py file defines the DeepResearcher class, a core component designed to perform iterative, multi-step reasoning and information retrieval to answer complex questions. It integrates with multiple knowledge sources—including knowledge bases, knowledge graphs, and external web retrieval services—to gather relevant information based on dynamically generated search queries. The class uses a large language model (LLM) interface to generate reasoning steps, extract search queries, and summarize retrieved information in a conversational, streaming manner.

Key features include:

This file is likely a central component in a system that supports deep, explainable question answering or agentic reasoning workflows.


Classes and Methods

Class: DeepResearcher

The main class responsible for orchestrating deep, multi-step research via reasoning and retrieval.

Initialization

def __init__(self,
             chat_mdl: LLMBundle,
             prompt_config: dict,
             kb_retrieve: partial = None,
             kg_retrieve: partial = None)

Static and Helper Methods

_remove_tags
def _remove_tags(text: str, start_tag: str, end_tag: str) -> str

_remove_query_tags
@staticmethod
def _remove_query_tags(text: str) -> str

_remove_result_tags
@staticmethod
def _remove_result_tags(text: str) -> str

_generate_reasoning

def _generate_reasoning(self, msg_history)

_extract_search_queries

def _extract_search_queries(self, query_think, question, step_index)

_truncate_previous_reasoning

def _truncate_previous_reasoning(self, all_reasoning_steps)

_retrieve_information

def _retrieve_information(self, search_query)

_update_chunk_info

def _update_chunk_info(self, chunk_info, kbinfos)

_extract_relevant_info

def _extract_relevant_info(self, truncated_prev_reasoning, search_query, kbinfos)

thinking

def thinking(self, chunk_info: dict, question: str)

Implementation Details and Algorithms


Interaction with Other System Components


Visual Diagram

classDiagram
    class DeepResearcher {
        -chat_mdl: LLMBundle
        -prompt_config: dict
        -_kb_retrieve: partial
        -_kg_retrieve: partial
        +__init__(chat_mdl, prompt_config, kb_retrieve=None, kg_retrieve=None)
        +thinking(chunk_info: dict, question: str)
        -_generate_reasoning(msg_history)
        -_extract_search_queries(query_think, question, step_index)
        -_truncate_previous_reasoning(all_reasoning_steps)
        -_retrieve_information(search_query)
        -_update_chunk_info(chunk_info, kbinfos)
        -_extract_relevant_info(truncated_prev_reasoning, search_query, kbinfos)
        +_remove_query_tags(text: str)
        +_remove_result_tags(text: str)
        -_remove_tags(text: str, start_tag: str, end_tag: str)
    }

    DeepResearcher ..> LLMBundle : uses
    DeepResearcher ..> "partial" : kb_retrieve, kg_retrieve functions
    DeepResearcher ..> Tavily : for web retrieval

Summary

The deep_research.py file encapsulates a sophisticated reasoning and retrieval engine that incrementally builds answers to complex questions by:

It is designed for extensibility (plugging in different retrieval backends) and real-time interaction, making it suitable for advanced AI assistants, research bots, or explainable AI systems.


End of deep_research.py Documentation