返回提交历史
Modified
g4f/Provider/base_provider.py
+22
-10
XFEstudio/gpt4free
Improve code style in async support
f90741c1
代码差异
1 个文件
+22
-10
@@ -1,6 +1,7 @@
1
1
from __future__ import annotations
2
2
3
3
import asyncio
4
from asyncio import SelectorEventLoop
4
5
from abc import ABC, abstractmethod
5
6
6
7
import browser_cookie3
@@ -57,7 +58,9 @@ class AsyncProvider(BaseProvider):
57
58
@abstractmethod
58
59
async def create_async(
59
60
model: str,
60
messages: list[dict[str, str]], **kwargs: Any) -> str:
61
messages: list[dict[str, str]],
62
**kwargs
63
) -> str:
61
64
raise NotImplementedError()
62
65
63
66
@@ -72,7 +75,7 @@ class AsyncGeneratorProvider(AsyncProvider):
72
75
stream: bool = True,
73
76
**kwargs
74
77
) -> CreateResult:
75
loop = get_new_event_loop()
78
loop = create_event_loop()
76
79
try:
77
80
generator = cls.create_async_generator(
78
81
model,
@@ -96,7 +99,14 @@ class AsyncGeneratorProvider(AsyncProvider):
96
99
messages: list[dict[str, str]],
97
100
**kwargs
98
101
) -> str:
99
return "".join([chunk async for chunk in cls.create_async_generator(model, messages, stream=False, **kwargs)])
102
return "".join([
103
chunk async for chunk in cls.create_async_generator(
104
model,
105
messages,
106
stream=False,
107
**kwargs
108
)
109
])
100
110
101
111
@staticmethod
102
112
@abstractmethod
@@ -108,14 +118,16 @@ class AsyncGeneratorProvider(AsyncProvider):
108
118
raise NotImplementedError()
109
119
110
120
111
def create_event_loop():
121
def create_event_loop() -> SelectorEventLoop:
112
122
# Don't create a new loop in a running loop
113
if asyncio.events._get_running_loop() is not None:
114
raise RuntimeError(
115
'Use "create_async" instead of "create" function in a async loop.')
116
117
# Force use selector event loop on windows
118
return asyncio.SelectorEventLoop()
123
try:
124
if asyncio.get_running_loop() is not None:
125
raise RuntimeError(
126
'Use "create_async" instead of "create" function in a async loop.')
127
except:
128
pass
129
# Force use selector event loop on windows and linux use it anyway
130
return SelectorEventLoop()
119
131
120
132
121
133
_cookies = {}