Add multiple images support (#2478)

* Add multiple images support

* Add multiple images support in gui

* Support multiple images in legacy client and in the api
Fix some model names in provider model list

* Fix unittests

* Add vision and providers docs
This commit is contained in:
H Lohaus
2024-12-13 22:20:58 +01:00
committed by GitHub
parent bb9132bcb4
commit 335c971f6a
26 changed files with 1006 additions and 324 deletions

View File

@@ -4,7 +4,7 @@ import asyncio
from g4f.models import __models__
from g4f.providers.base_provider import BaseProvider, ProviderModelMixin
from g4f.models import Model
from g4f.errors import MissingRequirementsError, MissingAuthError
class TestProviderHasModel(unittest.IsolatedAsyncioTestCase):
cache: dict = {}
@@ -13,11 +13,17 @@ class TestProviderHasModel(unittest.IsolatedAsyncioTestCase):
for model, providers in __models__.values():
for provider in providers:
if issubclass(provider, ProviderModelMixin):
if model.name not in provider.model_aliases:
await asyncio.wait_for(self.provider_has_model(provider, model), 10)
if model.name in provider.model_aliases:
model_name = provider.model_aliases[model.name]
else:
model_name = model.name
await asyncio.wait_for(self.provider_has_model(provider, model_name), 10)
async def provider_has_model(self, provider: Type[BaseProvider], model: Model):
async def provider_has_model(self, provider: Type[BaseProvider], model: str):
if provider.__name__ not in self.cache:
self.cache[provider.__name__] = provider.get_models()
try:
self.cache[provider.__name__] = provider.get_models()
except (MissingRequirementsError, MissingAuthError):
return
if self.cache[provider.__name__]:
self.assertIn(model.name, self.cache[provider.__name__], provider.__name__)
self.assertIn(model, self.cache[provider.__name__], provider.__name__)