Repository Analysis

assafelovic/gpt-researcher

An autonomous agent that conducts deep research on any data using any LLM providers

18.0 Moderate AI signal View on GitHub
18.0
Adjusted Score
18.0
Raw Score
100%
Time Factor
2026-05-28
Last Push
27,390
Stars
Python
Language
57,200
Lines of Code
460
Files
703
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 13MEDIUM 120LOW 570

Pattern Findings

703 matches across 16 categories. Click a row to expand file-level details.

Excessive Try-Catch Wrapping189 hits · 224 pts
SeverityFileLineSnippet
LOWcli.py204 except Exception as e:
LOWcli.py347 except Exception as e:
LOWcli.py356 except Exception as e:
LOWjson_schema_generator.py28 except Exception as e:
LOWevals/hallucination_eval/run_eval.py188 except Exception as e:
LOWevals/hallucination_eval/evaluate.py51 except Exception as e:
LOWevals/simple_evals/run_eval.py112 except Exception as e:
LOWevals/simple_evals/run_eval.py181 except Exception as e:
LOWevals/simple_evals/run_eval.py195 except Exception as e:
LOWgpt_researcher/agent.py326 except Exception as e:
LOWgpt_researcher/scraper/scraper.py167 except Exception as e:
LOWgpt_researcher/scraper/utils.py54 except Exception as e:
MEDIUMgpt_researcher/scraper/utils.py66 print(f"Error parsing dimension value {value}: {e}")
LOWgpt_researcher/scraper/utils.py90 except Exception as e:
LOWgpt_researcher/scraper/pymupdf/pymupdf.py31 except Exception:
LOWgpt_researcher/scraper/pymupdf/pymupdf.py78 except Exception as e:
MEDIUMgpt_researcher/scraper/pymupdf/pymupdf.py79 print(f"Error loading PDF : {self.link} {e}")
LOWgpt_researcher/scraper/firecrawl/firecrawl.py80 except Exception as e:
LOWgpt_researcher/scraper/beautiful_soup/beautiful_soup.py40 except Exception as e:
LOW…_researcher/scraper/web_base_loader/web_base_loader.py41 except Exception as e:
LOWgpt_researcher/scraper/browser/browser.py51 except Exception as e:
MEDIUMgpt_researcher/scraper/browser/browser.py52 print(f"An error occurred during scraping: {str(e)}")
LOWgpt_researcher/scraper/browser/browser.py115 except Exception as e:
LOWgpt_researcher/scraper/browser/browser.py158 except Exception as e:
LOWgpt_researcher/scraper/browser/browser.py186 except Exception as e:
MEDIUMgpt_researcher/scraper/browser/browser.py61def _import_selenium(self):
LOWgpt_researcher/scraper/browser/nodriver_scraper.py55 except Exception:
LOWgpt_researcher/scraper/browser/nodriver_scraper.py102 except Exception as e:
LOWgpt_researcher/scraper/browser/nodriver_scraper.py124 except Exception as e:
LOWgpt_researcher/scraper/browser/nodriver_scraper.py180 except Exception as e:
LOWgpt_researcher/scraper/browser/nodriver_scraper.py246 except Exception as e:
LOWgpt_researcher/scraper/browser/nodriver_scraper.py259 except Exception as e:
MEDIUMgpt_researcher/scraper/browser/nodriver_scraper.py138def create_browser():
LOWgpt_researcher/scraper/tavily_extract/tavily_extract.py60 except Exception as e:
LOWgpt_researcher/retrievers/utils.py41 except Exception as e:
LOWgpt_researcher/retrievers/utils.py101 except Exception as e:
LOWgpt_researcher/retrievers/duckduckgo/duckduckgo.py26 except Exception as e:
MEDIUMgpt_researcher/retrievers/duckduckgo/duckduckgo.py27 print(f"Error: {e}. Failed fetching sources. Resulting in empty response.")
LOWgpt_researcher/retrievers/google/google.py34 except Exception:
LOWgpt_researcher/retrievers/google/google.py48 except Exception:
LOWgpt_researcher/retrievers/google/google.py77 except Exception:
LOWgpt_researcher/retrievers/google/google.py96 except Exception:
LOWgpt_researcher/retrievers/bing/bing.py34 except Exception:
LOWgpt_researcher/retrievers/bing/bing.py74 except Exception as e:
MEDIUM…archer/retrievers/semantic_scholar/semantic_scholar.py43 print(f"An error occurred while accessing Semantic Scholar API: {e}")
LOWgpt_researcher/retrievers/searchapi/searchapi.py30 except Exception:
LOWgpt_researcher/retrievers/searchapi/searchapi.py80 except Exception as e:
MEDIUMgpt_researcher/retrievers/searchapi/searchapi.py81 print(f"Error: {e}. Failed fetching sources. Resulting in empty response.")
LOWgpt_researcher/retrievers/mcp/retriever.py190 except Exception as e:
LOWgpt_researcher/retrievers/mcp/retriever.py198 except Exception as e:
LOWgpt_researcher/retrievers/mcp/retriever.py260 except Exception:
LOWgpt_researcher/retrievers/mcp/retriever.py262 except Exception:
LOWgpt_researcher/retrievers/mcp/retriever.py280 except Exception:
LOWgpt_researcher/retrievers/mcp/retriever.py294 except Exception as e:
LOWgpt_researcher/retrievers/mcp/retriever.py321 except Exception as e:
LOWgpt_researcher/retrievers/mcp/__init__.py28except Exception as e:
MEDIUMgpt_researcher/retrievers/openalex/openalex.py65 print(f"An error occurred while accessing OpenAlex API: {e}")
LOWgpt_researcher/retrievers/xquik/xquik.py50 except Exception as e:
MEDIUMgpt_researcher/retrievers/xquik/xquik.py51 print(f"Error: {e}. Failed fetching X/Twitter sources. Resulting in empty response.")
MEDIUMgpt_researcher/retrievers/xquik/xquik.py28def get_api_key(self):
129 more matches not shown…
Unused Imports201 hits · 200 pts
SeverityFileLineSnippet
LOWcli.py24
LOWevals/hallucination_eval/run_eval.py16
LOWevals/hallucination_eval/evaluate.py5
LOWevals/hallucination_eval/evaluate.py6
LOWevals/hallucination_eval/evaluate.py6
LOWevals/hallucination_eval/evaluate.py8
LOWevals/simple_evals/simpleqa_eval.py6
LOWevals/simple_evals/simpleqa_eval.py7
LOWevals/simple_evals/simpleqa_eval.py8
LOWevals/simple_evals/simpleqa_eval.py11
LOWevals/simple_evals/simpleqa_eval.py11
LOWevals/simple_evals/simpleqa_eval.py11
LOWevals/simple_evals/simpleqa_eval.py12
LOWgpt_researcher/__init__.py1
LOWgpt_researcher/agent.py8
LOWgpt_researcher/agent.py21
LOWgpt_researcher/scraper/__init__.py1
LOWgpt_researcher/scraper/__init__.py2
LOWgpt_researcher/scraper/__init__.py3
LOWgpt_researcher/scraper/__init__.py4
LOWgpt_researcher/scraper/__init__.py5
LOWgpt_researcher/scraper/__init__.py6
LOWgpt_researcher/scraper/__init__.py7
LOWgpt_researcher/scraper/__init__.py8
LOWgpt_researcher/scraper/__init__.py9
LOWgpt_researcher/scraper/beautiful_soup/beautiful_soup.py2
LOW…_researcher/scraper/web_base_loader/web_base_loader.py2
LOWgpt_researcher/scraper/browser/browser.py1
LOWgpt_researcher/scraper/browser/browser.py13
LOWgpt_researcher/scraper/browser/browser.py13
LOWgpt_researcher/scraper/browser/browser.py18
LOWgpt_researcher/scraper/browser/browser.py68
LOWgpt_researcher/scraper/browser/nodriver_scraper.py8
LOWgpt_researcher/scraper/browser/processing/html.py2
LOWgpt_researcher/retrievers/__init__.py1
LOWgpt_researcher/retrievers/__init__.py2
LOWgpt_researcher/retrievers/__init__.py3
LOWgpt_researcher/retrievers/__init__.py4
LOWgpt_researcher/retrievers/__init__.py5
LOWgpt_researcher/retrievers/__init__.py6
LOWgpt_researcher/retrievers/__init__.py7
LOWgpt_researcher/retrievers/__init__.py8
LOWgpt_researcher/retrievers/__init__.py9
LOWgpt_researcher/retrievers/__init__.py10
LOWgpt_researcher/retrievers/__init__.py11
LOWgpt_researcher/retrievers/__init__.py12
LOWgpt_researcher/retrievers/__init__.py13
LOWgpt_researcher/retrievers/__init__.py14
LOWgpt_researcher/retrievers/__init__.py15
LOWgpt_researcher/retrievers/__init__.py16
LOWgpt_researcher/retrievers/__init__.py17
LOWgpt_researcher/retrievers/utils.py10
LOWgpt_researcher/retrievers/duckduckgo/duckduckgo.py1
LOWgpt_researcher/retrievers/mcp/retriever.py14
LOWgpt_researcher/retrievers/mcp/retriever.py232
LOWgpt_researcher/retrievers/mcp/__init__.py13
LOWgpt_researcher/retrievers/tavily/tavily_search.py9
LOWgpt_researcher/retrievers/bocha/bocha.py7
LOWgpt_researcher/context/retriever.py2
LOWgpt_researcher/context/retriever.py3
141 more matches not shown…
Decorative Section Separators42 hits · 153 pts
SeverityFileLineSnippet
MEDIUMcli.py27# =============================================================================
MEDIUMcli.py29# =============================================================================
MEDIUMcli.py36# =====================================
MEDIUMcli.py38# =====================================
MEDIUMcli.py46# =====================================
MEDIUMcli.py48# =====================================
MEDIUMcli.py86# =====================================
MEDIUMcli.py88# =====================================
MEDIUMcli.py97# =====================================
MEDIUMcli.py99# =====================================
MEDIUMcli.py108# =====================================
MEDIUMcli.py110# =====================================
MEDIUMcli.py72# =====================================
MEDIUMcli.py74# =====================================
MEDIUMcli.py121# =====================================
MEDIUMcli.py123# =====================================
MEDIUMcli.py137# =============================================================================
MEDIUMcli.py139# =============================================================================
MEDIUMcli.py261# =============================================================================
MEDIUMcli.py263# =============================================================================
MEDIUMcli.py319 # ------------------------------------------------------------------
MEDIUMcli.py322 # ------------------------------------------------------------------
MEDIUMterraform/variables.tf171# ==============================================================================
MEDIUMterraform/variables.tf173# ==============================================================================
MEDIUMterraform/variables.tf203# ==============================================================================
MEDIUMterraform/variables.tf205# ==============================================================================
MEDIUM…roposals/high-quality-content-scraping-architecture.md318# ═══════════════════════════════════════════════════════════════
MEDIUM…roposals/high-quality-content-scraping-architecture.md320# ═══════════════════════════════════════════════════════════════
MEDIUM…roposals/high-quality-content-scraping-architecture.md325# ═══════════════════════════════════════════════════════════════
MEDIUM…roposals/high-quality-content-scraping-architecture.md327# ═══════════════════════════════════════════════════════════════
MEDIUM…roposals/high-quality-content-scraping-architecture.md334# ═══════════════════════════════════════════════════════════════
MEDIUM…roposals/high-quality-content-scraping-architecture.md336# ═══════════════════════════════════════════════════════════════
MEDIUMdocs/docs/proposals/adaptive-deep-research.md198 # ═══════════════════════════════════════════════════════
MEDIUMdocs/docs/proposals/adaptive-deep-research.md200 # ═══════════════════════════════════════════════════════
MEDIUMdocs/docs/proposals/adaptive-deep-research.md217 # ═══════════════════════════════════════════════════════
MEDIUMdocs/docs/proposals/adaptive-deep-research.md219 # ═══════════════════════════════════════════════════════
MEDIUMdocs/docs/proposals/adaptive-deep-research.md235 # ═══════════════════════════════════════════════════════
MEDIUMdocs/docs/proposals/adaptive-deep-research.md237 # ═══════════════════════════════════════════════════════
MEDIUMdocs/docs/proposals/adaptive-deep-research.md246 # ═══════════════════════════════════════════════════════════
MEDIUMdocs/docs/proposals/adaptive-deep-research.md248 # ═══════════════════════════════════════════════════════════
MEDIUMdocs/docs/proposals/adaptive-deep-research.md452 # ═══════════════════════════════════════════════════════════════
MEDIUMdocs/docs/proposals/adaptive-deep-research.md454 # ═══════════════════════════════════════════════════════════════
Hyper-Verbose Identifiers138 hits · 144 pts
SeverityFileLineSnippet
LOWgpt_researcher/prompts.py40 def generate_mcp_tool_selection_prompt(query: str, tools_info: List[Dict], max_tools: int = 3) -> str:
LOWgpt_researcher/prompts.py86 def generate_mcp_research_prompt(query: str, selected_tools: List) -> str:
LOWgpt_researcher/prompts.py122 def generate_image_analysis_prompt(
LOWgpt_researcher/prompts.py178 def generate_image_prompt_enhancement(
LOWgpt_researcher/prompts.py213 def generate_search_queries_prompt(
LOWgpt_researcher/prompts.py349 def generate_resource_report_prompt(
LOWgpt_researcher/prompts.py389 def generate_custom_report_prompt(
LOWgpt_researcher/prompts.py395 def generate_outline_report_prompt(
LOWgpt_researcher/prompts.py414 def generate_deep_research_prompt(
LOWgpt_researcher/prompts.py528 def generate_quick_summary_prompt(query: str, context: str) -> str:
LOWgpt_researcher/prompts.py569 def generate_subtopics_prompt() -> str:
LOWgpt_researcher/prompts.py592 def generate_subtopic_report_prompt(
LOWgpt_researcher/prompts.py669 def generate_draft_titles_prompt(
LOWgpt_researcher/prompts.py703 def generate_report_introduction(question: str, research_summary: str = "", language: str = "english", report_format
LOWgpt_researcher/prompts.py716 def generate_report_conclusion(query: str, report_content: str, language: str = "english", report_format: str = "apa
LOWgpt_researcher/prompts.py858def get_prompt_by_report_type(
LOWgpt_researcher/agent.py571 async def get_similar_written_contents_by_draft_section_titles(
LOWgpt_researcher/scraper/utils.py114 def does_tag_have_disallowed_class(elem) -> bool:
LOWgpt_researcher/scraper/browser/browser.py175 def _visit_google_and_save_cookies(self):
LOWgpt_researcher/scraper/browser/browser.py191 def scrape_text_with_selenium(self) -> tuple:
LOWgpt_researcher/retrievers/serper/serper.py32 def _get_exclude_sites_from_env(self):
LOWgpt_researcher/context/compression.py122 def __get_contextual_retriever(self):
LOWgpt_researcher/context/compression.py208 def __get_contextual_retriever(self):
LOWgpt_researcher/config/config.py85 def _set_embedding_attributes(self) -> None:
LOWgpt_researcher/config/config.py98 def _handle_deprecated_attributes(self) -> None:
LOWgpt_researcher/llm_provider/generic/base.py101 def _reset_last_response_metadata(self) -> None:
LOWgpt_researcher/llm_provider/generic/base.py105 def _capture_response_metadata(self, message: Any) -> None:
LOWgpt_researcher/utils/tools.py46async def create_chat_completion_with_tools(
LOWgpt_researcher/utils/tools.py320def get_available_providers_with_tools() -> List[str]:
LOWgpt_researcher/utils/costs.py70def _resolve_anthropic_model_name(
LOWgpt_researcher/utils/costs.py119def _get_anthropic_pricing_multiplier(
LOWgpt_researcher/mcp/research.py34 async def conduct_research_with_tools(self, query: str, selected_tools: List) -> List[Dict[str, str]]:
LOWgpt_researcher/mcp/tool_selector.py129 async def _call_llm_for_tool_selection(self, prompt: str) -> str:
LOWgpt_researcher/mcp/client.py40 def convert_configs_to_langchain_format(self) -> Dict[str, Dict[str, Any]]:
LOWgpt_researcher/vector_store/vector_store.py26 def _create_langchain_documents(self, data: List[Dict[str, str]]) -> List[Document]:
LOWgpt_researcher/actions/report_generation.py12async def write_report_introduction(
LOWgpt_researcher/actions/report_generation.py160async def generate_draft_section_titles(
LOWgpt_researcher/actions/markdown_processing.py78 def generate_table_of_contents(headers, indent_level=0):
LOWgpt_researcher/skills/context_manager.py37 async def get_similar_content_by_query(self, query: str, pages: list) -> str:
LOWgpt_researcher/skills/context_manager.py65 async def get_similar_content_by_query_with_vectorstore(self, query: str, filter: dict | None) -> str:
LOWgpt_researcher/skills/context_manager.py88 async def get_similar_written_contents_by_draft_section_titles(
LOWgpt_researcher/skills/context_manager.py120 async def __get_similar_written_contents_by_query(
LOWgpt_researcher/skills/researcher.py233 async def _get_context_by_vectorstore(self, query, filter: dict | None = None):
LOWgpt_researcher/skills/researcher.py266 async def _get_context_by_web_search(self, query, scraped_data: list | None = None, query_domains: list | None = Non
LOWgpt_researcher/skills/researcher.py393 async def _execute_mcp_research_for_queries(self, queries: list, mcp_retrievers: list) -> list:
LOWgpt_researcher/skills/researcher.py654 def _combine_mcp_and_web_context(self, mcp_context: list, web_context: str, sub_query: str) -> str:
LOWgpt_researcher/skills/researcher.py707 async def _process_sub_query_with_vectorstore(self, sub_query: str, filter: dict | None = None):
LOWgpt_researcher/skills/researcher.py751 async def _search_relevant_source_urls(self, query, query_domains: list | None = None):
LOWgpt_researcher/skills/deep_research.py77def parse_search_queries_response(response: str, num_queries: int) -> List[Dict[str, str]]:
LOWgpt_researcher/skills/deep_research.py119def parse_follow_up_questions_response(response: str, num_questions: int) -> List[str]:
LOWgpt_researcher/skills/deep_research.py143def parse_research_results_response(response: str, num_learnings: int) -> Dict[str, Any]:
LOWgpt_researcher/skills/deep_research.py213def trim_context_to_word_limit(context_list: List[str], max_words: int = MAX_CONTEXT_WORDS) -> List[str]:
LOWgpt_researcher/skills/image_generator.py271 async def analyze_report_for_images(
LOWgpt_researcher/skills/image_generator.py467 async def generate_images_for_report(
LOWgpt_researcher/skills/image_generator.py639 async def process_image_placeholders(
LOWmulti_agents_ag2/agents/editor.py65 def _format_planning_instructions(
LOWtests/test_research_conductor_retrieval.py56 async def test_snippet_only_results_are_sent_to_scraper(self):
LOWtests/test_research_conductor_retrieval.py68 async def test_raw_content_results_stay_prefetched(self):
LOWtests/test_multi_agents_plan_revisions.py19def test_human_feedback_route_accepts_when_no_feedback():
LOWtests/test_multi_agents_plan_revisions.py23def test_human_feedback_route_revises_until_limit():
78 more matches not shown…
Self-Referential Comments29 hits · 106 pts
SeverityFileLineSnippet
MEDIUMgpt_researcher/retrievers/mcp/retriever.py234 # Create a new event loop in a separate thread
MEDIUMgpt_researcher/utils/logger.py19 # Create a handler
MEDIUMgpt_researcher/utils/logger.py22 # Create a formatter using DefaultFormatter
MEDIUMgpt_researcher/mcp/research.py236 # Create a search result with a generic title
MEDIUMgpt_researcher/skills/researcher.py683 # Create a well-formatted context entry
MEDIUMgpt_researcher/skills/image_generator.py605 # Create a mapping of section headers to images
MEDIUMtests/test-your-embeddings.py30 # Create a Memory instance using the configuration
MEDIUMtests/documents-report-source.py9# Define the report types to test
MEDIUMtests/documents-report-source.py19# Define a common query and sources for testing
MEDIUMtests/documents-report-source.py22# Define the output directory
MEDIUMtests/documents-report-source.py33 # Create an instance of GPTResearcher with report_source set to "documents"
MEDIUMtests/documents-report-source.py41 # Define the expected output filenames
MEDIUMtests/report-types.py9# Define the report types to test
MEDIUMtests/report-types.py12# Define a common query and sources for testing
MEDIUMtests/report-types.py21 # Create an instance of GPTResearcher
MEDIUMtests/test-your-retriever.py11 # Initialize the Config object
MEDIUMtests/test-your-retriever.py18 # Create a mock researcher object with necessary attributes
MEDIUMtests/test-your-retriever.py32 # Define a sub-query to test
MEDIUMtests/test_security_fix.py131 # Create a symlink pointing outside the directory
MEDIUMtests/test_security_fix.py291 # Create a subdirectory
MEDIUMtests/test_security_fix.py97 # Create a filename longer than 255 bytes
MEDIUMtests/test_security_fix.py220 # Create an existing file
MEDIUMtests/test_security_fix.py261 # Create a test file
MEDIUMtests/vector-store.py127 # Create an instance of GPTResearcher
MEDIUMtests/test_researcher_logging.py26 # Create a researcher instance with a logging-focused query
MEDIUMbackend/utils.py115 # Create a document object
MEDIUMbackend/chat/chat.py155 # Create a search tool using the utility function
MEDIUMbackend/server/logging_config.py78# Create a function to get the logger and JSON handler
MEDIUMmulti_agents/agents/utils/file_formats.py89 # Create a document object
AI Slop Vocabulary17 hits · 48 pts
SeverityFileLineSnippet
MEDIUMevals/hallucination_eval/results/aggregate_results.json10 "output": "# The Best Tutorials for Training LLMs on Custom Data: An In-Depth Report (2025)\n\nThe rapid evolution
MEDIUMevals/hallucination_eval/results/aggregate_results.json10 "output": "# The Best Tutorials for Training LLMs on Custom Data: An In-Depth Report (2025)\n\nThe rapid evolution
MEDIUMevals/hallucination_eval/results/aggregate_results.json10 "output": "# The Best Tutorials for Training LLMs on Custom Data: An In-Depth Report (2025)\n\nThe rapid evolution
MEDIUMevals/hallucination_eval/results/aggregate_results.json11 "source": "Source: https://medium.com/@pranshu.singh765/mastering-llm-custom-data-training-in-2025-fine-tuning-lar
MEDIUMevals/hallucination_eval/results/aggregate_results.json11 "source": "Source: https://medium.com/@pranshu.singh765/mastering-llm-custom-data-training-in-2025-fine-tuning-lar
MEDIUMevals/hallucination_eval/results/aggregate_results.json11 "source": "Source: https://medium.com/@pranshu.singh765/mastering-llm-custom-data-training-in-2025-fine-tuning-lar
MEDIUMevals/hallucination_eval/results/aggregate_results.json11 "source": "Source: https://medium.com/@pranshu.singh765/mastering-llm-custom-data-training-in-2025-fine-tuning-lar
MEDIUMevals/hallucination_eval/results/aggregate_results.json11 "source": "Source: https://medium.com/@pranshu.singh765/mastering-llm-custom-data-training-in-2025-fine-tuning-lar
MEDIUMevals/hallucination_eval/results/aggregate_results.json11 "source": "Source: https://medium.com/@pranshu.singh765/mastering-llm-custom-data-training-in-2025-fine-tuning-lar
MEDIUMevals/hallucination_eval/results/aggregate_results.json16 "output": "# Emerging Trends in Real-Time AI Evaluation Tools: A 2025 Analysis\n\nThe rapid integration of artific
MEDIUMevals/hallucination_eval/results/aggregate_results.json16 "output": "# Emerging Trends in Real-Time AI Evaluation Tools: A 2025 Analysis\n\nThe rapid integration of artific
MEDIUMevals/hallucination_eval/results/aggregate_results.json16 "output": "# Emerging Trends in Real-Time AI Evaluation Tools: A 2025 Analysis\n\nThe rapid integration of artific
MEDIUMevals/hallucination_eval/results/aggregate_results.json16 "output": "# Emerging Trends in Real-Time AI Evaluation Tools: A 2025 Analysis\n\nThe rapid integration of artific
MEDIUMevals/hallucination_eval/results/aggregate_results.json16 "output": "# Emerging Trends in Real-Time AI Evaluation Tools: A 2025 Analysis\n\nThe rapid integration of artific
MEDIUMevals/hallucination_eval/results/aggregate_results.json17 "source": "Source: https://www.globenewswire.com/news-release/2025/04/26/3068732/0/en/These-5-AI-trends-Will-Shape
MEDIUMgpt_researcher/prompts.py105 return f"""You are a research assistant with access to specialized tools. Your task is to research the following
LOWgpt_researcher/actions/web_scraping.py76 # For now, we'll just return the raw HTML as a placeholder
Deep Nesting39 hits · 38 pts
SeverityFileLineSnippet
LOWevals/hallucination_eval/run_eval.py146
LOWgpt_researcher/agent.py216
LOWgpt_researcher/agent.py310
LOWgpt_researcher/scraper/utils.py16
LOWgpt_researcher/scraper/pymupdf/pymupdf.py34
LOWgpt_researcher/scraper/browser/browser.py83
LOWgpt_researcher/retrievers/searchapi/searchapi.py35
LOWgpt_researcher/retrievers/mcp/retriever.py201
LOWgpt_researcher/retrievers/mcp/retriever.py235
LOWgpt_researcher/retrievers/serpapi/serpapi.py36
LOWgpt_researcher/config/config.py98
LOWgpt_researcher/config/config.py257
LOWgpt_researcher/llm_provider/image/image_generator.py268
LOWgpt_researcher/llm_provider/image/image_generator.py351
LOWgpt_researcher/llm_provider/generic/base.py122
LOWgpt_researcher/utils/tools.py46
LOWgpt_researcher/utils/tools.py230
LOWgpt_researcher/utils/tools.py241
LOWgpt_researcher/mcp/research.py34
LOWgpt_researcher/mcp/research.py158
LOWgpt_researcher/mcp/tool_selector.py35
LOWgpt_researcher/mcp/client.py40
LOWgpt_researcher/mcp/streaming.py49
LOWgpt_researcher/document/document.py21
LOWgpt_researcher/actions/retriever.py109
LOWgpt_researcher/skills/researcher.py89
LOWgpt_researcher/skills/researcher.py266
LOWgpt_researcher/skills/researcher.py393
LOWgpt_researcher/skills/researcher.py449
LOWgpt_researcher/skills/researcher.py654
LOWgpt_researcher/skills/researcher.py751
LOWgpt_researcher/skills/researcher.py836
LOWgpt_researcher/skills/deep_research.py143
LOWgpt_researcher/skills/image_generator.py467
LOWgpt_researcher/skills/image_generator.py639
LOWbackend/server/server_utils.py327
LOWbackend/server/websocket_manager.py30
LOWbackend/server/websocket_manager.py66
LOWmulti_agents/agents/human.py10
Redundant / Tautological Comments19 hits · 31 pts
SeverityFileLineSnippet
LOWevals/hallucination_eval/evaluate.py66 # Print results
LOWgpt_researcher/scraper/firecrawl/firecrawl.py55 # Check if the page has been scraped successfully
LOWgpt_researcher/retrievers/mcp/retriever.py126 # Check if we have any server configurations
LOWgpt_researcher/retrievers/mcp/retriever.py214 # Check if we have any server configurations
LOWgpt_researcher/retrievers/mcp/__init__.py12 # Check if langchain-mcp-adapters is available
LOWgpt_researcher/utils/logger.py17 # Check if the logger already has handlers to avoid duplicates
LOWgpt_researcher/mcp/research.py84 # Check if the LLM made tool calls
LOWgpt_researcher/mcp/__init__.py16 # Check if langchain-mcp-adapters is available
LOWgpt_researcher/actions/query_processing.py25 # Check if this is an MCP retriever and pass the researcher instance
LOWgpt_researcher/actions/query_processing.py144 # Check if MCP is the only retriever or one of multiple retrievers
LOWgpt_researcher/skills/researcher.py129 # Check if MCP retrievers are configured
LOWgpt_researcher/skills/image_generator.py617 # Check if this is a header that needs an image
LOWtests/test-your-embeddings.py16 # Check if embedding attributes are set
LOWtests/documents-report-source.py45 # Check if the PDF and DOCX files are created
LOWtests/report-types.py36 # Check if the report contains part of the query
LOWbackend/utils.py82 # Set base_url to current directory for resolving any remaining relative paths
LOWbackend/chat/chat.py117 # Check if Tavily client is available
LOWbackend/server/server_utils.py210 # Check if ChatAgentWithMemory is available
LOW.github/workflows/deploy.yml149 # Check if commit contains application changes (non-terraform files)
Cross-File Repetition6 hits · 30 pts
SeverityFileLineSnippet
HIGHgpt_researcher/prompts.py0you must write all used source document names at the end of the report as references, and make sure to not add duplicate
HIGHgpt_researcher/prompts.py0you must write all used source document names at the end of the report as references, and make sure to not add duplicate
HIGHgpt_researcher/prompts.py0you must write all used source document names at the end of the report as references, and make sure to not add duplicate
HIGHgpt_researcher/skills/deep_research.py0previous research goal: {result['researchgoal']} follow-up questions: {' '.join(result['followupquestions'])}
HIGHbackend/report_type/deep_research/example.py0previous research goal: {result['researchgoal']} follow-up questions: {' '.join(result['followupquestions'])}
HIGHdocs/blog/2025-02-26-deep-research/index.md0previous research goal: {result['researchgoal']} follow-up questions: {' '.join(result['followupquestions'])}
Magic Placeholder Names5 hits · 25 pts
SeverityFileLineSnippet
HIGHREADME.md296 export LANGCHAIN_API_KEY=your_api_key
HIGHfrontend/nextjs/README.md80 apiKey="your-api-key-if-needed"
HIGH…s/docs/gpt-researcher/search-engines/search-engines.md53RETRIEVER_ARG_API_KEY=YOUR_API_KEY
HIGHdocs/docs/gpt-researcher/gptr/scraping.md109 export TAVILY_API_KEY="your-api-key"
HIGHdocs/docs/proposals/social-media-data-acquisition.md586 "Authorization": "Bearer YOUR_API_KEY",
Verbosity Indicators8 hits · 12 pts
SeverityFileLineSnippet
LOW…researcher/retrievers/pubmed_central/pubmed_central.py142 # Step 1: Search for article IDs
LOW…researcher/retrievers/pubmed_central/pubmed_central.py147 # Step 2: Fetch full text for each article
LOWgpt_researcher/skills/image_generator.py109 # Step 1: Use LLM to identify best visualization opportunities
LOWgpt_researcher/skills/image_generator.py124 # Step 2: Generate all images in parallel
LOWfrontend/nextjs/app/research/[id]/page.tsx115 // Step 1: Try to find it in localStorage first
LOWfrontend/nextjs/app/research/[id]/page.tsx134 // Step 2: Try to find it in the backend
LOWfrontend/nextjs/app/research/[id]/page.tsx211 // Step 3: If found in localStorage but not in backend, save it
LOWfrontend/nextjs/app/research/[id]/page.tsx256 // Step 4: If not found anywhere, show not found message
Docstring Block Structure2 hits · 10 pts
SeverityFileLineSnippet
HIGHgpt_researcher/utils/tools.py58 Create a chat completion with tool calling support across all LLM providers. This function uses LangChain'
HIGHmulti_agents/agents/utils/utils.py4 Sanitize a given filename by replacing characters that are invalid in Windows file paths with an underscore ('
Slop Phrases2 hits · 4 pts
SeverityFileLineSnippet
MEDIUMevals/hallucination_eval/results/aggregate_results.json11 "source": "Source: https://medium.com/@pranshu.singh765/mastering-llm-custom-data-training-in-2025-fine-tuning-lar
LOWgpt_researcher/prompts.py306- Don't forget to add a reference list at the end of the report in {report_format} format and full url links without hyp
Over-Commented Block4 hits · 4 pts
SeverityFileLineSnippet
LOWtests/research_test.py41 print(f"\nLength of the context = {len(researcher.get_research_context())}") # Must say Non-zero value because the q
LOWtests/research_test.py61# report, researcher = asyncio.run(get_report(query, report_type, sources))
LOWtests/research_test.py81# report_type = "research_report"
LOWtests/research_test.py101
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippet
LOWjson_schema_generator.py31# Example usage
Fake / Example Data1 hit · 2 pts
SeverityFileLineSnippet
LOWjson_schema_generator.py35 "name": "John Doe",