diff options
author | H Lohaus <hlohaus@users.noreply.github.com> | 2024-04-09 19:40:42 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-09 19:40:42 +0200 |
commit | 4c23b4cad4744e20da7ccffb303503ea627df7c2 (patch) | |
tree | a032e6ebd494136ba35e049b06aa4af45558b540 /g4f/Provider/WhiteRabbitNeo.py | |
parent | Merge pull request #1809 from ochen1/patch-1 (diff) | |
parent | Add project files (diff) | |
download | gpt4free-0.2.9.0.tar gpt4free-0.2.9.0.tar.gz gpt4free-0.2.9.0.tar.bz2 gpt4free-0.2.9.0.tar.lz gpt4free-0.2.9.0.tar.xz gpt4free-0.2.9.0.tar.zst gpt4free-0.2.9.0.zip |
Diffstat (limited to 'g4f/Provider/WhiteRabbitNeo.py')
-rw-r--r-- | g4f/Provider/WhiteRabbitNeo.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/g4f/Provider/WhiteRabbitNeo.py b/g4f/Provider/WhiteRabbitNeo.py new file mode 100644 index 00000000..339434e6 --- /dev/null +++ b/g4f/Provider/WhiteRabbitNeo.py @@ -0,0 +1,57 @@ +from __future__ import annotations + +from aiohttp import ClientSession, BaseConnector + +from ..typing import AsyncResult, Messages, Cookies +from ..requests.raise_for_status import raise_for_status +from .base_provider import AsyncGeneratorProvider +from .helper import get_cookies, get_connector, get_random_string + +class WhiteRabbitNeo(AsyncGeneratorProvider): + url = "https://www.whiterabbitneo.com" + working = True + supports_message_history = True + needs_auth = True + + @classmethod + async def create_async_generator( + cls, + model: str, + messages: Messages, + cookies: Cookies = None, + connector: BaseConnector = None, + proxy: str = None, + **kwargs + ) -> AsyncResult: + if cookies is None: + cookies = get_cookies("www.whiterabbitneo.com") + headers = { + "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:123.0) Gecko/20100101 Firefox/123.0", + "Accept": "*/*", + "Accept-Language": "de,en-US;q=0.7,en;q=0.3", + "Accept-Encoding": "gzip, deflate, br", + "Referer": f"{cls.url}/", + "Content-Type": "text/plain;charset=UTF-8", + "Origin": cls.url, + "Connection": "keep-alive", + "Sec-Fetch-Dest": "empty", + "Sec-Fetch-Mode": "cors", + "Sec-Fetch-Site": "same-origin", + "TE": "trailers" + } + async with ClientSession( + headers=headers, + cookies=cookies, + connector=get_connector(connector, proxy) + ) as session: + data = { + "messages": messages, + "id": get_random_string(6), + "enhancePrompt": False, + "useFunctions": False + } + async with session.post(f"{cls.url}/api/chat", json=data, proxy=proxy) as response: + await raise_for_status(response) + async for chunk in response.content.iter_any(): + if chunk: + yield chunk.decode(errors="ignore")
\ No newline at end of file |