From d44b39b31c83c6a4bc636bea931275702c700feb Mon Sep 17 00:00:00 2001 From: Heiner Lohaus Date: Sat, 6 Apr 2024 01:05:00 +0200 Subject: Add Groq and Openai interfaces, Add integration tests --- etc/unittest/__main__.py | 1 + etc/unittest/integration.py | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 etc/unittest/integration.py (limited to 'etc') diff --git a/etc/unittest/__main__.py b/etc/unittest/__main__.py index 06b2dff5..3a459dba 100644 --- a/etc/unittest/__main__.py +++ b/etc/unittest/__main__.py @@ -5,5 +5,6 @@ from .main import * from .model import * from .client import * from .include import * +from .integration import * unittest.main() \ No newline at end of file diff --git a/etc/unittest/integration.py b/etc/unittest/integration.py new file mode 100644 index 00000000..808a8d1d --- /dev/null +++ b/etc/unittest/integration.py @@ -0,0 +1,25 @@ +import unittest +import json + +from g4f.client import Client, ChatCompletion +from g4f.Provider import Bing, OpenaiChat + +DEFAULT_MESSAGES = [{"role": "system", "content": 'Response in json, Example: {"success: True"}'}, + {"role": "user", "content": "Say success true in json"}] + +class TestProviderIntegration(unittest.TestCase): + + def test_bing(self): + client = Client(provider=Bing) + response = client.chat.completions.create(DEFAULT_MESSAGES, "", response_format={"type": "json_object"}) + self.assertIsInstance(response, ChatCompletion) + self.assertIn("success", json.loads(response.choices[0].message.content)) + + def test_openai(self): + client = Client(provider=OpenaiChat) + response = client.chat.completions.create(DEFAULT_MESSAGES, "", response_format={"type": "json_object"}) + self.assertIsInstance(response, ChatCompletion) + self.assertIn("success", json.loads(response.choices[0].message.content)) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file -- cgit v1.2.3 From a4ca5773bd9602951af0ccc11f7e219dfb93732a Mon Sep 17 00:00:00 2001 From: Heiner Lohaus Date: Sat, 6 Apr 2024 01:18:45 +0200 Subject: Fix unittests --- etc/unittest/asyncio.py | 4 ++-- etc/unittest/integration.py | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'etc') diff --git a/etc/unittest/asyncio.py b/etc/unittest/asyncio.py index 57a1fb7d..8931b79a 100644 --- a/etc/unittest/asyncio.py +++ b/etc/unittest/asyncio.py @@ -19,8 +19,8 @@ class TestChatCompletion(unittest.TestCase): return ChatCompletion.create(g4f.models.default, DEFAULT_MESSAGES, AsyncProviderMock) def test_exception(self): - if hasattr(asyncio, '_nest_patched'): - self.skipTest('asyncio is already patched') + if has_nest_asyncio: + self.skipTest('has nest_asyncio') self.assertRaises(g4f.errors.NestAsyncioError, asyncio.run, self.run_exception()) def test_create(self): diff --git a/etc/unittest/integration.py b/etc/unittest/integration.py index 808a8d1d..36f09c0e 100644 --- a/etc/unittest/integration.py +++ b/etc/unittest/integration.py @@ -1,6 +1,12 @@ import unittest import json +try: + import nest_asyncio + has_nest_asyncio = True +except: + has_nest_asyncio = False + from g4f.client import Client, ChatCompletion from g4f.Provider import Bing, OpenaiChat @@ -8,6 +14,9 @@ DEFAULT_MESSAGES = [{"role": "system", "content": 'Response in json, Example: {" {"role": "user", "content": "Say success true in json"}] class TestProviderIntegration(unittest.TestCase): + def setUp(self): + if not has_nest_asyncio: + self.skipTest("nest_asyncio is not installed") def test_bing(self): client = Client(provider=Bing) -- cgit v1.2.3