An autonomous agent that conducts deep research on any data using any LLM providers
703 matches across 16 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | cli.py | 204 | except Exception as e: |
| LOW | cli.py | 347 | except Exception as e: |
| LOW | cli.py | 356 | except Exception as e: |
| LOW | json_schema_generator.py | 28 | except Exception as e: |
| LOW | evals/hallucination_eval/run_eval.py | 188 | except Exception as e: |
| LOW | evals/hallucination_eval/evaluate.py | 51 | except Exception as e: |
| LOW | evals/simple_evals/run_eval.py | 112 | except Exception as e: |
| LOW | evals/simple_evals/run_eval.py | 181 | except Exception as e: |
| LOW | evals/simple_evals/run_eval.py | 195 | except Exception as e: |
| LOW | gpt_researcher/agent.py | 326 | except Exception as e: |
| LOW | gpt_researcher/scraper/scraper.py | 167 | except Exception as e: |
| LOW | gpt_researcher/scraper/utils.py | 54 | except Exception as e: |
| MEDIUM | gpt_researcher/scraper/utils.py | 66 | print(f"Error parsing dimension value {value}: {e}") |
| LOW | gpt_researcher/scraper/utils.py | 90 | except Exception as e: |
| LOW | gpt_researcher/scraper/pymupdf/pymupdf.py | 31 | except Exception: |
| LOW | gpt_researcher/scraper/pymupdf/pymupdf.py | 78 | except Exception as e: |
| MEDIUM | gpt_researcher/scraper/pymupdf/pymupdf.py | 79 | print(f"Error loading PDF : {self.link} {e}") |
| LOW | gpt_researcher/scraper/firecrawl/firecrawl.py | 80 | except Exception as e: |
| LOW | gpt_researcher/scraper/beautiful_soup/beautiful_soup.py | 40 | except Exception as e: |
| LOW | …_researcher/scraper/web_base_loader/web_base_loader.py | 41 | except Exception as e: |
| LOW | gpt_researcher/scraper/browser/browser.py | 51 | except Exception as e: |
| MEDIUM | gpt_researcher/scraper/browser/browser.py | 52 | print(f"An error occurred during scraping: {str(e)}") |
| LOW | gpt_researcher/scraper/browser/browser.py | 115 | except Exception as e: |
| LOW | gpt_researcher/scraper/browser/browser.py | 158 | except Exception as e: |
| LOW | gpt_researcher/scraper/browser/browser.py | 186 | except Exception as e: |
| MEDIUM | gpt_researcher/scraper/browser/browser.py | 61 | def _import_selenium(self): |
| LOW | gpt_researcher/scraper/browser/nodriver_scraper.py | 55 | except Exception: |
| LOW | gpt_researcher/scraper/browser/nodriver_scraper.py | 102 | except Exception as e: |
| LOW | gpt_researcher/scraper/browser/nodriver_scraper.py | 124 | except Exception as e: |
| LOW | gpt_researcher/scraper/browser/nodriver_scraper.py | 180 | except Exception as e: |
| LOW | gpt_researcher/scraper/browser/nodriver_scraper.py | 246 | except Exception as e: |
| LOW | gpt_researcher/scraper/browser/nodriver_scraper.py | 259 | except Exception as e: |
| MEDIUM | gpt_researcher/scraper/browser/nodriver_scraper.py | 138 | def create_browser(): |
| LOW | gpt_researcher/scraper/tavily_extract/tavily_extract.py | 60 | except Exception as e: |
| LOW | gpt_researcher/retrievers/utils.py | 41 | except Exception as e: |
| LOW | gpt_researcher/retrievers/utils.py | 101 | except Exception as e: |
| LOW | gpt_researcher/retrievers/duckduckgo/duckduckgo.py | 26 | except Exception as e: |
| MEDIUM | gpt_researcher/retrievers/duckduckgo/duckduckgo.py | 27 | print(f"Error: {e}. Failed fetching sources. Resulting in empty response.") |
| LOW | gpt_researcher/retrievers/google/google.py | 34 | except Exception: |
| LOW | gpt_researcher/retrievers/google/google.py | 48 | except Exception: |
| LOW | gpt_researcher/retrievers/google/google.py | 77 | except Exception: |
| LOW | gpt_researcher/retrievers/google/google.py | 96 | except Exception: |
| LOW | gpt_researcher/retrievers/bing/bing.py | 34 | except Exception: |
| LOW | gpt_researcher/retrievers/bing/bing.py | 74 | except Exception as e: |
| MEDIUM | …archer/retrievers/semantic_scholar/semantic_scholar.py | 43 | print(f"An error occurred while accessing Semantic Scholar API: {e}") |
| LOW | gpt_researcher/retrievers/searchapi/searchapi.py | 30 | except Exception: |
| LOW | gpt_researcher/retrievers/searchapi/searchapi.py | 80 | except Exception as e: |
| MEDIUM | gpt_researcher/retrievers/searchapi/searchapi.py | 81 | print(f"Error: {e}. Failed fetching sources. Resulting in empty response.") |
| LOW | gpt_researcher/retrievers/mcp/retriever.py | 190 | except Exception as e: |
| LOW | gpt_researcher/retrievers/mcp/retriever.py | 198 | except Exception as e: |
| LOW | gpt_researcher/retrievers/mcp/retriever.py | 260 | except Exception: |
| LOW | gpt_researcher/retrievers/mcp/retriever.py | 262 | except Exception: |
| LOW | gpt_researcher/retrievers/mcp/retriever.py | 280 | except Exception: |
| LOW | gpt_researcher/retrievers/mcp/retriever.py | 294 | except Exception as e: |
| LOW | gpt_researcher/retrievers/mcp/retriever.py | 321 | except Exception as e: |
| LOW | gpt_researcher/retrievers/mcp/__init__.py | 28 | except Exception as e: |
| MEDIUM | gpt_researcher/retrievers/openalex/openalex.py | 65 | print(f"An error occurred while accessing OpenAlex API: {e}") |
| LOW | gpt_researcher/retrievers/xquik/xquik.py | 50 | except Exception as e: |
| MEDIUM | gpt_researcher/retrievers/xquik/xquik.py | 51 | print(f"Error: {e}. Failed fetching X/Twitter sources. Resulting in empty response.") |
| MEDIUM | gpt_researcher/retrievers/xquik/xquik.py | 28 | def get_api_key(self): |
| 129 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | cli.py | 24 | |
| LOW | evals/hallucination_eval/run_eval.py | 16 | |
| LOW | evals/hallucination_eval/evaluate.py | 5 | |
| LOW | evals/hallucination_eval/evaluate.py | 6 | |
| LOW | evals/hallucination_eval/evaluate.py | 6 | |
| LOW | evals/hallucination_eval/evaluate.py | 8 | |
| LOW | evals/simple_evals/simpleqa_eval.py | 6 | |
| LOW | evals/simple_evals/simpleqa_eval.py | 7 | |
| LOW | evals/simple_evals/simpleqa_eval.py | 8 | |
| LOW | evals/simple_evals/simpleqa_eval.py | 11 | |
| LOW | evals/simple_evals/simpleqa_eval.py | 11 | |
| LOW | evals/simple_evals/simpleqa_eval.py | 11 | |
| LOW | evals/simple_evals/simpleqa_eval.py | 12 | |
| LOW | gpt_researcher/__init__.py | 1 | |
| LOW | gpt_researcher/agent.py | 8 | |
| LOW | gpt_researcher/agent.py | 21 | |
| LOW | gpt_researcher/scraper/__init__.py | 1 | |
| LOW | gpt_researcher/scraper/__init__.py | 2 | |
| LOW | gpt_researcher/scraper/__init__.py | 3 | |
| LOW | gpt_researcher/scraper/__init__.py | 4 | |
| LOW | gpt_researcher/scraper/__init__.py | 5 | |
| LOW | gpt_researcher/scraper/__init__.py | 6 | |
| LOW | gpt_researcher/scraper/__init__.py | 7 | |
| LOW | gpt_researcher/scraper/__init__.py | 8 | |
| LOW | gpt_researcher/scraper/__init__.py | 9 | |
| LOW | gpt_researcher/scraper/beautiful_soup/beautiful_soup.py | 2 | |
| LOW | …_researcher/scraper/web_base_loader/web_base_loader.py | 2 | |
| LOW | gpt_researcher/scraper/browser/browser.py | 1 | |
| LOW | gpt_researcher/scraper/browser/browser.py | 13 | |
| LOW | gpt_researcher/scraper/browser/browser.py | 13 | |
| LOW | gpt_researcher/scraper/browser/browser.py | 18 | |
| LOW | gpt_researcher/scraper/browser/browser.py | 68 | |
| LOW | gpt_researcher/scraper/browser/nodriver_scraper.py | 8 | |
| LOW | gpt_researcher/scraper/browser/processing/html.py | 2 | |
| LOW | gpt_researcher/retrievers/__init__.py | 1 | |
| LOW | gpt_researcher/retrievers/__init__.py | 2 | |
| LOW | gpt_researcher/retrievers/__init__.py | 3 | |
| LOW | gpt_researcher/retrievers/__init__.py | 4 | |
| LOW | gpt_researcher/retrievers/__init__.py | 5 | |
| LOW | gpt_researcher/retrievers/__init__.py | 6 | |
| LOW | gpt_researcher/retrievers/__init__.py | 7 | |
| LOW | gpt_researcher/retrievers/__init__.py | 8 | |
| LOW | gpt_researcher/retrievers/__init__.py | 9 | |
| LOW | gpt_researcher/retrievers/__init__.py | 10 | |
| LOW | gpt_researcher/retrievers/__init__.py | 11 | |
| LOW | gpt_researcher/retrievers/__init__.py | 12 | |
| LOW | gpt_researcher/retrievers/__init__.py | 13 | |
| LOW | gpt_researcher/retrievers/__init__.py | 14 | |
| LOW | gpt_researcher/retrievers/__init__.py | 15 | |
| LOW | gpt_researcher/retrievers/__init__.py | 16 | |
| LOW | gpt_researcher/retrievers/__init__.py | 17 | |
| LOW | gpt_researcher/retrievers/utils.py | 10 | |
| LOW | gpt_researcher/retrievers/duckduckgo/duckduckgo.py | 1 | |
| LOW | gpt_researcher/retrievers/mcp/retriever.py | 14 | |
| LOW | gpt_researcher/retrievers/mcp/retriever.py | 232 | |
| LOW | gpt_researcher/retrievers/mcp/__init__.py | 13 | |
| LOW | gpt_researcher/retrievers/tavily/tavily_search.py | 9 | |
| LOW | gpt_researcher/retrievers/bocha/bocha.py | 7 | |
| LOW | gpt_researcher/context/retriever.py | 2 | |
| LOW | gpt_researcher/context/retriever.py | 3 | |
| 141 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | cli.py | 27 | # ============================================================================= |
| MEDIUM | cli.py | 29 | # ============================================================================= |
| MEDIUM | cli.py | 36 | # ===================================== |
| MEDIUM | cli.py | 38 | # ===================================== |
| MEDIUM | cli.py | 46 | # ===================================== |
| MEDIUM | cli.py | 48 | # ===================================== |
| MEDIUM | cli.py | 86 | # ===================================== |
| MEDIUM | cli.py | 88 | # ===================================== |
| MEDIUM | cli.py | 97 | # ===================================== |
| MEDIUM | cli.py | 99 | # ===================================== |
| MEDIUM | cli.py | 108 | # ===================================== |
| MEDIUM | cli.py | 110 | # ===================================== |
| MEDIUM | cli.py | 72 | # ===================================== |
| MEDIUM | cli.py | 74 | # ===================================== |
| MEDIUM | cli.py | 121 | # ===================================== |
| MEDIUM | cli.py | 123 | # ===================================== |
| MEDIUM | cli.py | 137 | # ============================================================================= |
| MEDIUM | cli.py | 139 | # ============================================================================= |
| MEDIUM | cli.py | 261 | # ============================================================================= |
| MEDIUM | cli.py | 263 | # ============================================================================= |
| MEDIUM | cli.py | 319 | # ------------------------------------------------------------------ |
| MEDIUM | cli.py | 322 | # ------------------------------------------------------------------ |
| MEDIUM | terraform/variables.tf | 171 | # ============================================================================== |
| MEDIUM | terraform/variables.tf | 173 | # ============================================================================== |
| MEDIUM | terraform/variables.tf | 203 | # ============================================================================== |
| MEDIUM | terraform/variables.tf | 205 | # ============================================================================== |
| MEDIUM | …roposals/high-quality-content-scraping-architecture.md | 318 | # ═══════════════════════════════════════════════════════════════ |
| MEDIUM | …roposals/high-quality-content-scraping-architecture.md | 320 | # ═══════════════════════════════════════════════════════════════ |
| MEDIUM | …roposals/high-quality-content-scraping-architecture.md | 325 | # ═══════════════════════════════════════════════════════════════ |
| MEDIUM | …roposals/high-quality-content-scraping-architecture.md | 327 | # ═══════════════════════════════════════════════════════════════ |
| MEDIUM | …roposals/high-quality-content-scraping-architecture.md | 334 | # ═══════════════════════════════════════════════════════════════ |
| MEDIUM | …roposals/high-quality-content-scraping-architecture.md | 336 | # ═══════════════════════════════════════════════════════════════ |
| MEDIUM | docs/docs/proposals/adaptive-deep-research.md | 198 | # ═══════════════════════════════════════════════════════ |
| MEDIUM | docs/docs/proposals/adaptive-deep-research.md | 200 | # ═══════════════════════════════════════════════════════ |
| MEDIUM | docs/docs/proposals/adaptive-deep-research.md | 217 | # ═══════════════════════════════════════════════════════ |
| MEDIUM | docs/docs/proposals/adaptive-deep-research.md | 219 | # ═══════════════════════════════════════════════════════ |
| MEDIUM | docs/docs/proposals/adaptive-deep-research.md | 235 | # ═══════════════════════════════════════════════════════ |
| MEDIUM | docs/docs/proposals/adaptive-deep-research.md | 237 | # ═══════════════════════════════════════════════════════ |
| MEDIUM | docs/docs/proposals/adaptive-deep-research.md | 246 | # ═══════════════════════════════════════════════════════════ |
| MEDIUM | docs/docs/proposals/adaptive-deep-research.md | 248 | # ═══════════════════════════════════════════════════════════ |
| MEDIUM | docs/docs/proposals/adaptive-deep-research.md | 452 | # ═══════════════════════════════════════════════════════════════ |
| MEDIUM | docs/docs/proposals/adaptive-deep-research.md | 454 | # ═══════════════════════════════════════════════════════════════ |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | gpt_researcher/prompts.py | 40 | def generate_mcp_tool_selection_prompt(query: str, tools_info: List[Dict], max_tools: int = 3) -> str: |
| LOW | gpt_researcher/prompts.py | 86 | def generate_mcp_research_prompt(query: str, selected_tools: List) -> str: |
| LOW | gpt_researcher/prompts.py | 122 | def generate_image_analysis_prompt( |
| LOW | gpt_researcher/prompts.py | 178 | def generate_image_prompt_enhancement( |
| LOW | gpt_researcher/prompts.py | 213 | def generate_search_queries_prompt( |
| LOW | gpt_researcher/prompts.py | 349 | def generate_resource_report_prompt( |
| LOW | gpt_researcher/prompts.py | 389 | def generate_custom_report_prompt( |
| LOW | gpt_researcher/prompts.py | 395 | def generate_outline_report_prompt( |
| LOW | gpt_researcher/prompts.py | 414 | def generate_deep_research_prompt( |
| LOW | gpt_researcher/prompts.py | 528 | def generate_quick_summary_prompt(query: str, context: str) -> str: |
| LOW | gpt_researcher/prompts.py | 569 | def generate_subtopics_prompt() -> str: |
| LOW | gpt_researcher/prompts.py | 592 | def generate_subtopic_report_prompt( |
| LOW | gpt_researcher/prompts.py | 669 | def generate_draft_titles_prompt( |
| LOW | gpt_researcher/prompts.py | 703 | def generate_report_introduction(question: str, research_summary: str = "", language: str = "english", report_format |
| LOW | gpt_researcher/prompts.py | 716 | def generate_report_conclusion(query: str, report_content: str, language: str = "english", report_format: str = "apa |
| LOW | gpt_researcher/prompts.py | 858 | def get_prompt_by_report_type( |
| LOW | gpt_researcher/agent.py | 571 | async def get_similar_written_contents_by_draft_section_titles( |
| LOW | gpt_researcher/scraper/utils.py | 114 | def does_tag_have_disallowed_class(elem) -> bool: |
| LOW | gpt_researcher/scraper/browser/browser.py | 175 | def _visit_google_and_save_cookies(self): |
| LOW | gpt_researcher/scraper/browser/browser.py | 191 | def scrape_text_with_selenium(self) -> tuple: |
| LOW | gpt_researcher/retrievers/serper/serper.py | 32 | def _get_exclude_sites_from_env(self): |
| LOW | gpt_researcher/context/compression.py | 122 | def __get_contextual_retriever(self): |
| LOW | gpt_researcher/context/compression.py | 208 | def __get_contextual_retriever(self): |
| LOW | gpt_researcher/config/config.py | 85 | def _set_embedding_attributes(self) -> None: |
| LOW | gpt_researcher/config/config.py | 98 | def _handle_deprecated_attributes(self) -> None: |
| LOW | gpt_researcher/llm_provider/generic/base.py | 101 | def _reset_last_response_metadata(self) -> None: |
| LOW | gpt_researcher/llm_provider/generic/base.py | 105 | def _capture_response_metadata(self, message: Any) -> None: |
| LOW | gpt_researcher/utils/tools.py | 46 | async def create_chat_completion_with_tools( |
| LOW | gpt_researcher/utils/tools.py | 320 | def get_available_providers_with_tools() -> List[str]: |
| LOW | gpt_researcher/utils/costs.py | 70 | def _resolve_anthropic_model_name( |
| LOW | gpt_researcher/utils/costs.py | 119 | def _get_anthropic_pricing_multiplier( |
| LOW | gpt_researcher/mcp/research.py | 34 | async def conduct_research_with_tools(self, query: str, selected_tools: List) -> List[Dict[str, str]]: |
| LOW | gpt_researcher/mcp/tool_selector.py | 129 | async def _call_llm_for_tool_selection(self, prompt: str) -> str: |
| LOW | gpt_researcher/mcp/client.py | 40 | def convert_configs_to_langchain_format(self) -> Dict[str, Dict[str, Any]]: |
| LOW | gpt_researcher/vector_store/vector_store.py | 26 | def _create_langchain_documents(self, data: List[Dict[str, str]]) -> List[Document]: |
| LOW | gpt_researcher/actions/report_generation.py | 12 | async def write_report_introduction( |
| LOW | gpt_researcher/actions/report_generation.py | 160 | async def generate_draft_section_titles( |
| LOW | gpt_researcher/actions/markdown_processing.py | 78 | def generate_table_of_contents(headers, indent_level=0): |
| LOW | gpt_researcher/skills/context_manager.py | 37 | async def get_similar_content_by_query(self, query: str, pages: list) -> str: |
| LOW | gpt_researcher/skills/context_manager.py | 65 | async def get_similar_content_by_query_with_vectorstore(self, query: str, filter: dict | None) -> str: |
| LOW | gpt_researcher/skills/context_manager.py | 88 | async def get_similar_written_contents_by_draft_section_titles( |
| LOW | gpt_researcher/skills/context_manager.py | 120 | async def __get_similar_written_contents_by_query( |
| LOW | gpt_researcher/skills/researcher.py | 233 | async def _get_context_by_vectorstore(self, query, filter: dict | None = None): |
| LOW | gpt_researcher/skills/researcher.py | 266 | async def _get_context_by_web_search(self, query, scraped_data: list | None = None, query_domains: list | None = Non |
| LOW | gpt_researcher/skills/researcher.py | 393 | async def _execute_mcp_research_for_queries(self, queries: list, mcp_retrievers: list) -> list: |
| LOW | gpt_researcher/skills/researcher.py | 654 | def _combine_mcp_and_web_context(self, mcp_context: list, web_context: str, sub_query: str) -> str: |
| LOW | gpt_researcher/skills/researcher.py | 707 | async def _process_sub_query_with_vectorstore(self, sub_query: str, filter: dict | None = None): |
| LOW | gpt_researcher/skills/researcher.py | 751 | async def _search_relevant_source_urls(self, query, query_domains: list | None = None): |
| LOW | gpt_researcher/skills/deep_research.py | 77 | def parse_search_queries_response(response: str, num_queries: int) -> List[Dict[str, str]]: |
| LOW | gpt_researcher/skills/deep_research.py | 119 | def parse_follow_up_questions_response(response: str, num_questions: int) -> List[str]: |
| LOW | gpt_researcher/skills/deep_research.py | 143 | def parse_research_results_response(response: str, num_learnings: int) -> Dict[str, Any]: |
| LOW | gpt_researcher/skills/deep_research.py | 213 | def trim_context_to_word_limit(context_list: List[str], max_words: int = MAX_CONTEXT_WORDS) -> List[str]: |
| LOW | gpt_researcher/skills/image_generator.py | 271 | async def analyze_report_for_images( |
| LOW | gpt_researcher/skills/image_generator.py | 467 | async def generate_images_for_report( |
| LOW | gpt_researcher/skills/image_generator.py | 639 | async def process_image_placeholders( |
| LOW | multi_agents_ag2/agents/editor.py | 65 | def _format_planning_instructions( |
| LOW | tests/test_research_conductor_retrieval.py | 56 | async def test_snippet_only_results_are_sent_to_scraper(self): |
| LOW | tests/test_research_conductor_retrieval.py | 68 | async def test_raw_content_results_stay_prefetched(self): |
| LOW | tests/test_multi_agents_plan_revisions.py | 19 | def test_human_feedback_route_accepts_when_no_feedback(): |
| LOW | tests/test_multi_agents_plan_revisions.py | 23 | def test_human_feedback_route_revises_until_limit(): |
| 78 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | gpt_researcher/retrievers/mcp/retriever.py | 234 | # Create a new event loop in a separate thread |
| MEDIUM | gpt_researcher/utils/logger.py | 19 | # Create a handler |
| MEDIUM | gpt_researcher/utils/logger.py | 22 | # Create a formatter using DefaultFormatter |
| MEDIUM | gpt_researcher/mcp/research.py | 236 | # Create a search result with a generic title |
| MEDIUM | gpt_researcher/skills/researcher.py | 683 | # Create a well-formatted context entry |
| MEDIUM | gpt_researcher/skills/image_generator.py | 605 | # Create a mapping of section headers to images |
| MEDIUM | tests/test-your-embeddings.py | 30 | # Create a Memory instance using the configuration |
| MEDIUM | tests/documents-report-source.py | 9 | # Define the report types to test |
| MEDIUM | tests/documents-report-source.py | 19 | # Define a common query and sources for testing |
| MEDIUM | tests/documents-report-source.py | 22 | # Define the output directory |
| MEDIUM | tests/documents-report-source.py | 33 | # Create an instance of GPTResearcher with report_source set to "documents" |
| MEDIUM | tests/documents-report-source.py | 41 | # Define the expected output filenames |
| MEDIUM | tests/report-types.py | 9 | # Define the report types to test |
| MEDIUM | tests/report-types.py | 12 | # Define a common query and sources for testing |
| MEDIUM | tests/report-types.py | 21 | # Create an instance of GPTResearcher |
| MEDIUM | tests/test-your-retriever.py | 11 | # Initialize the Config object |
| MEDIUM | tests/test-your-retriever.py | 18 | # Create a mock researcher object with necessary attributes |
| MEDIUM | tests/test-your-retriever.py | 32 | # Define a sub-query to test |
| MEDIUM | tests/test_security_fix.py | 131 | # Create a symlink pointing outside the directory |
| MEDIUM | tests/test_security_fix.py | 291 | # Create a subdirectory |
| MEDIUM | tests/test_security_fix.py | 97 | # Create a filename longer than 255 bytes |
| MEDIUM | tests/test_security_fix.py | 220 | # Create an existing file |
| MEDIUM | tests/test_security_fix.py | 261 | # Create a test file |
| MEDIUM | tests/vector-store.py | 127 | # Create an instance of GPTResearcher |
| MEDIUM | tests/test_researcher_logging.py | 26 | # Create a researcher instance with a logging-focused query |
| MEDIUM | backend/utils.py | 115 | # Create a document object |
| MEDIUM | backend/chat/chat.py | 155 | # Create a search tool using the utility function |
| MEDIUM | backend/server/logging_config.py | 78 | # Create a function to get the logger and JSON handler |
| MEDIUM | multi_agents/agents/utils/file_formats.py | 89 | # Create a document object |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | evals/hallucination_eval/results/aggregate_results.json | 10 | "output": "# The Best Tutorials for Training LLMs on Custom Data: An In-Depth Report (2025)\n\nThe rapid evolution |
| MEDIUM | evals/hallucination_eval/results/aggregate_results.json | 10 | "output": "# The Best Tutorials for Training LLMs on Custom Data: An In-Depth Report (2025)\n\nThe rapid evolution |
| MEDIUM | evals/hallucination_eval/results/aggregate_results.json | 10 | "output": "# The Best Tutorials for Training LLMs on Custom Data: An In-Depth Report (2025)\n\nThe rapid evolution |
| MEDIUM | evals/hallucination_eval/results/aggregate_results.json | 11 | "source": "Source: https://medium.com/@pranshu.singh765/mastering-llm-custom-data-training-in-2025-fine-tuning-lar |
| MEDIUM | evals/hallucination_eval/results/aggregate_results.json | 11 | "source": "Source: https://medium.com/@pranshu.singh765/mastering-llm-custom-data-training-in-2025-fine-tuning-lar |
| MEDIUM | evals/hallucination_eval/results/aggregate_results.json | 11 | "source": "Source: https://medium.com/@pranshu.singh765/mastering-llm-custom-data-training-in-2025-fine-tuning-lar |
| MEDIUM | evals/hallucination_eval/results/aggregate_results.json | 11 | "source": "Source: https://medium.com/@pranshu.singh765/mastering-llm-custom-data-training-in-2025-fine-tuning-lar |
| MEDIUM | evals/hallucination_eval/results/aggregate_results.json | 11 | "source": "Source: https://medium.com/@pranshu.singh765/mastering-llm-custom-data-training-in-2025-fine-tuning-lar |
| MEDIUM | evals/hallucination_eval/results/aggregate_results.json | 11 | "source": "Source: https://medium.com/@pranshu.singh765/mastering-llm-custom-data-training-in-2025-fine-tuning-lar |
| MEDIUM | evals/hallucination_eval/results/aggregate_results.json | 16 | "output": "# Emerging Trends in Real-Time AI Evaluation Tools: A 2025 Analysis\n\nThe rapid integration of artific |
| MEDIUM | evals/hallucination_eval/results/aggregate_results.json | 16 | "output": "# Emerging Trends in Real-Time AI Evaluation Tools: A 2025 Analysis\n\nThe rapid integration of artific |
| MEDIUM | evals/hallucination_eval/results/aggregate_results.json | 16 | "output": "# Emerging Trends in Real-Time AI Evaluation Tools: A 2025 Analysis\n\nThe rapid integration of artific |
| MEDIUM | evals/hallucination_eval/results/aggregate_results.json | 16 | "output": "# Emerging Trends in Real-Time AI Evaluation Tools: A 2025 Analysis\n\nThe rapid integration of artific |
| MEDIUM | evals/hallucination_eval/results/aggregate_results.json | 16 | "output": "# Emerging Trends in Real-Time AI Evaluation Tools: A 2025 Analysis\n\nThe rapid integration of artific |
| MEDIUM | evals/hallucination_eval/results/aggregate_results.json | 17 | "source": "Source: https://www.globenewswire.com/news-release/2025/04/26/3068732/0/en/These-5-AI-trends-Will-Shape |
| MEDIUM | gpt_researcher/prompts.py | 105 | return f"""You are a research assistant with access to specialized tools. Your task is to research the following |
| LOW | gpt_researcher/actions/web_scraping.py | 76 | # For now, we'll just return the raw HTML as a placeholder |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | evals/hallucination_eval/run_eval.py | 146 | |
| LOW | gpt_researcher/agent.py | 216 | |
| LOW | gpt_researcher/agent.py | 310 | |
| LOW | gpt_researcher/scraper/utils.py | 16 | |
| LOW | gpt_researcher/scraper/pymupdf/pymupdf.py | 34 | |
| LOW | gpt_researcher/scraper/browser/browser.py | 83 | |
| LOW | gpt_researcher/retrievers/searchapi/searchapi.py | 35 | |
| LOW | gpt_researcher/retrievers/mcp/retriever.py | 201 | |
| LOW | gpt_researcher/retrievers/mcp/retriever.py | 235 | |
| LOW | gpt_researcher/retrievers/serpapi/serpapi.py | 36 | |
| LOW | gpt_researcher/config/config.py | 98 | |
| LOW | gpt_researcher/config/config.py | 257 | |
| LOW | gpt_researcher/llm_provider/image/image_generator.py | 268 | |
| LOW | gpt_researcher/llm_provider/image/image_generator.py | 351 | |
| LOW | gpt_researcher/llm_provider/generic/base.py | 122 | |
| LOW | gpt_researcher/utils/tools.py | 46 | |
| LOW | gpt_researcher/utils/tools.py | 230 | |
| LOW | gpt_researcher/utils/tools.py | 241 | |
| LOW | gpt_researcher/mcp/research.py | 34 | |
| LOW | gpt_researcher/mcp/research.py | 158 | |
| LOW | gpt_researcher/mcp/tool_selector.py | 35 | |
| LOW | gpt_researcher/mcp/client.py | 40 | |
| LOW | gpt_researcher/mcp/streaming.py | 49 | |
| LOW | gpt_researcher/document/document.py | 21 | |
| LOW | gpt_researcher/actions/retriever.py | 109 | |
| LOW | gpt_researcher/skills/researcher.py | 89 | |
| LOW | gpt_researcher/skills/researcher.py | 266 | |
| LOW | gpt_researcher/skills/researcher.py | 393 | |
| LOW | gpt_researcher/skills/researcher.py | 449 | |
| LOW | gpt_researcher/skills/researcher.py | 654 | |
| LOW | gpt_researcher/skills/researcher.py | 751 | |
| LOW | gpt_researcher/skills/researcher.py | 836 | |
| LOW | gpt_researcher/skills/deep_research.py | 143 | |
| LOW | gpt_researcher/skills/image_generator.py | 467 | |
| LOW | gpt_researcher/skills/image_generator.py | 639 | |
| LOW | backend/server/server_utils.py | 327 | |
| LOW | backend/server/websocket_manager.py | 30 | |
| LOW | backend/server/websocket_manager.py | 66 | |
| LOW | multi_agents/agents/human.py | 10 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | evals/hallucination_eval/evaluate.py | 66 | # Print results |
| LOW | gpt_researcher/scraper/firecrawl/firecrawl.py | 55 | # Check if the page has been scraped successfully |
| LOW | gpt_researcher/retrievers/mcp/retriever.py | 126 | # Check if we have any server configurations |
| LOW | gpt_researcher/retrievers/mcp/retriever.py | 214 | # Check if we have any server configurations |
| LOW | gpt_researcher/retrievers/mcp/__init__.py | 12 | # Check if langchain-mcp-adapters is available |
| LOW | gpt_researcher/utils/logger.py | 17 | # Check if the logger already has handlers to avoid duplicates |
| LOW | gpt_researcher/mcp/research.py | 84 | # Check if the LLM made tool calls |
| LOW | gpt_researcher/mcp/__init__.py | 16 | # Check if langchain-mcp-adapters is available |
| LOW | gpt_researcher/actions/query_processing.py | 25 | # Check if this is an MCP retriever and pass the researcher instance |
| LOW | gpt_researcher/actions/query_processing.py | 144 | # Check if MCP is the only retriever or one of multiple retrievers |
| LOW | gpt_researcher/skills/researcher.py | 129 | # Check if MCP retrievers are configured |
| LOW | gpt_researcher/skills/image_generator.py | 617 | # Check if this is a header that needs an image |
| LOW | tests/test-your-embeddings.py | 16 | # Check if embedding attributes are set |
| LOW | tests/documents-report-source.py | 45 | # Check if the PDF and DOCX files are created |
| LOW | tests/report-types.py | 36 | # Check if the report contains part of the query |
| LOW | backend/utils.py | 82 | # Set base_url to current directory for resolving any remaining relative paths |
| LOW | backend/chat/chat.py | 117 | # Check if Tavily client is available |
| LOW | backend/server/server_utils.py | 210 | # Check if ChatAgentWithMemory is available |
| LOW | .github/workflows/deploy.yml | 149 | # Check if commit contains application changes (non-terraform files) |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | gpt_researcher/prompts.py | 0 | you must write all used source document names at the end of the report as references, and make sure to not add duplicate |
| HIGH | gpt_researcher/prompts.py | 0 | you must write all used source document names at the end of the report as references, and make sure to not add duplicate |
| HIGH | gpt_researcher/prompts.py | 0 | you must write all used source document names at the end of the report as references, and make sure to not add duplicate |
| HIGH | gpt_researcher/skills/deep_research.py | 0 | previous research goal: {result['researchgoal']} follow-up questions: {' '.join(result['followupquestions'])} |
| HIGH | backend/report_type/deep_research/example.py | 0 | previous research goal: {result['researchgoal']} follow-up questions: {' '.join(result['followupquestions'])} |
| HIGH | docs/blog/2025-02-26-deep-research/index.md | 0 | previous research goal: {result['researchgoal']} follow-up questions: {' '.join(result['followupquestions'])} |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | README.md | 296 | export LANGCHAIN_API_KEY=your_api_key |
| HIGH | frontend/nextjs/README.md | 80 | apiKey="your-api-key-if-needed" |
| HIGH | …s/docs/gpt-researcher/search-engines/search-engines.md | 53 | RETRIEVER_ARG_API_KEY=YOUR_API_KEY |
| HIGH | docs/docs/gpt-researcher/gptr/scraping.md | 109 | export TAVILY_API_KEY="your-api-key" |
| HIGH | docs/docs/proposals/social-media-data-acquisition.md | 586 | "Authorization": "Bearer YOUR_API_KEY", |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …researcher/retrievers/pubmed_central/pubmed_central.py | 142 | # Step 1: Search for article IDs |
| LOW | …researcher/retrievers/pubmed_central/pubmed_central.py | 147 | # Step 2: Fetch full text for each article |
| LOW | gpt_researcher/skills/image_generator.py | 109 | # Step 1: Use LLM to identify best visualization opportunities |
| LOW | gpt_researcher/skills/image_generator.py | 124 | # Step 2: Generate all images in parallel |
| LOW | frontend/nextjs/app/research/[id]/page.tsx | 115 | // Step 1: Try to find it in localStorage first |
| LOW | frontend/nextjs/app/research/[id]/page.tsx | 134 | // Step 2: Try to find it in the backend |
| LOW | frontend/nextjs/app/research/[id]/page.tsx | 211 | // Step 3: If found in localStorage but not in backend, save it |
| LOW | frontend/nextjs/app/research/[id]/page.tsx | 256 | // Step 4: If not found anywhere, show not found message |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | gpt_researcher/utils/tools.py | 58 | Create a chat completion with tool calling support across all LLM providers. This function uses LangChain' |
| HIGH | multi_agents/agents/utils/utils.py | 4 | Sanitize a given filename by replacing characters that are invalid in Windows file paths with an underscore (' |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | evals/hallucination_eval/results/aggregate_results.json | 11 | "source": "Source: https://medium.com/@pranshu.singh765/mastering-llm-custom-data-training-in-2025-fine-tuning-lar |
| LOW | gpt_researcher/prompts.py | 306 | - Don't forget to add a reference list at the end of the report in {report_format} format and full url links without hyp |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/research_test.py | 41 | print(f"\nLength of the context = {len(researcher.get_research_context())}") # Must say Non-zero value because the q |
| LOW | tests/research_test.py | 61 | # report, researcher = asyncio.run(get_report(query, report_type, sources)) |
| LOW | tests/research_test.py | 81 | # report_type = "research_report" |
| LOW | tests/research_test.py | 101 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | json_schema_generator.py | 31 | # Example usage |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | json_schema_generator.py | 35 | "name": "John Doe", |