summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--g4f/__init__.py8
-rw-r--r--g4f/api/__init__.py10
2 files changed, 12 insertions, 6 deletions
diff --git a/g4f/__init__.py b/g4f/__init__.py
index 6c8e100e..6716c727 100644
--- a/g4f/__init__.py
+++ b/g4f/__init__.py
@@ -10,6 +10,7 @@ from .cookies import get_cookies, set_cookies
from . import debug, version
from .providers.types import BaseRetryProvider, ProviderType
from .providers.base_provider import ProviderModelMixin
+from .providers.retry_provider import RetryProvider
def get_model_and_provider(model : Union[Model, str],
provider : Union[ProviderType, str, None],
@@ -43,7 +44,12 @@ def get_model_and_provider(model : Union[Model, str],
version.utils.check_version()
if isinstance(provider, str):
- if provider in ProviderUtils.convert:
+ if " " in provider:
+ provider_list = [ProviderUtils.convert[p] for p in provider.split() if p in ProviderUtils.convert]
+ if not provider_list:
+ raise ProviderNotFoundError(f'Providers not found: {provider}')
+ provider = RetryProvider(provider_list, False)
+ elif provider in ProviderUtils.convert:
provider = ProviderUtils.convert[provider]
else:
raise ProviderNotFoundError(f'Provider not found: {provider}')
diff --git a/g4f/api/__init__.py b/g4f/api/__init__.py
index 18268eec..abfe3b04 100644
--- a/g4f/api/__init__.py
+++ b/g4f/api/__init__.py
@@ -16,12 +16,12 @@ from g4f.typing import Messages
class ChatCompletionsConfig(BaseModel):
messages: Messages
model: str
- provider: Union[str, None]
+ provider: Union[str, None] = None
stream: bool = False
- temperature: Union[float, None]
- max_tokens: int = None
- stop: Union[list[str], str, None]
- api_key: Union[str, None]
+ temperature: Union[float, None] = None
+ max_tokens: Union[int, None] = None
+ stop: Union[list[str], str, None] = None
+ api_key: Union[str, None] = None
class Api:
def __init__(self, engine: g4f, debug: bool = True, sentry: bool = False,