XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
返回提交历史

XFEstudio/gpt4free

Fix: Model sometimes not converted #1507

e4f74388
Heiner Lohaus <hlohaus@users.noreply.github.com>
提交于

代码差异

5 个文件 +45 -10
Modified etc/unittest/__main__.py +1 -0
@@ -2,5 +2,6 @@ import unittest
2 2 from .asyncio import *
3 3 from .backend import *
4 4 from .main import *
5 from .model import *
5 6
6 7 unittest.main()
Modified etc/unittest/main.py +3 -5
@@ -1,4 +1,3 @@
1 from .include import DEFAULT_MESSAGES
2 1 import unittest
3 2 import asyncio
4 3 import g4f
@@ -6,6 +5,8 @@ from g4f import ChatCompletion, get_last_provider
6 5 from g4f.Provider import RetryProvider
7 6 from .mocks import ProviderMock
8 7
8 DEFAULT_MESSAGES = [{'role': 'user', 'content': 'Hello'}]
9
9 10 class NoTestChatCompletion(unittest.TestCase):
10 11
11 12 def no_test_create_default(self):
@@ -31,7 +32,4 @@ class TestGetLastProvider(unittest.TestCase):
31 32 def test_get_last_provider_async(self):
32 33 coroutine = ChatCompletion.create_async(g4f.models.default, DEFAULT_MESSAGES, ProviderMock)
33 34 asyncio.run(coroutine)
34 self.assertEqual(get_last_provider(), ProviderMock)
35
36 if __name__ == '__main__':
37 unittest.main()
35 self.assertEqual(get_last_provider(), ProviderMock)
Modified etc/unittest/mocks.py +9 -1
@@ -22,4 +22,12 @@ class AsyncGeneratorProviderMock(AsyncGeneratorProvider):
22 22 async def create_async_generator(
23 23 model, messages, stream, **kwargs
24 24 ):
25 yield "Mock"
25 yield "Mock"
26
27 class ModelProviderMock(AbstractProvider):
28 working = True
29
30 def create_completion(
31 model, messages, stream, **kwargs
32 ):
33 yield model
Added etc/unittest/model.py +27 -0
@@ -0,0 +1,27 @@
1 import unittest
2 import g4f
3 from g4f import ChatCompletion
4 from .mocks import ModelProviderMock
5
6 DEFAULT_MESSAGES = [{'role': 'user', 'content': 'Hello'}]
7
8 test_model = g4f.models.Model(
9 name = "test/test_model",
10 base_provider = "",
11 best_provider = ModelProviderMock
12 )
13 g4f.models.ModelUtils.convert["test_model"] = test_model
14
15 class TestPassModel(unittest.TestCase):
16
17 def test_model_instance(self):
18 response = ChatCompletion.create(test_model, DEFAULT_MESSAGES)
19 self.assertEqual(test_model.name, response)
20
21 def test_model_name(self):
22 response = ChatCompletion.create("test_model", DEFAULT_MESSAGES)
23 self.assertEqual(test_model.name, response)
24
25 def test_model_pass(self):
26 response = ChatCompletion.create("test/test_model", DEFAULT_MESSAGES, ModelProviderMock)
27 self.assertEqual(test_model.name, response)
Modified g4f/__init__.py +5 -4
@@ -45,12 +45,13 @@ def get_model_and_provider(model : Union[Model, str],
45 45 else:
46 46 raise ProviderNotFoundError(f'Provider not found: {provider}')
47 47
48 if isinstance(model, str):
49 if model in ModelUtils.convert:
50 model = ModelUtils.convert[model]
51
48 52 if not provider:
49 53 if isinstance(model, str):
50 if model in ModelUtils.convert:
51 model = ModelUtils.convert[model]
52 else:
53 raise ModelNotFoundError(f'Model not found: {model}')
54 raise ModelNotFoundError(f'Model not found: {model}')
54 55 provider = model.best_provider
55 56
56 57 if not provider: