summaryrefslogtreecommitdiffstats
path: root/testing/test_providers.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--testing/test_providers.py63
1 files changed, 36 insertions, 27 deletions
diff --git a/testing/test_providers.py b/testing/test_providers.py
index a5c6f87b..c4fcbc0c 100644
--- a/testing/test_providers.py
+++ b/testing/test_providers.py
@@ -1,67 +1,76 @@
import sys
from pathlib import Path
+from colorama import Fore
sys.path.append(str(Path(__file__).parent.parent))
-from g4f import BaseProvider, models, provider
+from g4f import BaseProvider, models, Provider
+logging = False
def main():
providers = get_providers()
- results: list[list[str | bool]] = []
+ failed_providers = []
for _provider in providers:
- print("start", _provider.__name__)
- actual_working = judge(_provider)
- expected_working = _provider.working
- match = actual_working == expected_working
+ if _provider.needs_auth:
+ continue
+ print("Provider:", _provider.__name__)
+ result = test(_provider)
+ print("Result:", result)
+ if _provider.working and not result:
+ failed_providers.append(_provider)
- results.append([_provider.__name__, expected_working, actual_working, match])
+ print()
- print("failed provider list")
- for result in results:
- if not result[3]:
- print(result)
+ if failed_providers:
+ print(f"{Fore.RED}Failed providers:\n")
+ for _provider in failed_providers:
+ print(f"{Fore.RED}{_provider.__name__}")
+ else:
+ print(f"{Fore.GREEN}All providers are working")
def get_providers() -> list[type[BaseProvider]]:
- provider_names = dir(provider)
+ provider_names = dir(Provider)
ignore_names = [
"base_provider",
- "BaseProvider",
+ "BaseProvider"
]
provider_names = [
provider_name
for provider_name in provider_names
if not provider_name.startswith("__") and provider_name not in ignore_names
]
- return [getattr(provider, provider_name) for provider_name in provider_names]
+ return [getattr(Provider, provider_name) for provider_name in sorted(provider_names)]
def create_response(_provider: type[BaseProvider]) -> str:
- model = (
- models.gpt_35_turbo.name
- if _provider is not provider.H2o
- else models.falcon_7b.name
- )
+ if _provider.supports_gpt_35_turbo:
+ model = models.gpt_35_turbo.name
+ elif _provider.supports_gpt_4:
+ model = models.gpt_4
+ elif hasattr(_provider, "model"):
+ model = _provider.model
+ else:
+ model = None
response = _provider.create_completion(
model=model,
- messages=[{"role": "user", "content": "Hello world!, plz yourself"}],
+ messages=[{"role": "user", "content": "Hello"}],
stream=False,
)
return "".join(response)
-
-def judge(_provider: type[BaseProvider]) -> bool:
- if _provider.needs_auth:
- return _provider.working
-
+
+def test(_provider: type[BaseProvider]) -> bool:
try:
response = create_response(_provider)
assert type(response) is str
- return len(response) > 1
+ assert len(response) > 0
+ return response
except Exception as e:
- print(e)
+ if logging:
+ print(e)
return False