返回提交历史
Modified
README.md
+14
-10
Modified
etc/unittest/asyncio.py
+17
-13
Modified
etc/unittest/main.py
+10
-3
XFEstudio/gpt4free
Improve readme / unittests
770bdc54
代码差异
3 个文件
+41
-26
@@ -103,25 +103,29 @@ Install all supported tools / all used packages:
103
103
```
104
104
pip install -U g4f[all]
105
105
```
106
Install packages for uploading / generating images:
106
Install required packages for the OpenaiChat provider:
107
107
```
108
pip install -U g4f[image]
108
pip install -U g4f[openai]
109
109
```
110
Install the packages required for providers with webdriver:
110
Install required packages for the interference api:
111
111
```
112
pip install -U g4f[webdriver]
112
pip install -U g4f[api]
113
113
```
114
Install the packages required for the OpenaiChat provider:
114
Install required packages for the web interface:
115
115
```
116
pip install -U g4f[openai]
116
pip install -U g4f[gui]
117
117
```
118
Install the packages required for the interference api:
118
Install required packages for uploading / generating images:
119
119
```
120
pip install -U g4f[api]
120
pip install -U g4f[image]
121
121
```
122
Install the packages required for the web gui:
122
Install required packages for providers with webdriver:
123
123
```
124
pip install -U g4f[gui]
124
pip install -U g4f[webdriver]
125
```
126
Install required packages for proxy support:
127
```
128
pip install -U aiohttp_socks
125
129
```
126
130
127
131
##### or:
@@ -1,4 +1,3 @@
1
from .include import DEFAULT_MESSAGES
2
1
import asyncio
3
2
try:
4
3
import nest_asyncio
@@ -6,55 +5,60 @@ try:
6
5
except:
7
6
has_nest_asyncio = False
8
7
import unittest
8
9
9
import g4f
10
10
from g4f import ChatCompletion
11
11
from .mocks import ProviderMock, AsyncProviderMock, AsyncGeneratorProviderMock
12
12
13
DEFAULT_MESSAGES = [{'role': 'user', 'content': 'Hello'}]
14
13
15
class TestChatCompletion(unittest.TestCase):
14
16
15
17
async def run_exception(self):
16
18
return ChatCompletion.create(g4f.models.default, DEFAULT_MESSAGES, AsyncProviderMock)
17
19
18
20
def test_exception(self):
21
if hasattr(asyncio, '_nest_patched'):
22
self.skipTest('asyncio is already patched')
19
23
self.assertRaises(g4f.errors.NestAsyncioError, asyncio.run, self.run_exception())
20
24
21
25
def test_create(self):
22
26
result = ChatCompletion.create(g4f.models.default, DEFAULT_MESSAGES, AsyncProviderMock)
23
27
self.assertEqual("Mock",result)
24
28
25
29
def test_create_generator(self):
26
30
result = ChatCompletion.create(g4f.models.default, DEFAULT_MESSAGES, AsyncGeneratorProviderMock)
27
31
self.assertEqual("Mock",result)
28
32
29
33
class TestChatCompletionAsync(unittest.IsolatedAsyncioTestCase):
30
34
31
35
async def test_base(self):
32
36
result = await ChatCompletion.create_async(g4f.models.default, DEFAULT_MESSAGES, ProviderMock)
33
37
self.assertEqual("Mock",result)
34
38
35
39
async def test_async(self):
36
40
result = await ChatCompletion.create_async(g4f.models.default, DEFAULT_MESSAGES, AsyncProviderMock)
37
41
self.assertEqual("Mock",result)
38
42
39
43
async def test_create_generator(self):
40
44
result = await ChatCompletion.create_async(g4f.models.default, DEFAULT_MESSAGES, AsyncGeneratorProviderMock)
41
45
self.assertEqual("Mock",result)
42
46
43
47
class TestChatCompletionNestAsync(unittest.IsolatedAsyncioTestCase):
44
48
45
49
def setUp(self) -> None:
46
50
if not has_nest_asyncio:
47
51
self.skipTest('"nest_asyncio" not installed')
48
52
nest_asyncio.apply()
49
53
50
54
async def test_create(self):
51
55
result = await ChatCompletion.create_async(g4f.models.default, DEFAULT_MESSAGES, ProviderMock)
52
56
self.assertEqual("Mock",result)
53
57
54
58
async def test_nested(self):
55
59
result = ChatCompletion.create(g4f.models.default, DEFAULT_MESSAGES, AsyncProviderMock)
56
60
self.assertEqual("Mock",result)
57
61
58
62
async def test_nested_generator(self):
59
63
result = ChatCompletion.create(g4f.models.default, DEFAULT_MESSAGES, AsyncGeneratorProviderMock)
60
64
self.assertEqual("Mock",result)
@@ -24,12 +24,19 @@ class TestGetLastProvider(unittest.TestCase):
24
24
def test_get_last_provider(self):
25
25
ChatCompletion.create(g4f.models.default, DEFAULT_MESSAGES, ProviderMock)
26
26
self.assertEqual(get_last_provider(), ProviderMock)
27
27
28
28
def test_get_last_provider_retry(self):
29
29
ChatCompletion.create(g4f.models.default, DEFAULT_MESSAGES, RetryProvider([ProviderMock]))
30
30
self.assertEqual(get_last_provider(), ProviderMock)
31
31
32
32
def test_get_last_provider_async(self):
33
33
coroutine = ChatCompletion.create_async(g4f.models.default, DEFAULT_MESSAGES, ProviderMock)
34
34
asyncio.run(coroutine)
35
self.assertEqual(get_last_provider(), ProviderMock)
35
self.assertEqual(get_last_provider(), ProviderMock)
36
37
def test_get_last_provider_as_dict(self):
38
ChatCompletion.create(g4f.models.default, DEFAULT_MESSAGES, ProviderMock)
39
last_provider_dict = get_last_provider(True)
40
self.assertIsInstance(last_provider_dict, dict)
41
self.assertIn('name', last_provider_dict)
42
self.assertEqual(ProviderMock.__name__, last_provider_dict['name'])