The official gpt4free repository | various collection of powerful language models | opus 4.6 gpt 5.3 kimi 2.5 deepseek v3.2 gemini 3
This report presents the forensic synthetic code analysis of xtekky/gpt4free, a Python project with 66,472 GitHub stars. SynthScan v2.0 examined 66,799 lines of code across 337 source files, recording 1433 pattern matches distributed across 22 syntactic categories. The overall adjusted score of 29.7 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1433 distinct pattern matches across 22 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | g4f/tools/optimize_request.py | 18 | # ── System prompt condensation ────────────────────────────────────────────── | COMMENT |
| MEDIUM | g4f/tools/optimize_request.py | 100 | # ── Tools to remove entirely ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | g4f/tools/optimize_request.py | 136 | # ── Tool description replacements ─────────────────────────────────────────── | COMMENT |
| MEDIUM | g4f/tools/optimize_request.py | 607 | # ── Message-level optimization ────────────────────────────────────────────── | COMMENT |
| MEDIUM | g4f/tools/optimize_request.py | 733 | # ── Tool-loop detection ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | g4f/tools/optimize_request.py | 924 | # ── Tool result truncation ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | g4f/tools/optimize_request.py | 998 | # ── Strip redundant tool_call fields ───────────────────────────────────────── | COMMENT |
| MEDIUM | g4f/tools/optimize_request.py | 1048 | # ── Collapse whitespace in message content ────────────────────────────────── | COMMENT |
| MEDIUM | g4f/tools/optimize_request.py | 1088 | # ── Drop stale context (old user turns beyond a threshold) ─────────────────── | COMMENT |
| MEDIUM | g4f/tools/optimize_request.py | 1237 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | g4f/tools/optimize_request.py | 1239 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | g4f/tools/token_optimizer.py | 41 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | g4f/tools/token_optimizer.py | 43 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | g4f/tools/token_optimizer.py | 103 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | g4f/tools/token_optimizer.py | 105 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | g4f/tools/token_optimizer.py | 155 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | g4f/tools/token_optimizer.py | 157 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | g4f/providers/config_provider.py | 76 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | g4f/providers/config_provider.py | 78 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | g4f/providers/config_provider.py | 127 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | g4f/providers/config_provider.py | 129 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | g4f/providers/config_provider.py | 172 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | g4f/providers/config_provider.py | 174 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | g4f/providers/config_provider.py | 335 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | g4f/providers/config_provider.py | 337 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | g4f/providers/config_provider.py | 364 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | g4f/providers/config_provider.py | 366 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | g4f/providers/config_provider.py | 433 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | g4f/providers/config_provider.py | 435 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | g4f/Provider/OllamaSwarm.py | 16 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | g4f/Provider/OllamaSwarm.py | 22 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | g4f/Provider/OllamaSwarm.py | 398 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | g4f/Provider/OllamaSwarm.py | 400 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | g4f/Provider/OllamaSwarm.py | 454 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | g4f/Provider/OllamaSwarm.py | 456 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | g4f/Provider/OllamaSwarm.py | 529 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | g4f/Provider/OllamaSwarm.py | 531 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | g4f/Provider/qwen/cookie_generator.py | 462 | # ----------------------- | COMMENT |
| MEDIUM⚡ | g4f/Provider/qwen/cookie_generator.py | 464 | # ----------------------- | COMMENT |
| MEDIUM | g4f/Provider/qwen/generate_ua.py | 10 | # ========================= | COMMENT |
| MEDIUM | g4f/Provider/qwen/generate_ua.py | 12 | # ========================= | COMMENT |
| MEDIUM | g4f/Provider/qwen/generate_ua.py | 44 | # ========================= | COMMENT |
| MEDIUM | g4f/Provider/qwen/generate_ua.py | 46 | # ========================= | COMMENT |
| MEDIUM | g4f/Provider/qwen/generate_ua.py | 143 | # ========================= | COMMENT |
| MEDIUM | g4f/Provider/qwen/generate_ua.py | 145 | # ========================= | COMMENT |
| MEDIUM | g4f/Provider/qwen/generate_ua.py | 238 | # ========================= | COMMENT |
| MEDIUM | g4f/Provider/qwen/generate_ua.py | 240 | # ========================= | COMMENT |
| MEDIUM | g4f/Provider/qwen/fingerprint.py | 5 | # ========================= | COMMENT |
| MEDIUM | g4f/Provider/qwen/fingerprint.py | 7 | # ========================= | COMMENT |
| MEDIUM | g4f/Provider/qwen/fingerprint.py | 38 | # ========================= | COMMENT |
| MEDIUM | g4f/Provider/qwen/fingerprint.py | 40 | # ========================= | COMMENT |
| MEDIUM | g4f/Provider/qwen/fingerprint.py | 93 | # ========================= | COMMENT |
| MEDIUM | g4f/Provider/qwen/fingerprint.py | 95 | # ========================= | COMMENT |
| MEDIUM | g4f/Provider/qwen/fingerprint.py | 107 | # ========================= | COMMENT |
| MEDIUM | g4f/Provider/qwen/fingerprint.py | 109 | # ========================= | COMMENT |
| MEDIUM | g4f/Provider/glm/__init__.py | 78 | # ── Signature (spoofing.ts: computeSignature) ────────────────────────── | COMMENT |
| MEDIUM | g4f/Provider/glm/__init__.py | 91 | # ── Fingerprint params (spoofing.ts: buildFingerprintParams) ──────────── | COMMENT |
| MEDIUM | g4f/Provider/glm/__init__.py | 143 | # ── Headers (spoofing.ts: buildGlmHeaders) ────────────────────────────── | COMMENT |
| MEDIUM | g4f/Provider/glm/__init__.py | 173 | # ── Variables (spoofing.ts: buildGlmVariables) ────────────────────────── | COMMENT |
| MEDIUM | g4f/Provider/glm/__init__.py | 194 | # ── Auth cache (AuthFileMixin) ────────────────────────────────────────── | COMMENT |
| 96 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | g4f/cookies.py | 154 | except Exception as e: | CODE |
| LOW | g4f/cookies.py | 272 | except Exception as e: | CODE |
| LOW | g4f/version.py | 33 | except Exception as e: | CODE |
| LOW | g4f/version.py | 56 | except Exception as e: | CODE |
| LOW | g4f/version.py | 120 | except Exception: | CODE |
| LOW | g4f/version.py | 146 | except Exception as e: | CODE |
| LOW | g4f/tray.py | 59 | except Exception: | CODE |
| LOW | g4f/tray.py | 77 | except Exception: | CODE |
| LOW | g4f/tray.py | 141 | except Exception as exc: | CODE |
| MEDIUM | g4f/tray.py | 134 | def _run(): | CODE |
| LOW | g4f/tools/files.py | 63 | except Exception: | CODE |
| LOW | g4f/tools/files.py | 443 | except Exception as e: | CODE |
| LOW | g4f/tools/files.py | 565 | except Exception as e: | CODE |
| LOW | g4f/tools/files.py | 578 | except Exception as e: | CODE |
| LOW⚡ | g4f/tools/token_optimizer.py | 99 | except Exception: | CODE |
| LOW⚡ | g4f/tools/token_optimizer.py | 151 | except Exception: | CODE |
| LOW | g4f/tools/token_optimizer.py | 209 | except Exception as exc: | CODE |
| LOW | g4f/tools/run_tools.py | 84 | except Exception: | CODE |
| LOW | g4f/tools/run_tools.py | 324 | except Exception as e: | CODE |
| LOW | g4f/tools/run_tools.py | 485 | except Exception: | CODE |
| LOW | g4f/tools/run_tools.py | 580 | except Exception as e: | CODE |
| LOW | g4f/tools/run_tools.py | 704 | except Exception: | CODE |
| LOW | g4f/integration/markitdown/_llm_caption.py | 25 | except Exception as e: | CODE |
| LOW | g4f/integration/markitdown/__init__.py | 98 | except Exception: | CODE |
| LOW | g4f/integration/markitdown/_youtube_converter.py | 65 | except Exception: | CODE |
| LOW | g4f/integration/markitdown/_youtube_converter.py | 175 | except Exception as e: | CODE |
| MEDIUM | g4f/integration/markitdown/_youtube_converter.py | 176 | print(f"Error extracting description: {e}") | CODE |
| LOW | g4f/integration/markitdown/_youtube_converter.py | 236 | except Exception as e: | CODE |
| MEDIUM | g4f/integration/markitdown/_youtube_converter.py | 239 | print(f"Error fetching transcript: {e}") | CODE |
| LOW | g4f/integration/markitdown/_youtube_converter.py | 250 | except Exception as e: | CODE |
| MEDIUM | g4f/integration/markitdown/_youtube_converter.py | 251 | print(f"Error processing transcript: {e}") | CODE |
| LOW | g4f/integration/markitdown/_youtube_converter.py | 295 | except Exception as e: | CODE |
| LOW | g4f/providers/config_provider.py | 389 | except Exception as e: | CODE |
| LOW | g4f/providers/config_provider.py | 466 | except Exception as e: | CODE |
| LOW | g4f/providers/config_provider.py | 571 | except Exception as e: | CODE |
| LOW | g4f/providers/retry_provider.py | 128 | except Exception as e: | CODE |
| LOW | g4f/providers/retry_provider.py | 187 | except Exception as e: | CODE |
| LOW | g4f/providers/retry_provider.py | 257 | except Exception as e: | CODE |
| LOW | g4f/providers/asyncio.py | 56 | except Exception: | CODE |
| LOW | g4f/providers/any_provider.py | 189 | except Exception as e: | CODE |
| LOW | g4f/providers/any_provider.py | 208 | except Exception as e: | CODE |
| LOW | g4f/providers/any_provider.py | 268 | except Exception as e: | CODE |
| LOW | g4f/providers/any_provider.py | 484 | except Exception as e: | CODE |
| LOW | g4f/providers/tool_support.py | 41 | except Exception: | CODE |
| LOW | g4f/providers/tool_support.py | 52 | except Exception: | CODE |
| LOW | g4f/providers/tool_support.py | 56 | except Exception: | CODE |
| LOW | g4f/providers/tool_support.py | 76 | except Exception: | CODE |
| LOW | g4f/providers/tool_support.py | 162 | except Exception: | CODE |
| LOW | g4f/providers/tool_support.py | 485 | except Exception: | CODE |
| LOW | g4f/providers/tool_support.py | 519 | except Exception: | CODE |
| LOW⚡ | g4f/Provider/OllamaSwarm.py | 394 | except Exception as e: | CODE |
| LOW⚡ | g4f/Provider/OllamaSwarm.py | 449 | except Exception as exc: | CODE |
| LOW⚡ | g4f/Provider/OllamaSwarm.py | 523 | except Exception as e: | CODE |
| LOW | g4f/Provider/OllamaSwarm.py | 474 | except Exception: | CODE |
| LOW | g4f/Provider/OllamaSwarm.py | 492 | except Exception as e: | CODE |
| LOW | g4f/Provider/OllamaSwarm.py | 653 | except Exception as e: | CODE |
| LOW | g4f/Provider/DeepAI.py | 218 | except Exception as e: | CODE |
| LOW | g4f/Provider/PollinationsAI.py | 90 | except Exception as e: | CODE |
| LOW | g4f/Provider/PollinationsAI.py | 132 | except Exception as e: | CODE |
| LOW | g4f/Provider/PollinationsAI.py | 197 | except Exception as e: | CODE |
| 291 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | g4f/cookies.py | 1 | CODE | |
| LOW | g4f/files.py | 1 | CODE | |
| LOW | g4f/config.py | 1 | CODE | |
| LOW | g4f/version.py | 1 | CODE | |
| LOW | g4f/version.py | 3 | CODE | |
| LOW | g4f/tray.py | 11 | CODE | |
| LOW | g4f/models.py | 1 | CODE | |
| LOW | g4f/models.py | 6 | CODE | |
| LOW | g4f/__init__.py | 1 | CODE | |
| LOW | g4f/__init__.py | 7 | CODE | |
| LOW | g4f/__init__.py | 7 | CODE | |
| LOW | g4f/__init__.py | 10 | CODE | |
| LOW | g4f/__init__.py | 10 | CODE | |
| LOW | g4f/__init__.py | 10 | CODE | |
| LOW | g4f/__init__.py | 10 | CODE | |
| LOW | g4f/__init__.py | 12 | CODE | |
| LOW | g4f/__init__.py | 12 | CODE | |
| LOW | g4f/__init__.py | 16 | CODE | |
| LOW | g4f/typing.py | 1 | CODE | |
| LOW | g4f/typing.py | 4 | CODE | |
| LOW | g4f/typing.py | 4 | CODE | |
| LOW | g4f/typing.py | 4 | CODE | |
| LOW | g4f/typing.py | 4 | CODE | |
| LOW | g4f/tools/auth.py | 1 | CODE | |
| LOW | g4f/tools/files.py | 1 | CODE | |
| LOW | g4f/tools/files.py | 77 | CODE | |
| LOW | g4f/tools/fetch_and_scrape.py | 1 | CODE | |
| LOW | g4f/tools/optimize_request.py | 9 | CODE | |
| LOW | g4f/tools/media.py | 1 | CODE | |
| LOW | g4f/tools/token_optimizer.py | 31 | CODE | |
| LOW | g4f/tools/run_tools.py | 1 | CODE | |
| LOW | g4f/tools/run_tools.py | 24 | CODE | |
| LOW | g4f/tools/web_search.py | 1 | CODE | |
| LOW | g4f/integration/langchain.py | 1 | CODE | |
| LOW | g4f/integration/pydantic_ai.py | 1 | CODE | |
| LOW | g4f/providers/config_provider.py | 54 | CODE | |
| LOW | g4f/providers/retry_provider.py | 1 | CODE | |
| LOW | g4f/providers/base_provider.py | 1 | CODE | |
| LOW | g4f/providers/asyncio.py | 1 | CODE | |
| LOW | g4f/providers/cache.py | 1 | CODE | |
| LOW | g4f/providers/create_images.py | 1 | CODE | |
| LOW | g4f/providers/response.py | 1 | CODE | |
| LOW | g4f/providers/types.py | 1 | CODE | |
| LOW | g4f/providers/types.py | 3 | CODE | |
| LOW | g4f/providers/types.py | 5 | CODE | |
| LOW | g4f/providers/types.py | 5 | CODE | |
| LOW | g4f/providers/helper.py | 1 | CODE | |
| LOW | g4f/providers/any_provider.py | 1 | CODE | |
| LOW | g4f/providers/tool_support.py | 1 | CODE | |
| LOW | g4f/providers/tool_support.py | 12 | CODE | |
| LOW | g4f/Provider/OllamaSwarm.py | 1 | CODE | |
| LOW | g4f/Provider/DeepAI.py | 4 | CODE | |
| LOW | g4f/Provider/DeepAI.py | 9 | CODE | |
| LOW | g4f/Provider/PollinationsAI.py | 1 | CODE | |
| LOW | g4f/Provider/OperaAria.py | 1 | CODE | |
| LOW | g4f/Provider/OperaAria.py | 13 | CODE | |
| LOW | g4f/Provider/base_provider.py | 1 | CODE | |
| LOW | g4f/Provider/base_provider.py | 2 | CODE | |
| LOW | g4f/Provider/base_provider.py | 3 | CODE | |
| LOW | g4f/Provider/base_provider.py | 3 | CODE | |
| 352 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | g4f/cookies.py | 123 | CODE | |
| LOW | g4f/cookies.py | 182 | CODE | |
| LOW | g4f/cookies.py | 219 | CODE | |
| LOW | g4f/tools/files.py | 89 | CODE | |
| LOW | g4f/tools/files.py | 149 | CODE | |
| LOW | g4f/tools/files.py | 231 | CODE | |
| LOW | g4f/tools/files.py | 286 | CODE | |
| LOW | g4f/tools/files.py | 357 | CODE | |
| LOW | g4f/tools/files.py | 490 | CODE | |
| LOW | g4f/tools/files.py | 504 | CODE | |
| LOW | g4f/tools/files.py | 516 | CODE | |
| LOW | g4f/tools/files.py | 528 | CODE | |
| LOW | g4f/tools/fetch_and_scrape.py | 21 | CODE | |
| LOW | g4f/tools/optimize_request.py | 612 | CODE | |
| LOW | g4f/tools/optimize_request.py | 630 | CODE | |
| LOW | g4f/tools/optimize_request.py | 655 | CODE | |
| LOW | g4f/tools/optimize_request.py | 764 | CODE | |
| LOW | g4f/tools/optimize_request.py | 933 | CODE | |
| LOW | g4f/tools/optimize_request.py | 1054 | CODE | |
| LOW | g4f/tools/optimize_request.py | 1253 | CODE | |
| LOW | g4f/tools/optimize_request.py | 1303 | CODE | |
| LOW | g4f/tools/media.py | 57 | CODE | |
| LOW | g4f/tools/token_optimizer.py | 164 | CODE | |
| LOW | g4f/tools/run_tools.py | 330 | CODE | |
| LOW | g4f/tools/run_tools.py | 494 | CODE | |
| LOW | g4f/tools/run_tools.py | 712 | CODE | |
| LOW | g4f/tools/run_tools.py | 207 | CODE | |
| LOW | g4f/tools/run_tools.py | 246 | CODE | |
| LOW | g4f/integration/markitdown/__init__.py | 32 | CODE | |
| LOW | g4f/integration/markitdown/_audio_converter.py | 49 | CODE | |
| LOW | g4f/integration/markitdown/_youtube_converter.py | 131 | CODE | |
| LOW | g4f/integration/markitdown/_youtube_converter.py | 274 | CODE | |
| LOW | g4f/providers/config_provider.py | 256 | CODE | |
| LOW | g4f/providers/config_provider.py | 506 | CODE | |
| LOW | g4f/providers/retry_provider.py | 83 | CODE | |
| LOW | g4f/providers/retry_provider.py | 154 | CODE | |
| LOW | g4f/providers/retry_provider.py | 231 | CODE | |
| LOW | g4f/providers/base_provider.py | 117 | CODE | |
| LOW | g4f/providers/base_provider.py | 308 | CODE | |
| LOW | g4f/providers/base_provider.py | 385 | CODE | |
| LOW | g4f/providers/base_provider.py | 125 | CODE | |
| LOW | g4f/providers/asyncio.py | 20 | CODE | |
| LOW | g4f/providers/asyncio.py | 46 | CODE | |
| LOW | g4f/providers/create_images.py | 70 | CODE | |
| LOW | g4f/providers/helper.py | 12 | CODE | |
| LOW | g4f/providers/helper.py | 70 | CODE | |
| LOW | g4f/providers/any_provider.py | 137 | CODE | |
| LOW | g4f/providers/any_provider.py | 313 | CODE | |
| LOW | g4f/providers/any_provider.py | 412 | CODE | |
| LOW | g4f/providers/tool_support.py | 97 | CODE | |
| LOW | g4f/providers/tool_support.py | 174 | CODE | |
| LOW | g4f/providers/tool_support.py | 199 | CODE | |
| LOW | g4f/providers/tool_support.py | 241 | CODE | |
| LOW | g4f/providers/tool_support.py | 335 | CODE | |
| LOW | g4f/Provider/OllamaSwarm.py | 385 | CODE | |
| LOW | g4f/Provider/OllamaSwarm.py | 406 | CODE | |
| LOW | g4f/Provider/OllamaSwarm.py | 479 | CODE | |
| LOW | g4f/Provider/OllamaSwarm.py | 592 | CODE | |
| LOW | g4f/Provider/DeepAI.py | 69 | CODE | |
| LOW | g4f/Provider/PollinationsAI.py | 95 | CODE | |
| 162 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | g4f/cookies.py | 123 | def load_cookies_from_browsers(domain_name: str, | CODE |
| LOW | g4f/tools/files.py | 262 | def stream_read_parts_and_refine(bucket_dir: Path, delete_files: bool = False) -> Iterator[str]: | CODE |
| LOW | g4f/tools/files.py | 286 | def split_file_by_size_and_newline(input_filename, output_dir, chunk_size_bytes=1024*1024): # 1MB | CODE |
| LOW | g4f/tools/files.py | 516 | async def async_read_and_download_urls(bucket_dir: Path, delete_files: bool = False, event_stream: bool = False) -> Asyn | CODE |
| LOW | g4f/tools/optimize_request.py | 1000 | def _strip_redundant_tool_fields(messages: Messages) -> int: | CODE |
| LOW | g4f/tools/optimize_request.py | 1054 | def _collapse_message_whitespace(messages: Messages) -> int: | CODE |
| LOW | g4f/tools/optimize_request.py | 1167 | def _strip_redundant_tool_calls(messages: Messages) -> int: | CODE |
| LOW | g4f/tools/optimize_request.py | 1303 | def strip_redundant_assistant_fields(messages: Messages) -> int: | CODE |
| LOW | g4f/tools/optimize_request.py | 1335 | def collapse_whitespace_in_messages(messages: Messages) -> int: | CODE |
| LOW | g4f/tools/optimize_request.py | 1356 | def drop_empty_trailing_messages(messages: Messages) -> int: | CODE |
| LOW | g4f/tools/run_tools.py | 127 | def provider_supports_native_tools(provider: ProviderType) -> bool: | STRING |
| LOW | g4f/integration/langchain.py | 10 | def new_convert_message_to_dict(message: BaseMessage) -> dict: | CODE |
| LOW | g4f/integration/markitdown/__init__.py | 173 | def _convert_github_url_to_raw(url: str) -> str: | CODE |
| LOW | g4f/integration/markitdown/_youtube_converter.py | 37 | def _extract_youtube_video_id(url: str) -> Optional[str]: | CODE |
| LOW | g4f/providers/base_provider.py | 87 | def get_async_provider_method(provider: type) -> Optional[callable]: | CODE |
| LOW | g4f/providers/tool_support.py | 138 | def _parse_stringified_tool_calls(text: str) -> list[dict]: | CODE |
| LOW | g4f/providers/tool_support.py | 214 | def _merge_messages_to_single_user(messages: Messages) -> Messages: | CODE |
| LOW | g4f/providers/tool_support.py | 241 | def _preprocess_tool_messages(messages: Messages) -> Messages: | CODE |
| LOW | g4f/Provider/Copilot.py | 330 | async def get_access_token_and_cookies(url: str, proxy: str = None, needs_auth: bool = False): | CODE |
| LOW | g4f/Provider/Yupp.py | 160 | def sync_record_model_feedback( | CODE |
| LOW | g4f/Provider/BraveSearch.py | 77 | def _parse_sveltekit_tap_data(cls, raw_json: dict) -> dict: | CODE |
| LOW | g4f/Provider/deepinfra/__init__.py | 89 | async def get_turnstile_token_async() -> str: | STRING |
| LOW | g4f/Provider/qwen/fingerprint.py | 189 | def generate_fingerprint_batch(count: int, options: Dict[str, Any] = None) -> List[str]: | CODE |
| LOW | g4f/Provider/yupp/models.py | 184 | class DataManager: | CODE |
| LOW⚡ | g4f/Provider/yupp/token_extractor.py | 334 | def _extract_tokens_from_html(self, html: str) -> List[str]: | CODE |
| LOW | g4f/Provider/needs_auth/MicrosoftDesigner.py | 145 | async def get_access_token_and_user_agent(url: str, proxy: str = None): | CODE |
| LOW⚡ | g4f/Provider/needs_auth/BlackboxPro.py | 2092 | def _find_session_in_har_files(cls) -> Optional[dict]: | CODE |
| LOW | g4f/Provider/needs_auth/GeminiCLI.py | 89 | def get_gemini_cli_user_agent(model: str = "gemini-2.5-pro") -> str: | CODE |
| LOW | g4f/Provider/needs_auth/GeminiCLI.py | 575 | def _messages_to_gemini_format(messages: list, media: MediaListType) -> Dict[str, Any]: | CODE |
| LOW | g4f/Provider/needs_auth/MetaAI.py | 223 | def generate_offline_threading_id() -> str: | CODE |
| LOW | g4f/Provider/needs_auth/DeepSeek.py | 155 | def generate_client_stream_id() -> str: | CODE |
| LOW | g4f/Provider/needs_auth/Antigravity.py | 71 | def get_antigravity_oauth_creds_path(): | CODE |
| LOW | g4f/Provider/needs_auth/Antigravity.py | 969 | def _messages_to_gemini_format(messages: list, media: MediaListType) -> List[Dict[str, Any]]: | CODE |
| LOW | g4f/Provider/glm/__init__.py | 272 | async def _get_or_create_chat_session(cls, session, model: str) -> str: | CODE |
| LOW⚡ | g4f/Provider/glm/__init__.py | 314 | async def _get_captcha_verify_param(cls) -> str: | CODE |
| LOW | g4f/Provider/openai/new.py | 53 | "unregisterProtocolHandler−function unregisterProtocolHandler() { [native code] }", | CODE |
| LOW | g4f/Provider/openai/new.py | 94 | "requestMediaKeySystemAccess−function requestMediaKeySystemAccess() { [native code] }", | CODE |
| LOW | g4f/mcp/apply_patch.py | 238 | def _parse_and_apply_unified_diff( | CODE |
| LOW | g4f/mcp/apply_patch.py | 308 | def apply_patch_with_fallback( | CODE |
| LOW | g4f/requests/__init__.py | 85 | def get_cookie_params_from_dict(cookies: Cookies, url: str = None, domain: str = None) -> list[CookieParam]: | CODE |
| LOW | g4f/requests/__init__.py | 185 | def set_browser_executable_path(browser_executable_path: str): | CODE |
| LOW | g4f/gui/server/api.py | 147 | def _prepare_conversation_kwargs(self, json_data: dict): | CODE |
| LOW | g4f/gui/server/api.py | 330 | def get_target_paths_and_urls(media: list[Union[str, tuple[str, str]]]) -> tuple[list[str], list[str]]: | CODE |
| LOW | g4f/api/__init__.py | 408 | def create_app_with_gui_and_debug(): | CODE |
| LOW | g4f/api/__init__.py | 413 | def create_app_with_demo_and_debug(): | CODE |
| LOW | g4f/api/__init__.py | 563 | def register_validation_exception_handler(self): | CODE |
| LOW | g4f/api/__init__.py | 565 | async def validation_exception_handler(request: Request, exc: RequestValidationError): | CODE |
| LOW⚡ | projects/discord-bot/mcp_tools.py | 171 | def format_tool_results_for_discord(tool_results: List[dict]) -> str: | CODE |
| LOW⚡ | etc/unittest/config_provider.py | 78 | def test_initial_count_is_zero(self): | CODE |
| LOW⚡ | etc/unittest/config_provider.py | 81 | def test_increment_increases_count(self): | CODE |
| LOW⚡ | etc/unittest/config_provider.py | 198 | def test_quota_nested_yupp_false(self): | CODE |
| LOW⚡ | etc/unittest/config_provider.py | 204 | def test_quota_missing_key_resolves_zero(self): | CODE |
| LOW⚡ | etc/unittest/config_provider.py | 210 | def test_quota_missing_nested_key_resolves_zero(self): | CODE |
| LOW⚡ | etc/unittest/config_provider.py | 215 | def test_quota_combined_condition(self): | CODE |
| LOW⚡ | etc/unittest/config_provider.py | 241 | def test_get_quota_balance_alias(self): | CODE |
| LOW⚡ | etc/unittest/config_provider.py | 247 | def test_get_quota_balance_alias_false(self): | CODE |
| LOW⚡ | etc/unittest/config_provider.py | 254 | def test_empty_condition_returns_true(self): | CODE |
| LOW⚡ | etc/unittest/config_provider.py | 257 | def test_none_quota_treated_as_empty_dict(self): | CODE |
| LOW⚡ | etc/unittest/config_provider.py | 273 | def test_unknown_variable_raises(self): | CODE |
| LOW⚡ | etc/unittest/config_provider.py | 277 | def test_quota_unknown_sub_key_resolves_zero(self): | CODE |
| 77 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | g4f/Provider/OllamaSwarm.py | 32 | # window.urls.push(e.href); | COMMENT |
| HIGH | g4f/Provider/Qwen.py | 145 | "The `arguments` value MUST be a JSON object (not a string, not null) matching the " | CODE |
| HIGH | g4f/Provider/Qwen.py | 298 | while not await page.evaluate('window.__baxia__ && window.__baxia__.getFYModule'): | CODE |
| HIGH | g4f/Provider/needs_auth/LMArena.py | 246 | while not await page.evaluate('window.grecaptcha && window.grecaptcha.enterprise'): | CODE |
| HIGH | g4f/Provider/needs_auth/LMArena.py | 272 | while not await page.evaluate('window.grecaptcha && window.grecaptcha.enterprise'): | CODE |
| HIGH | g4f/Provider/needs_auth/LMArena.py | 286 | resolve(null); | STRING |
| HIGH⚡ | g4f/Provider/needs_auth/Gemini.py | 65 | "gemini-deep-research": {"x-goog-ext-525001261-jspb": '[1,null,null,null,"cd472a54d2abba7e"]'}, | CODE |
| HIGH⚡ | g4f/Provider/needs_auth/Gemini.py | 67 | "gemini-3.1-pro": {"x-goog-ext-525001261-jspb": '[1,null,null,null,"e6fa609c3fa255c0",null,null,0,[4,5,6,8],null,nul | CODE |
| HIGH⚡ | g4f/Provider/needs_auth/Gemini.py | 68 | "gemini-3.1-flash-lite": {"x-goog-ext-525001261-jspb": '[1,null,null,null,"8c46e95b1a07cecc",null,null,0,[4,5,6,8],n | CODE |
| HIGH⚡ | g4f/Provider/needs_auth/Gemini.py | 69 | "gemini-3.5-flash": {"x-goog-ext-525001261-jspb": '[1,null,null,null,"56fdd199312815e2",null,null,0,[4,5,6,8],null,n | CODE |
| HIGH | g4f/Provider/needs_auth/mini_max/crypt.py | 44 | M += hash_function("") # Mimics hashFunction(undefined) in JS | CODE |
| HIGH | g4f/Provider/needs_auth/mini_max/crypt.py | 61 | const os_name = navigator.userAgentData?.platform || navigator.platform || "Unknown"; | CODE |
| HIGH | g4f/Provider/needs_auth/mini_max/crypt.py | 70 | const cpu_core_num = navigator.hardwareConcurrency || 8; | CODE |
| HIGH | g4f/Provider/glm/captcha_solver.py | 71 | Object.defineProperty(navigator, 'webdriver', { get: () => undefined }); | CODE |
| HIGH⚡ | g4f/api/__init__.py | 217 | var all=[], timer=null; | CODE |
| HIGH⚡ | g4f/api/__init__.py | 219 | function btag(e){if(e.streaming&&e.response_body==null)return\'<span class="tag tag-sse">SSE…</span>\';if(e.respo | CODE |
| HIGH⚡ | g4f/api/__init__.py | 221 | function fmt(v){if(v==null)return\'(empty)\';if(typeof v===\'object\')return JSON.stringify(v,null,2);return String(v);} | CODE |
| HIGH | g4f/api/__init__.py | 250 | if(e.request_body!=null)req+=\'\\nBody:\\n\'+fmt(e.request_body); | CODE |
| HIGH | g4f/api/__init__.py | 262 | function toggleAuto(){clearInterval(timer);timer=null;if(document.getElementById(\'auto\').checked)timer=setInterval(loa | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | g4f/tools/optimize_request.py | 1025 | # Check if a subsequent tool message references this call. | COMMENT |
| LOW | g4f/integration/markitdown/__init__.py | 82 | # Check if the converter will accept the file, and if so, try to convert it | COMMENT |
| LOW | g4f/integration/markitdown/__init__.py | 155 | # Check if we have a seekable stream. If not, load the entire stream into memory. | COMMENT |
| LOW | g4f/integration/markitdown/_audio_converter.py | 104 | # Return the result | COMMENT |
| LOW | g4f/Provider/DeepAI.py | 89 | # Check if we should directly generate an image if the user is just asking for it | COMMENT |
| LOW | g4f/Provider/Perplexity.py | 197 | # Check if this is a followup request (has session tokens) | COMMENT |
| LOW | g4f/Provider/Yupp.py | 703 | # Check if this is a token-related error | COMMENT |
| LOW | g4f/Provider/hf_space/CohereForAI_C4AI_Command.py | 48 | # Check if the model exists directly in our models list | COMMENT |
| LOW | g4f/Provider/hf_space/CohereForAI_C4AI_Command.py | 52 | # Check if there's an alias for this model | COMMENT |
| LOW | g4f/Provider/github/copilotTokenProvider.py | 41 | # Check if we have a valid cached token | COMMENT |
| LOW | g4f/Provider/yupp/token_extractor.py | 97 | # Check if this is actually a cached token that failed | COMMENT |
| LOW | g4f/Provider/needs_auth/BlackboxPro.py | 1975 | # Check if there are valid session data in HAR files | COMMENT |
| LOW | g4f/Provider/needs_auth/BlackboxPro.py | 2005 | # Check if there are valid session data in HAR files | COMMENT |
| LOW⚡ | g4f/Provider/needs_auth/BlackboxPro.py | 2085 | # Check if this is a premium session | COMMENT |
| LOW | g4f/Provider/needs_auth/BlackboxPro.py | 2125 | # Check if this is a valid session object | COMMENT |
| LOW | g4f/Provider/needs_auth/BlackboxPro.py | 2270 | # Check if we have a valid session | COMMENT |
| LOW | g4f/Provider/needs_auth/OpenaiChat.py | 285 | # Check if there is an image response | COMMENT |
| LOW | g4f/Provider/needs_auth/Gemini.py | 521 | # Check if the cache file was modified in the last minute to avoid 429 Too Many Requests | COMMENT |
| LOW | g4f/Provider/needs_auth/PuterJS.py | 242 | # Check if we need to use a vision model | COMMENT |
| LOW | g4f/Provider/needs_auth/DeepSeek.py | 523 | # Check if response is actually SSE or regular JSON | COMMENT |
| LOW | g4f/Provider/glm/captcha_solver.py | 143 | # Check if the browser is still connected by opening a tab. | COMMENT |
| LOW | g4f/mcp/apply_patch.py | 26 | # Check if patch is available in PATH | COMMENT |
| LOW | g4f/mcp/apply_patch.py | 201 | # Check if any changes | COMMENT |
| LOW | g4f/mcp/tools.py | 214 | # Check if image_data has url attribute | COMMENT |
| LOW | g4f/image/__init__.py | 220 | # Check if the data URI starts with 'data:image' and contains an image format (e.g., jpeg, png, gif) | COMMENT |
| LOW | g4f/image/__init__.py | 225 | # Check if the image format is one of the allowed formats (jpg, jpeg, png, gif) | COMMENT |
| LOW | etc/examples/vision_images.py | 37 | local_image.close() # Close file after use | CODE |
| LOW⚡ | etc/tool/commit.py | 149 | # Check if it's a git repository | COMMENT |
| LOW⚡ | etc/tool/commit.py | 152 | # Check if we're in a subdirectory of a git repo | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | g4f/providers/base_provider.py | 206 | Abstract method for creating asynchronous results. Args: model (str): The model to use for | STRING |
| HIGH | g4f/providers/base_provider.py | 252 | Abstract method for creating an asynchronous generator. Args: model (str): The model to us | STRING |
| HIGH | g4f/Provider/needs_auth/OpenaiChat.py | 388 | Create an asynchronous generator for the conversation. Args: model (str): The model name. | STRING |
| HIGH | g4f/Provider/needs_auth/bing/create_images.py | 65 | Creates images based on a given prompt using Bing's service. Args: session (ClientSession): Active cli | STRING |
| HIGH | g4f/mcp/pa_provider.py | 477 | Load a ``.pa.py`` file and return the provider class it defines. The file is executed inside the safe sandbox. The | STRING |
| HIGH | g4f/image/__init__.py | 258 | Detect file type from magic number / header signature. Args: binary_data (bytes): File binary data | STRING |
| HIGH | g4f/client/service.py | 31 | Retrieves the model and provider based on input parameters. Args: model (Union[Model, str]): The model | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | g4f/models.py | 835 | # Create a list of all models and their providers | COMMENT |
| MEDIUM | g4f/integration/markitdown/__init__.py | 40 | # Create a copy of the page_converters list, sorted by priority. | COMMENT |
| MEDIUM | g4f/providers/any_provider.py | 294 | # Create a mapping of parent providers to their children | COMMENT |
| MEDIUM | g4f/Provider/deepinfra/turnstile.py | 80 | # Create an isolated profile directory | COMMENT |
| MEDIUM | …f/Provider/hf_space/BlackForestLabs_Flux1KontextDev.py | 76 | # Create a conversation/session data container holding tokens and session hash | COMMENT |
| MEDIUM | g4f/api/__init__.py | 754 | # Create the completion response | COMMENT |
| MEDIUM | g4f/client/factory.py | 48 | # Create a new class that extends OpenaiTemplate | COMMENT |
| MEDIUM | projects/discord-bot/bot.py | 577 | # Create a placeholder then edit/send final result. | COMMENT |
| MEDIUM | etc/examples/mcp_tools_demo.py | 22 | # Create a tool call request for web search | COMMENT |
| MEDIUM | etc/examples/mcp_tools_demo.py | 64 | # Create a tool call request for web scraping | COMMENT |
| MEDIUM | etc/examples/mcp_tools_demo.py | 106 | # Create a tool call request for image generation | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | g4f/tools/files.py | 413 | CODE | |
| LOW | g4f/providers/response.py | 207 | CODE | |
| LOW | g4f/Provider/PollinationsAI.py | 212 | CODE | |
| LOW | g4f/Provider/PollinationsImage.py | 33 | CODE | |
| LOW | …f/Provider/hf_space/BlackForestLabs_Flux1KontextDev.py | 60 | CODE | |
| LOW | g4f/Provider/hf_space/StabilityAI_SD35Large.py | 27 | CODE | |
| LOW | g4f/Provider/hf_space/BlackForestLabs_Flux1Dev.py | 54 | CODE | |
| LOW | g4f/Provider/template/OpenaiTemplate.py | 122 | CODE | |
| LOW | g4f/Provider/search/DDGS.py | 167 | CODE | |
| LOW | g4f/Provider/needs_auth/BlackboxPro.py | 2208 | CODE | |
| LOW | g4f/Provider/needs_auth/Replicate.py | 19 | CODE | |
| LOW | g4f/Provider/needs_auth/GeminiCLI.py | 679 | CODE | |
| LOW | g4f/Provider/needs_auth/OpenaiChat.py | 368 | CODE | |
| LOW | g4f/Provider/needs_auth/Gemini.py | 161 | CODE | |
| LOW | g4f/Provider/needs_auth/DeepSeek.py | 327 | CODE | |
| LOW | g4f/Provider/needs_auth/Anthropic.py | 86 | CODE | |
| LOW | g4f/Provider/needs_auth/Antigravity.py | 1076 | CODE | |
| LOW | g4f/Provider/needs_auth/Cohere.py | 43 | CODE | |
| LOW | g4f/Provider/needs_auth/hf/HuggingFaceInference.py | 67 | CODE | |
| LOW | g4f/Provider/needs_auth/hf/HuggingFaceMedia.py | 98 | CODE | |
| LOW | g4f/image/copy_images.py | 136 | CODE | |
| LOW | g4f/image/__init__.py | 387 | CODE | |
| LOW | g4f/requests/__init__.py | 117 | CODE | |
| LOW | g4f/api/__init__.py | 561 | CODE | |
| LOW | g4f/client/__init__.py | 292 | CODE | |
| LOW | g4f/client/__init__.py | 633 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | g4f/Provider/qwen/QwenCode.py | 0 | synchronous cli entry point for setup.py console_scripts. | STRING |
| HIGH | g4f/Provider/github/GithubCopilot.py | 0 | synchronous cli entry point for setup.py console_scripts. | STRING |
| HIGH | g4f/Provider/needs_auth/GeminiCLI.py | 0 | synchronous cli entry point for setup.py console_scripts. | STRING |
| HIGH | g4f/Provider/needs_auth/Antigravity.py | 0 | synchronous cli entry point for setup.py console_scripts. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | g4f/cookies.py | 115 | def set_cookies(domain_name: str, cookies: Cookies = None) -> None: | CODE |
| LOW | g4f/cookies.py | 161 | def set_cookies_dir(dir_path: str) -> None: | CODE |
| LOW | g4f/tray.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | g4f/typing.py | 80 | __all__ = [ | CODE |
| LOW | g4f/tools/optimize_request.py | 538 | def _set_tool_description(tool: Any, desc: str) -> None: | CODE |
| LOW | g4f/tools/optimize_request.py | 1268 | def _set_content(msg: dict, content: Any) -> None: | CODE |
| LOW | g4f/tools/token_optimizer.py | 242 | __all__ = [ | CODE |
| LOW | g4f/Provider/__init__.py | 284 | __all__ = [ | CODE |
| LOW | g4f/Provider/search/DDGS.py | 160 | def set_text(self, text: str) -> None: | CODE |
| LOW | g4f/Provider/yupp/models.py | 26 | def _setup_session(self) -> None: | CODE |
| LOW | g4f/Provider/yupp/models.py | 43 | def _set_cookies(self) -> None: | CODE |
| LOW | g4f/Provider/needs_auth/OpenaiChat.py | 1356 | def update_reference(self, idx: int, operation: str, field: str, value: Any, ref_idx=None) -> None: | CODE |
| LOW | g4f/mcp/__init__.py | 43 | __all__ = [ | CODE |
| LOW | g4f/gui/server/api.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | g4f/gui/server/backend_api.py | 54 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | g4f/api/__init__.py | 102 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | etc/tool/fofa_ollama_parser.py | 457 | def update_swarm(hosts: list[str], path: Path = OLLAMA_SWARM_PATH) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | g4f/client/__init__.py | 756 | api_key="your-api-key" | STRING |
| HIGH | etc/testing/test_deepseek_tools.py | 98 | # api_key="your-api-key-here" # Uncomment if needed | COMMENT |
| HIGH | etc/examples/aibadgr.py | 7 | export AIBADGR_API_KEY="your-api-key-here" | STRING |
| HIGH | etc/examples/aibadgr.py | 17 | api_key="your-api-key-here" # Or set AIBADGR_API_KEY environment variable | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | g4f/Provider/OllamaSwarm.py | 21 | # Run: python etc/tool/fofa_ollama_parser.py --help | COMMENT |
| LOW | g4f/Provider/CopilotSession.py | 121 | # if not isinstance(media, str): | COMMENT |
| LOW | g4f/Provider/CopilotSession.py | 141 | # # Handle plain text content from bucket | COMMENT |
| LOW | g4f/Provider/Copilot.py | 161 | # if "/c/api/" in har_entry.get("request").get("url", ""): | COMMENT |
| LOW | g4f/Provider/Copilot.py | 201 | COMMENT | |
| LOW | g4f/Provider/needs_auth/LMArena.py | 221 | # button = await page.select('button[type="submit"]') | COMMENT |
| LOW | g4f/Provider/needs_auth/OpenaiChat.py | 261 | """ | COMMENT |
| LOW | g4f/Provider/needs_auth/Together.py | 101 | COMMENT | |
| LOW | g4f/Provider/needs_auth/hf/__init__.py | 41 | if model in cls.model_aliases: | COMMENT |
| LOW | g4f/Provider/needs_auth/hf/__init__.py | 61 | return | COMMENT |
| LOW | g4f/api/_logging.py | 21 | # frame = frame.f_back | COMMENT |
| LOW | g4f/api/_tokenizer.py | 1 | # import tiktoken | COMMENT |
| LOW | etc/examples/config.yaml | 1 | # g4f config.yaml – Custom model routing configuration | COMMENT |
| LOW | etc/examples/config.yaml | 21 | # | COMMENT |
| LOW | .github/workflows/build-packages.yml | 301 | G4F_VERSION=${{ needs.prepare.outputs.version }} | COMMENT |
| LOW | .github/workflows/build-packages.yml | 321 | # pip3 install -r requirements-min.txt | COMMENT |
| LOW | .github/workflows/build-packages.yml | 481 | # url: https://pypi.org/p/g4f | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | g4f/Provider/OperaAria.py | 90 | # Step 1: Get anonymous access token | COMMENT |
| LOW | g4f/Provider/OperaAria.py | 109 | # Step 2: Anonymous signup | COMMENT |
| LOW | g4f/Provider/OperaAria.py | 125 | # Step 3: Exchange auth_token for refresh token | COMMENT |
| LOW⚡ | g4f/Provider/OperaAria.py | 210 | # Step 1: Get signed URL | COMMENT |
| LOW⚡ | g4f/Provider/OperaAria.py | 218 | # Step 2: Upload to GCS | COMMENT |
| LOW | g4f/Provider/OperaAria.py | 231 | # Step 3: Poll for completion | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | g4f/Provider/OperaAria.py | 90 | # Step 1: Get anonymous access token | COMMENT |
| LOW | g4f/Provider/OperaAria.py | 109 | # Step 2: Anonymous signup | COMMENT |
| LOW | g4f/Provider/OperaAria.py | 125 | # Step 3: Exchange auth_token for refresh token | COMMENT |
| LOW⚡ | g4f/Provider/OperaAria.py | 210 | # Step 1: Get signed URL | COMMENT |
| LOW⚡ | g4f/Provider/OperaAria.py | 218 | # Step 2: Upload to GCS | COMMENT |
| LOW | g4f/Provider/OperaAria.py | 231 | # Step 3: Poll for completion | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | etc/unittest/mocks.py | 76 | CODE | |
| MEDIUM | etc/unittest/mocks.py | 86 | CODE | |
| MEDIUM | etc/unittest/mocks.py | 96 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | g4f/Provider/github/oauthFlow.py | 74 | interval += 5 # Increase interval as requested by GitHub | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | g4f/Provider/qwen/cookie_generator.py | 463 | # Example usage | COMMENT |
| LOW | etc/examples/messages.py | 29 | # Usage example | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | g4f/Provider/needs_auth/BlackboxPro.py | 297 | "description": "UI-TARS 72B is an open-source multimodal AI model designed specifically for automating browser and d | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | etc/tool/fofa_ollama_parser.py | 178 | # If not deep scan and no specific filters, just use a single empty iteration | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | g4f/mcp/server.py | 114 | async def handle_request(self, request: MCPRequest) -> MCPResponse: | CODE |