Update models and providers with improved documentation and code structure (#2786)

* docs(docs/providers-and-models.md): update documentation structure and model listings

* refactor(g4f/debug.py): add type hints and docstrings

* refactor(g4f/tools/run_tools.py): Restructure tool handling and improve modularity

* refactor(g4f/providers/response.py): enhance type hints and code documentation

* feat(g4f/models.py): Update model providers and add new models

* feat(g4f/Provider/Blackbox.py): add encrypted session handling and model updates

* fix(g4f/Provider/ChatGptEs.py): migrate to curl_cffi for request handling and improve error resilience

* feat(g4f/Provider/DeepInfraChat.py): Update default model and add new DeepSeek variants

* feat(g4f/Provider/Free2GPT.py): add Gemini models and streamline headers

* feat(g4f/Provider/FreeGpt.py): Add support for Gemini 1.5 Flash model

* feat(g4f/Provider/Liaobots.py): Add Claude 3.7 models and update default GPT-4o

* fix(g4f/Provider/PollinationsAI.py): Correct model mappings and generation parameters

* feat(g4f/Provider/PollinationsImage.py): Add class identifier label

* chore(g4f/Provider/TeachAnything.py): Update default model and simplify model handling

* (g4f/Provider/Mhystical.py): Remove class implementation

* chore(g4f/Provider/Prodia.py > g4f/Provider/not_working/Prodia.py): mark Prodia provider as non-working

* feat(g4f/Provider/Blackbox.py): Add Claude 3.7 Sonnet model alias

* chore(g4f/models.py): Update model configurations

* fix(g4f/Provider/ChatGptEs.py): improve request reliability and nonce detection

---------

Co-authored-by: kqlio67 <>
This commit is contained in:
kqlio67 2025-03-09 18:46:27 +00:00 committed by GitHub
parent 17a99b684a
commit c79635aaeb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 778 additions and 548 deletions

View file

@ -1,17 +1,21 @@
import sys
from typing import Callable, List, Optional, Any
# Warning: name could conflict with Python's built-in logging module
logging: bool = False
version_check: bool = True
version: str = None
log_handler: callable = print
logs: list = []
version: Optional[str] = None
log_handler: Callable = print # More specifically: Callable[[Any, Optional[Any]], None]
logs: List[str] = []
def log(text, file = None):
def log(text: Any, file: Optional[Any] = None) -> None:
"""Log a message if logging is enabled."""
if logging:
log_handler(text, file=file)
def error(error, name: str = None):
def error(error: Any, name: Optional[str] = None) -> None:
"""Log an error message to stderr."""
log(
error if isinstance(error, str) else f"{type(error).__name__ if name is None else name}: {error}",
file=sys.stderr
)
)