From 12c413fd2e89b1d3a4d0f9e48fb6d12d0556c7ba Mon Sep 17 00:00:00 2001 From: Heiner Lohaus Date: Sun, 5 Jan 2025 17:02:15 +0100 Subject: Add Edge as Browser for nodriver Fix for RetryProviders doesn't retry Add retry and continue for DuckDuckGo provider Add cache for Cloudflare provider Add cache for prompts on gui home Add scroll to bottom checkbox in gui Improve prompts on home gui Fix response content type in api for files --- g4f/Provider/Cloudflare.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'g4f/Provider/Cloudflare.py') diff --git a/g4f/Provider/Cloudflare.py b/g4f/Provider/Cloudflare.py index f69b8128..e6f0dab3 100644 --- a/g4f/Provider/Cloudflare.py +++ b/g4f/Provider/Cloudflare.py @@ -2,12 +2,14 @@ from __future__ import annotations import asyncio import json +from pathlib import Path from ..typing import AsyncResult, Messages, Cookies from .base_provider import AsyncGeneratorProvider, ProviderModelMixin, get_running_loop from ..requests import Session, StreamSession, get_args_from_nodriver, raise_for_status, merge_cookies from ..requests import DEFAULT_HEADERS, has_nodriver, has_curl_cffi from ..providers.response import FinishReason +from ..cookies import get_cookies_dir from ..errors import ResponseStatusError, ModelNotFoundError class Cloudflare(AsyncGeneratorProvider, ProviderModelMixin): @@ -19,7 +21,7 @@ class Cloudflare(AsyncGeneratorProvider, ProviderModelMixin): supports_stream = True supports_system_message = True supports_message_history = True - default_model = "@cf/meta/llama-3.1-8b-instruct" + default_model = "@cf/meta/llama-3.3-70b-instruct-fp8-fast" model_aliases = { "llama-2-7b": "@cf/meta/llama-2-7b-chat-fp16", "llama-2-7b": "@cf/meta/llama-2-7b-chat-int8", @@ -33,6 +35,10 @@ class Cloudflare(AsyncGeneratorProvider, ProviderModelMixin): } _args: dict = None + @classmethod + def get_cache_file(cls) -> Path: + return Path(get_cookies_dir()) / f"auth_{cls.parent if hasattr(cls, 'parent') else cls.__name__}.json" + @classmethod def get_models(cls) -> str: if not cls.models: @@ -67,7 +73,11 @@ class Cloudflare(AsyncGeneratorProvider, ProviderModelMixin): timeout: int = 300, **kwargs ) -> AsyncResult: + cache_file = cls.get_cache_file() if cls._args is None: + if cache_file.exists(): + with cache_file.open("r") as f: + cls._args = json.load(f) if has_nodriver: cls._args = await get_args_from_nodriver(cls.url, proxy, timeout, cookies) else: @@ -93,6 +103,8 @@ class Cloudflare(AsyncGeneratorProvider, ProviderModelMixin): await raise_for_status(response) except ResponseStatusError: cls._args = None + if cache_file.exists(): + cache_file.unlink() raise reason = None async for line in response.iter_lines(): @@ -109,4 +121,7 @@ class Cloudflare(AsyncGeneratorProvider, ProviderModelMixin): except Exception: continue if reason is not None: - yield FinishReason(reason) \ No newline at end of file + yield FinishReason(reason) + + with cache_file.open("w") as f: + json.dump(cls._args, f) \ No newline at end of file -- cgit v1.2.3