From 76c368340384df9dccbeda76f8e31774c5626337 Mon Sep 17 00:00:00 2001 From: H Lohaus Date: Sun, 8 Dec 2024 20:39:40 +0100 Subject: =?UTF-8?q?Remove=20webview=20js=20api,=20Add=20unittest=20for=20p?= =?UTF-8?q?rovider=20has=20model,=20Use=20cooki=E2=80=A6=20(#2470)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Remove webview js api, Add unittest for provider has model, Use cookies dir for cache --- etc/tool/create_provider.py | 2 +- etc/unittest/__main__.py | 1 + etc/unittest/model.py | 8 ++++---- etc/unittest/models.py | 23 +++++++++++++++++++++++ 4 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 etc/unittest/models.py (limited to 'etc') diff --git a/etc/tool/create_provider.py b/etc/tool/create_provider.py index 7a9827a8..319676b6 100644 --- a/etc/tool/create_provider.py +++ b/etc/tool/create_provider.py @@ -113,7 +113,7 @@ And replace "gpt-3.5-turbo" with `model`. print("Create code...") response = [] for chunk in g4f.ChatCompletion.create( - model=g4f.models.default, + model=g4f.models.gpt_4o, messages=[{"role": "user", "content": prompt}], timeout=300, stream=True, diff --git a/etc/unittest/__main__.py b/etc/unittest/__main__.py index 3719c374..6594e6a2 100644 --- a/etc/unittest/__main__.py +++ b/etc/unittest/__main__.py @@ -8,5 +8,6 @@ from .client import * from .image_client import * from .include import * from .retry_provider import * +from .models import * unittest.main() \ No newline at end of file diff --git a/etc/unittest/model.py b/etc/unittest/model.py index 0d318e7a..2a3db0f4 100644 --- a/etc/unittest/model.py +++ b/etc/unittest/model.py @@ -4,24 +4,24 @@ from g4f import ChatCompletion from .mocks import ModelProviderMock DEFAULT_MESSAGES = [{'role': 'user', 'content': 'Hello'}] - + test_model = g4f.models.Model( name = "test/test_model", base_provider = "", best_provider = ModelProviderMock ) g4f.models.ModelUtils.convert["test_model"] = test_model - + class TestPassModel(unittest.TestCase): def test_model_instance(self): response = ChatCompletion.create(test_model, DEFAULT_MESSAGES) self.assertEqual(test_model.name, response) - + def test_model_name(self): response = ChatCompletion.create("test_model", DEFAULT_MESSAGES) self.assertEqual(test_model.name, response) - + def test_model_pass(self): response = ChatCompletion.create("test/test_model", DEFAULT_MESSAGES, ModelProviderMock) self.assertEqual(test_model.name, response) \ No newline at end of file diff --git a/etc/unittest/models.py b/etc/unittest/models.py new file mode 100644 index 00000000..b9b452d7 --- /dev/null +++ b/etc/unittest/models.py @@ -0,0 +1,23 @@ +import unittest +from typing import Type +import asyncio + +from g4f.models import __models__ +from g4f.providers.base_provider import BaseProvider, ProviderModelMixin +from g4f.models import Model + +class TestProviderHasModel(unittest.IsolatedAsyncioTestCase): + cache: dict = {} + + async def test_provider_has_model(self): + 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) + + async def provider_has_model(self, provider: Type[BaseProvider], model: Model): + if provider.__name__ not in self.cache: + self.cache[provider.__name__] = provider.get_models() + if self.cache[provider.__name__]: + self.assertIn(model.name, self.cache[provider.__name__], provider.__name__) \ No newline at end of file -- cgit v1.2.3