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

XFEstudio/gpt4free

Improve code style in async support

f90741c1
Heiner Lohaus <heiner@lohaus.eu>
提交于

代码差异

1 个文件 +22 -10
Modified g4f/Provider/base_provider.py +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 = {}