mirror of
https://github.com/xtekky/gpt4free.git
synced 2025-10-06 00:36:57 +08:00
34 lines
1.4 KiB
Python
34 lines
1.4 KiB
Python
import unittest
|
|
from typing import Type
|
|
import asyncio
|
|
|
|
from g4f.models import __models__
|
|
from g4f.providers.base_provider import BaseProvider, ProviderModelMixin
|
|
from g4f.errors import MissingRequirementsError, MissingAuthError
|
|
|
|
class TestProviderHasModel(unittest.TestCase):
|
|
cache: dict = {}
|
|
|
|
def test_provider_has_model(self):
|
|
for model, providers in __models__.values():
|
|
for provider in providers:
|
|
if issubclass(provider, ProviderModelMixin):
|
|
if model.name in provider.model_aliases:
|
|
model_name = provider.model_aliases[model.name]
|
|
else:
|
|
model_name = model.name
|
|
self.provider_has_model(provider, model_name)
|
|
|
|
def provider_has_model(self, provider: Type[BaseProvider], model: str):
|
|
if provider.__name__ not in self.cache:
|
|
try:
|
|
self.cache[provider.__name__] = provider.get_models()
|
|
except (MissingRequirementsError, MissingAuthError):
|
|
return
|
|
if self.cache[provider.__name__]:
|
|
self.assertIn(model, self.cache[provider.__name__], provider.__name__)
|
|
|
|
def test_all_providers_working(self):
|
|
for model, providers in __models__.values():
|
|
for provider in providers:
|
|
self.assertTrue(provider.working, f"{provider.__name__} in {model.name}") |