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

XFEstudio/gpt4free

Remove usage of get_event_loop helper

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

代码差异

2 个文件 +24 -9
Modified g4f/Provider/base_provider.py +21 -9
@@ -8,6 +8,7 @@ from inspect import signature, Parameter
8 8 from .helper import get_event_loop, get_cookies, format_prompt
9 9 from ..typing import CreateResult, AsyncResult, Messages
10 10 from ..base_provider import BaseProvider
11 from ..errors import NestAsyncioError
11 12
12 13 if sys.version_info < (3, 10):
13 14 NoneType = type(None)
@@ -48,7 +49,7 @@ class AbstractProvider(BaseProvider):
48 49 Returns:
49 50 str: The created result as a string.
50 51 """
51 loop = loop or get_event_loop()
52 loop = loop or asyncio.get_running_loop()
52 53
53 54 def create_func() -> str:
54 55 return "".join(cls.create_completion(model, messages, False, **kwargs))
@@ -101,8 +102,6 @@ class AsyncProvider(AbstractProvider):
101 102 model: str,
102 103 messages: Messages,
103 104 stream: bool = False,
104 *,
105 loop: AbstractEventLoop = None,
106 105 **kwargs
107 106 ) -> CreateResult:
108 107 """
@@ -119,9 +118,15 @@ class AsyncProvider(AbstractProvider):
119 118 Returns:
120 119 CreateResult: The result of the completion creation.
121 120 """
122 loop = loop or get_event_loop()
123 coro = cls.create_async(model, messages, **kwargs)
124 yield loop.run_until_complete(coro)
121 try:
122 loop = asyncio.get_running_loop()
123 if not hasattr(loop.__class__, "_nest_patched"):
124 raise NestAsyncioError(
125 'Use "create_async" instead of "create" function in a running event loop. Or use "nest_asyncio" package.'
126 )
127 except RuntimeError:
128 pass
129 yield asyncio.run(cls.create_async(model, messages, **kwargs))
125 130
126 131 @staticmethod
127 132 @abstractmethod
@@ -159,8 +164,6 @@ class AsyncGeneratorProvider(AsyncProvider):
159 164 model: str,
160 165 messages: Messages,
161 166 stream: bool = True,
162 *,
163 loop: AbstractEventLoop = None,
164 167 **kwargs
165 168 ) -> CreateResult:
166 169 """
@@ -177,7 +180,16 @@ class AsyncGeneratorProvider(AsyncProvider):
177 180 Returns:
178 181 CreateResult: The result of the streaming completion creation.
179 182 """
180 loop = loop or get_event_loop()
183 try:
184 loop = asyncio.get_running_loop()
185 if not hasattr(loop.__class__, "_nest_patched"):
186 raise NestAsyncioError(
187 'Use "create_async" instead of "create" function in a running event loop. Or use "nest_asyncio" package.'
188 )
189 except RuntimeError:
190 loop = asyncio.new_event_loop()
191 asyncio.set_event_loop(loop)
192
181 193 generator = cls.create_async_generator(model, messages, stream=stream, **kwargs)
182 194 gen = generator.__aiter__()
183 195
Modified g4f/errors.py +3 -0
@@ -23,4 +23,7 @@ class RetryNoProviderError(Exception):
23 23 pass
24 24
25 25 class VersionNotFoundError(Exception):
26 pass
27
28 class NestAsyncioError(Exception):
26 29 pass