diff options
author | abc <98614666+xtekky@users.noreply.github.com> | 2023-10-16 01:47:10 +0200 |
---|---|---|
committer | abc <98614666+xtekky@users.noreply.github.com> | 2023-10-16 01:47:10 +0200 |
commit | 4a3b663ccd44735d77c372b5f629a728f0b90591 (patch) | |
tree | f76dba66613f4e074862d57621ea888cd3e741f7 /g4f/Provider | |
parent | ~ | new `test_providers.py` (diff) | |
download | gpt4free-4a3b663ccd44735d77c372b5f629a728f0b90591.tar gpt4free-4a3b663ccd44735d77c372b5f629a728f0b90591.tar.gz gpt4free-4a3b663ccd44735d77c372b5f629a728f0b90591.tar.bz2 gpt4free-4a3b663ccd44735d77c372b5f629a728f0b90591.tar.lz gpt4free-4a3b663ccd44735d77c372b5f629a728f0b90591.tar.xz gpt4free-4a3b663ccd44735d77c372b5f629a728f0b90591.tar.zst gpt4free-4a3b663ccd44735d77c372b5f629a728f0b90591.zip |
Diffstat (limited to 'g4f/Provider')
-rw-r--r-- | g4f/Provider/AItianhu.py | 51 | ||||
-rw-r--r-- | g4f/Provider/AItianhuSpace.py | 2 | ||||
-rw-r--r-- | g4f/Provider/Acytoo.py | 2 | ||||
-rw-r--r-- | g4f/Provider/Aibn.py | 2 | ||||
-rw-r--r-- | g4f/Provider/Ails.py | 2 | ||||
-rw-r--r-- | g4f/Provider/ChatgptDuo.py | 2 | ||||
-rw-r--r-- | g4f/Provider/ChatgptFree.py | 11 | ||||
-rw-r--r-- | g4f/Provider/Cromicle.py | 2 | ||||
-rw-r--r-- | g4f/Provider/GptChatly.py | 15 | ||||
-rw-r--r-- | g4f/Provider/Myshell.py | 48 | ||||
-rw-r--r-- | g4f/Provider/Ylokh.py | 2 |
11 files changed, 107 insertions, 32 deletions
diff --git a/g4f/Provider/AItianhu.py b/g4f/Provider/AItianhu.py index 56d9a9ab..0105c89a 100644 --- a/g4f/Provider/AItianhu.py +++ b/g4f/Provider/AItianhu.py @@ -1,6 +1,7 @@ from __future__ import annotations import json +import browser_cookie3 from ..typing import AsyncResult, Messages from ..requests import StreamSession @@ -9,7 +10,7 @@ from .base_provider import AsyncGeneratorProvider, format_prompt, get_cookies class AItianhu(AsyncGeneratorProvider): url = "https://www.aitianhu.com" - working = True + working = False supports_gpt_35_turbo = True @classmethod @@ -19,11 +20,13 @@ class AItianhu(AsyncGeneratorProvider): messages: Messages, proxy: str = None, cookies: dict = None, - timeout: int = 120, - **kwargs - ) -> AsyncResult: + timeout: int = 120, **kwargs) -> AsyncResult: + if not cookies: - cookies = get_cookies("www.aitianhu.com") + cookies = browser_cookie3.chrome(domain_name='www.aitianhu.com') + if not cookies: + raise RuntimeError(f"g4f.provider.{cls.__name__} requires cookies") + data = { "prompt": format_prompt(messages), "options": {}, @@ -32,28 +35,42 @@ class AItianhu(AsyncGeneratorProvider): "top_p": 1, **kwargs } + headers = { - "Authority": cls.url, - "Accept": "application/json, text/plain, */*", - "Origin": cls.url, - "Referer": f"{cls.url}/" + 'authority': 'www.aitianhu.com', + 'accept': 'application/json, text/plain, */*', + 'accept-language': 'en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3', + 'content-type': 'application/json', + 'origin': 'https://www.aitianhu.com', + 'referer': 'https://www.aitianhu.com/', + 'sec-ch-ua': '"Chromium";v="118", "Google Chrome";v="118", "Not=A?Brand";v="99"', + 'sec-ch-ua-mobile': '?0', + 'sec-ch-ua-platform': '"macOS"', + 'sec-fetch-dest': 'empty', + 'sec-fetch-mode': 'cors', + 'sec-fetch-site': 'same-origin', + 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36', } - async with StreamSession( - headers=headers, - cookies=cookies, - timeout=timeout, - proxies={"https": proxy}, - impersonate="chrome107", - verify=False - ) as session: + + async with StreamSession(headers=headers, + cookies=cookies, + timeout=timeout, + proxies={"https": proxy}, + impersonate="chrome107", verify=False) as session: + async with session.post(f"{cls.url}/api/chat-process", json=data) as response: response.raise_for_status() + async for line in response.iter_lines(): if line == b"<script>": raise RuntimeError("Solve challenge and pass cookies") + if b"platform's risk control" in line: raise RuntimeError("Platform's Risk Control") + + print(line) line = json.loads(line) + if "detail" in line: content = line["detail"]["choices"][0]["delta"].get("content") if content: diff --git a/g4f/Provider/AItianhuSpace.py b/g4f/Provider/AItianhuSpace.py index 7eb93d48..7811c9c8 100644 --- a/g4f/Provider/AItianhuSpace.py +++ b/g4f/Provider/AItianhuSpace.py @@ -37,6 +37,8 @@ class AItianhuSpace(AsyncGeneratorProvider): domain = f"{rand}.{domains[model]}" if not cookies: cookies = get_cookies(domain) + if not cookies: + raise RuntimeError(f"g4f.provider.{cls.__name__} requires cookies") url = f'https://{domain}' async with StreamSession( diff --git a/g4f/Provider/Acytoo.py b/g4f/Provider/Acytoo.py index cefdd1ac..830d59bc 100644 --- a/g4f/Provider/Acytoo.py +++ b/g4f/Provider/Acytoo.py @@ -8,7 +8,7 @@ from .base_provider import AsyncGeneratorProvider class Acytoo(AsyncGeneratorProvider): url = 'https://chat.acytoo.com' - working = True + working = False supports_gpt_35_turbo = True @classmethod diff --git a/g4f/Provider/Aibn.py b/g4f/Provider/Aibn.py index 13f5c71e..14935888 100644 --- a/g4f/Provider/Aibn.py +++ b/g4f/Provider/Aibn.py @@ -11,7 +11,7 @@ from .base_provider import AsyncGeneratorProvider class Aibn(AsyncGeneratorProvider): url = "https://aibn.cc" supports_gpt_35_turbo = True - working = True + working = False @classmethod async def create_async_generator( diff --git a/g4f/Provider/Ails.py b/g4f/Provider/Ails.py index c1384faa..4d072646 100644 --- a/g4f/Provider/Ails.py +++ b/g4f/Provider/Ails.py @@ -13,7 +13,7 @@ from .base_provider import AsyncGeneratorProvider class Ails(AsyncGeneratorProvider): url: str = "https://ai.ls" - working = True + working = False supports_gpt_35_turbo = True @staticmethod diff --git a/g4f/Provider/ChatgptDuo.py b/g4f/Provider/ChatgptDuo.py index 039efc84..fef3f856 100644 --- a/g4f/Provider/ChatgptDuo.py +++ b/g4f/Provider/ChatgptDuo.py @@ -8,7 +8,7 @@ from .base_provider import AsyncProvider, format_prompt class ChatgptDuo(AsyncProvider): url = "https://chatgptduo.com" supports_gpt_35_turbo = True - working = True + working = False @classmethod async def create_async( diff --git a/g4f/Provider/ChatgptFree.py b/g4f/Provider/ChatgptFree.py index 7dee1e64..ecba2878 100644 --- a/g4f/Provider/ChatgptFree.py +++ b/g4f/Provider/ChatgptFree.py @@ -1,3 +1,5 @@ +#cloudflare block + from __future__ import annotations import re @@ -5,13 +7,13 @@ from aiohttp import ClientSession from ..typing import Messages from .base_provider import AsyncProvider -from .helper import format_prompt +from .helper import format_prompt, get_cookies class ChatgptFree(AsyncProvider): url = "https://chatgptfree.ai" supports_gpt_35_turbo = True - working = True + working = False _post_id = None _nonce = None @@ -23,6 +25,8 @@ class ChatgptFree(AsyncProvider): proxy: str = None, **kwargs ) -> str: + cookies = get_cookies('chatgptfree.ai') + headers = { "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0", "Accept": "*/*", @@ -41,7 +45,8 @@ class ChatgptFree(AsyncProvider): } async with ClientSession(headers=headers) as session: if not cls._nonce: - async with session.get(f"{cls.url}/", proxy=proxy) as response: + async with session.get(f"{cls.url}/", + proxy=proxy, cookies=cookies) as response: response.raise_for_status() response = await response.text() result = re.search(r'data-post-id="([0-9]+)"', response) diff --git a/g4f/Provider/Cromicle.py b/g4f/Provider/Cromicle.py index 93ef8035..8deb79c1 100644 --- a/g4f/Provider/Cromicle.py +++ b/g4f/Provider/Cromicle.py @@ -10,7 +10,7 @@ from .helper import format_prompt class Cromicle(AsyncGeneratorProvider): url: str = 'https://cromicle.top' - working: bool = True + working: bool = False supports_gpt_35_turbo: bool = True @classmethod diff --git a/g4f/Provider/GptChatly.py b/g4f/Provider/GptChatly.py index 1d9b76cf..80fe6349 100644 --- a/g4f/Provider/GptChatly.py +++ b/g4f/Provider/GptChatly.py @@ -1,29 +1,36 @@ +# cloudflare block + from __future__ import annotations from aiohttp import ClientSession from ..typing import Messages from .base_provider import AsyncProvider +from .helper import get_cookies class GptChatly(AsyncProvider): url = "https://gptchatly.com" supports_gpt_35_turbo = True supports_gpt_4 = True - working = True + working = False @classmethod async def create_async( cls, model: str, messages: Messages, - proxy: str = None, - **kwargs - ) -> str: + proxy: str = None, cookies: dict = None, **kwargs) -> str: + + if not cookies: + cookies = get_cookies('gptchatly.com') + + if model.startswith("gpt-4"): chat_url = f"{cls.url}/fetch-gpt4-response" else: chat_url = f"{cls.url}/fetch-response" + headers = { "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0", "Accept": "*/*", diff --git a/g4f/Provider/Myshell.py b/g4f/Provider/Myshell.py index 847bac2f..096545f9 100644 --- a/g4f/Provider/Myshell.py +++ b/g4f/Provider/Myshell.py @@ -1,3 +1,5 @@ +# not using WS anymore + from __future__ import annotations import json, uuid, hashlib, time, random @@ -19,7 +21,7 @@ models = { class Myshell(AsyncGeneratorProvider): url = "https://app.myshell.ai/chat" - working = True + working = False supports_gpt_35_turbo = True supports_gpt_4 = True @@ -172,4 +174,46 @@ def generate_visitor_id(user_agent: str) -> str: r = hex(int(random.random() * (16**16)))[2:-2] d = xor_hash(user_agent) e = hex(1080 * 1920)[2:] - return f"{f}-{r}-{d}-{e}-{f}"
\ No newline at end of file + return f"{f}-{r}-{d}-{e}-{f}" + + + +# update +# from g4f.requests import StreamSession + +# async def main(): +# headers = { +# 'authority': 'api.myshell.ai', +# 'accept': 'application/json', +# 'accept-language': 'en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3', +# 'content-type': 'application/json', +# 'myshell-service-name': 'organics-api', +# 'origin': 'https://app.myshell.ai', +# 'referer': 'https://app.myshell.ai/', +# 'sec-ch-ua': '"Chromium";v="118", "Google Chrome";v="118", "Not=A?Brand";v="99"', +# 'sec-ch-ua-mobile': '?0', +# 'sec-ch-ua-platform': '"macOS"', +# 'sec-fetch-dest': 'empty', +# 'sec-fetch-mode': 'cors', +# 'sec-fetch-site': 'same-site', +# 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36', +# 'visitor-id': '18ae8fe5d916d3-0213f29594b17f-18525634-157188-18ae8fe5d916d3', +# } + +# json_data = { +# 'conversation_scenario': 3, +# 'botId': '4738', +# 'message': 'hi', +# 'messageType': 1, +# } + +# async with StreamSession(headers=headers, impersonate="chrome110") as session: +# async with session.post(f'https://api.myshell.ai/v1/bot/chat/send_message', +# json=json_data) as response: + +# response.raise_for_status() +# async for chunk in response.iter_content(): +# print(chunk.decode("utf-8")) + +# import asyncio +# asyncio.run(main())
\ No newline at end of file diff --git a/g4f/Provider/Ylokh.py b/g4f/Provider/Ylokh.py index 59da0fa4..b13f846e 100644 --- a/g4f/Provider/Ylokh.py +++ b/g4f/Provider/Ylokh.py @@ -8,7 +8,7 @@ from ..typing import AsyncResult, Messages class Ylokh(AsyncGeneratorProvider): url = "https://chat.ylokh.xyz" - working = True + working = False supports_gpt_35_turbo = True |