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

XFEstudio/gpt4free

Add create_async method

d1b6921b
Heiner Lohaus <heiner.lohaus@netformic.com>
提交于

代码差异

1 个文件 +39 -19
Modified g4f/Provider/Bing.py +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 = ""