返回提交历史
Modified
g4f/Provider/Bing.py
+39
-19
XFEstudio/gpt4free
Add create_async method
d1b6921b
代码差异
1 个文件
+39
-19
@@ -13,34 +13,54 @@ from .base_provider import BaseProvider
13
13
14
14
class Bing(BaseProvider):
15
15
url = "https://bing.com/chat"
16
working = True
16
17
supports_gpt_4 = True
17
18
18
@staticmethod
19
@classmethod
19
20
def create_completion(
21
cls,
20
22
model: str,
21
23
messages: list[dict[str, str]],
22
24
stream: bool,
23
25
**kwargs: Any
24
26
) -> CreateResult:
25
yield from run(create(messages, **kwargs))
26
27
def create(
27
if stream:
28
yield from run(cls.create_async_generator(model, messages, **kwargs))
29
else:
30
yield asyncio.run(cls.create_async(model, messages, **kwargs))
31
32
@classmethod
33
async def create_async(
34
cls,
35
model: str,
28
36
messages: list[dict[str, str]],
29
cookies: dict = {}
30
):
31
if len(messages) < 2:
32
prompt = messages[0]["content"]
33
context = None
34
35
else:
36
prompt = messages[-1]["content"]
37
context = convert(messages[:-1])
38
39
if not cookies:
40
for cookie in browser_cookie3.load(domain_name='.bing.com'):
41
cookies[cookie.name] = cookie.value
42
43
return stream_generate(prompt, context, cookies)
37
**kwargs: Any,
38
) -> str:
39
result = []
40
async for chunk in cls.create_async_generator(model, messages, **kwargs):
41
result.append(chunk)
42
if result:
43
return "".join(result)
44
45
@staticmethod
46
def create_async_generator(
47
model: str,
48
messages: list[dict[str, str]],
49
cookies: dict = {}
50
) -> AsyncGenerator:
51
if len(messages) < 2:
52
prompt = messages[0]["content"]
53
context = None
54
55
else:
56
prompt = messages[-1]["content"]
57
context = convert(messages[:-1])
58
59
if not cookies:
60
for cookie in browser_cookie3.load(domain_name='.bing.com'):
61
cookies[cookie.name] = cookie.value
62
63
return stream_generate(prompt, context, cookies)
44
64
45
65
def convert(messages: list[dict[str, str]]):
46
66
context = ""