mirror of
https://github.com/xtekky/gpt4free.git
synced 2025-12-06 02:30:41 -08:00
* 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 <>
21 lines
724 B
Python
21 lines
724 B
Python
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: Optional[str] = None
|
|
log_handler: Callable = print # More specifically: Callable[[Any, Optional[Any]], None]
|
|
logs: List[str] = []
|
|
|
|
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: 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
|
|
)
|