From 88d2cbff099df00944ed6dfb6c73b1b5e8dfc7f9 Mon Sep 17 00:00:00 2001 From: Heiner Lohaus Date: Thu, 5 Oct 2023 05:13:37 +0200 Subject: Add AiAsk, Chatgpt4Online, ChatgptDemo and ChatgptX Provider Fix Bing, Liaobots and ChatgptAi Provider Add "gpt_35_long" model and custom timeout --- g4f/Provider/retry_provider.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'g4f/Provider/retry_provider.py') diff --git a/g4f/Provider/retry_provider.py b/g4f/Provider/retry_provider.py index e1a9cd1f..c1672aba 100644 --- a/g4f/Provider/retry_provider.py +++ b/g4f/Provider/retry_provider.py @@ -4,6 +4,7 @@ import random from ..typing import CreateResult from .base_provider import BaseProvider, AsyncProvider +from ..debug import logging class RetryProvider(AsyncProvider): @@ -41,6 +42,8 @@ class RetryProvider(AsyncProvider): started = False for provider in providers: try: + if logging: + print(f"Using {provider.__name__} provider") for token in provider.create_completion(model, messages, stream, **kwargs): yield token started = True @@ -48,6 +51,8 @@ class RetryProvider(AsyncProvider): return except Exception as e: self.exceptions[provider.__name__] = e + if logging: + print(f"{provider.__name__}: {e.__class__.__name__}: {e}") if started: break @@ -59,7 +64,7 @@ class RetryProvider(AsyncProvider): messages: list[dict[str, str]], **kwargs ) -> str: - providers = [provider for provider in self.providers if issubclass(provider, AsyncProvider)] + providers = [provider for provider in self.providers] if self.shuffle: random.shuffle(providers) @@ -69,6 +74,8 @@ class RetryProvider(AsyncProvider): return await provider.create_async(model, messages, **kwargs) except Exception as e: self.exceptions[provider.__name__] = e + if logging: + print(f"{provider.__name__}: {e.__class__.__name__}: {e}") self.raise_exceptions() -- cgit v1.2.3 From f7bb30036e5e5482611627a040f54254ac162f72 Mon Sep 17 00:00:00 2001 From: Heiner Lohaus Date: Sat, 7 Oct 2023 10:17:43 +0200 Subject: Improve code by AI --- g4f/Provider/retry_provider.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'g4f/Provider/retry_provider.py') diff --git a/g4f/Provider/retry_provider.py b/g4f/Provider/retry_provider.py index c1672aba..b49020b2 100644 --- a/g4f/Provider/retry_provider.py +++ b/g4f/Provider/retry_provider.py @@ -1,33 +1,33 @@ from __future__ import annotations import random - +from typing import List, Type, Dict from ..typing import CreateResult from .base_provider import BaseProvider, AsyncProvider from ..debug import logging class RetryProvider(AsyncProvider): - __name__ = "RetryProvider" - working = True - needs_auth = False - supports_stream = True - supports_gpt_35_turbo = False - supports_gpt_4 = False + __name__: str = "RetryProvider" + working: bool = True + needs_auth: bool = False + supports_stream: bool = True + supports_gpt_35_turbo: bool = False + supports_gpt_4: bool = False def __init__( self, - providers: list[type[BaseProvider]], + providers: List[Type[BaseProvider]], shuffle: bool = True ) -> None: - self.providers = providers - self.shuffle = shuffle + self.providers: List[Type[BaseProvider]] = providers + self.shuffle: bool = shuffle def create_completion( self, model: str, - messages: list[dict[str, str]], + messages: List[Dict[str, str]], stream: bool = False, **kwargs ) -> CreateResult: @@ -38,8 +38,8 @@ class RetryProvider(AsyncProvider): if self.shuffle: random.shuffle(providers) - self.exceptions = {} - started = False + self.exceptions: Dict[str, Exception] = {} + started: bool = False for provider in providers: try: if logging: @@ -61,14 +61,14 @@ class RetryProvider(AsyncProvider): async def create_async( self, model: str, - messages: list[dict[str, str]], + messages: List[Dict[str, str]], **kwargs ) -> str: providers = [provider for provider in self.providers] if self.shuffle: random.shuffle(providers) - self.exceptions = {} + self.exceptions: Dict[str, Exception] = {} for provider in providers: try: return await provider.create_async(model, messages, **kwargs) @@ -79,7 +79,7 @@ class RetryProvider(AsyncProvider): self.raise_exceptions() - def raise_exceptions(self): + def raise_exceptions(self) -> None: if self.exceptions: raise RuntimeError("\n".join(["All providers failed:"] + [ f"{p}: {self.exceptions[p].__class__.__name__}: {self.exceptions[p]}" for p in self.exceptions -- cgit v1.2.3