返回提交历史
Modified
etc/testing/test_async.py
+1
-0
Modified
g4f/Provider/AiAsk.py
+2
-3
Modified
g4f/Provider/Aichat.py
+2
-3
Modified
g4f/Provider/ChatgptAi.py
+2
-3
Modified
g4f/Provider/ChatgptDemo.py
+2
-3
Modified
g4f/Provider/GptGo.py
+2
-2
Added
g4f/Provider/GptGod.py
+51
-0
Modified
g4f/Provider/Liaobots.py
+2
-3
Modified
g4f/Provider/Vitalentum.py
+2
-3
Modified
g4f/Provider/Yqcloud.py
+1
-2
Modified
g4f/Provider/__init__.py
+2
-1
Renamed
g4f/Provider/deprecated/ChatgptLogin.py
+1
-1
Modified
g4f/Provider/deprecated/Opchatgpts.py
+2
-3
Modified
g4f/Provider/deprecated/__init__.py
+2
-1
Modified
g4f/__init__.py
+0
-1
XFEstudio/gpt4free
Add GptGod Provider Remove timeout from aiohttp providers Disable Opchatgpts and ChatgptLogin provider
4fa6e9c0
代码差异
15 个文件
+74
-29
@@ -3,6 +3,7 @@ from pathlib import Path
3
3
import asyncio
4
4
5
5
sys.path.append(str(Path(__file__).parent.parent))
6
sys.path.append(str(Path(__file__).parent.parent.parent))
6
7
7
8
import g4f
8
9
from testing.test_providers import get_providers
@@ -1,6 +1,6 @@
1
1
from __future__ import annotations
2
2
3
from aiohttp import ClientSession, ClientTimeout
3
from aiohttp import ClientSession
4
4
from ..typing import AsyncGenerator
5
5
from .base_provider import AsyncGeneratorProvider
6
6
@@ -14,7 +14,6 @@ class AiAsk(AsyncGeneratorProvider):
14
14
cls,
15
15
model: str,
16
16
messages: list[dict[str, str]],
17
timeout: int = 30,
18
17
**kwargs
19
18
) -> AsyncGenerator:
20
19
headers = {
@@ -22,7 +21,7 @@ class AiAsk(AsyncGeneratorProvider):
22
21
"origin": cls.url,
23
22
"referer": f"{cls.url}/chat",
24
23
}
25
async with ClientSession(headers=headers, timeout=ClientTimeout(timeout)) as session:
24
async with ClientSession(headers=headers) as session:
26
25
data = {
27
26
"continuous": True,
28
27
"id": "fRMSQtuHl91A4De9cCvKD",
@@ -1,6 +1,6 @@
1
1
from __future__ import annotations
2
2
3
from aiohttp import ClientSession, ClientTimeout
3
from aiohttp import ClientSession
4
4
5
5
from .base_provider import AsyncProvider, format_prompt
6
6
@@ -15,7 +15,6 @@ class Aichat(AsyncProvider):
15
15
model: str,
16
16
messages: list[dict[str, str]],
17
17
proxy: str = None,
18
timeout: int = 30,
19
18
**kwargs
20
19
) -> str:
21
20
headers = {
@@ -34,7 +33,7 @@ class Aichat(AsyncProvider):
34
33
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
35
34
}
36
35
async with ClientSession(
37
headers=headers, timeout=ClientTimeout(timeout)
36
headers=headers
38
37
) as session:
39
38
json_data = {
40
39
"message": format_prompt(messages),
@@ -1,7 +1,7 @@
1
1
from __future__ import annotations
2
2
3
3
import re
4
from aiohttp import ClientSession, ClientTimeout
4
from aiohttp import ClientSession
5
5
6
6
from .base_provider import AsyncProvider, format_prompt
7
7
@@ -20,7 +20,6 @@ class ChatgptAi(AsyncProvider):
20
20
model: str,
21
21
messages: list[dict[str, str]],
22
22
proxy: str = None,
23
timeout: int = 30,
24
23
**kwargs
25
24
) -> str:
26
25
headers = {
@@ -40,7 +39,7 @@ class ChatgptAi(AsyncProvider):
40
39
"user-agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
41
40
}
42
41
async with ClientSession(
43
headers=headers, timeout=ClientTimeout(timeout)
42
headers=headers
44
43
) as session:
45
44
if not cls._nonce:
46
45
async with session.get(cls.url, proxy=proxy) as response:
@@ -1,7 +1,7 @@
1
1
from __future__ import annotations
2
2
3
3
import time, json, re
4
from aiohttp import ClientSession, ClientTimeout
4
from aiohttp import ClientSession
5
5
from typing import AsyncGenerator
6
6
7
7
from .base_provider import AsyncGeneratorProvider
@@ -18,7 +18,6 @@ class ChatgptDemo(AsyncGeneratorProvider):
18
18
model: str,
19
19
messages: list[dict[str, str]],
20
20
proxy: str = None,
21
timeout: int = 30,
22
21
**kwargs
23
22
) -> AsyncGenerator:
24
23
headers = {
@@ -34,7 +33,7 @@ class ChatgptDemo(AsyncGeneratorProvider):
34
33
"sec-fetch-site": "same-origin",
35
34
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
36
35
}
37
async with ClientSession(headers=headers, timeout=ClientTimeout(timeout)) as session:
36
async with ClientSession(headers=headers) as session:
38
37
async with session.get(f"{cls.url}/", proxy=proxy) as response:
39
38
response.raise_for_status()
40
39
response = await response.text()
@@ -1,6 +1,6 @@
1
1
from __future__ import annotations
2
2
3
from aiohttp import ClientSession, ClientTimeout
3
from aiohttp import ClientSession
4
4
import json
5
5
6
6
from ..typing import AsyncGenerator
@@ -32,7 +32,7 @@ class GptGo(AsyncGeneratorProvider):
32
32
"Sec-Fetch-Site" : "same-origin",
33
33
}
34
34
async with ClientSession(
35
headers=headers, timeout=ClientTimeout(timeout)
35
headers=headers
36
36
) as session:
37
37
async with session.get(
38
38
"https://gptgo.ai/action_get_token.php",
@@ -0,0 +1,51 @@
1
from __future__ import annotations
2
import secrets, json
3
from aiohttp import ClientSession
4
from typing import AsyncGenerator
5
from .base_provider import AsyncGeneratorProvider
6
from .helper import format_prompt
7
8
class GptGod(AsyncGeneratorProvider):
9
url = "https://gptgod.site"
10
supports_gpt_35_turbo = True
11
working = True
12
13
@classmethod
14
async def create_async_generator(
15
cls,
16
model: str,
17
messages: list[dict[str, str]],
18
**kwargs
19
) -> AsyncGenerator:
20
headers = {
21
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0",
22
"Accept": "text/event-stream",
23
"Accept-Language": "de,en-US;q=0.7,en;q=0.3",
24
"Accept-Encoding": "gzip, deflate, br",
25
"Alt-Used": "gptgod.site",
26
"Connection": "keep-alive",
27
"Referer": "https://gptgod.site/",
28
"Sec-Fetch-Dest": "empty",
29
"Sec-Fetch-Mode": "cors",
30
"Sec-Fetch-Site": "same-origin",
31
"Pragma": "no-cache",
32
"Cache-Control": "no-cache",
33
}
34
async with ClientSession(headers=headers) as session:
35
prompt = format_prompt(messages)
36
data = {
37
"content": prompt,
38
"id": secrets.token_hex(16).zfill(32)
39
}
40
async with session.get(f"{cls.url}/api/session/free/gpt3p5", params=data) as response:
41
response.raise_for_status()
42
event = None
43
async for line in response.content:
44
if line.startswith(b'event: '):
45
event = line[7:-1]
46
elif event == b"data" and line.startswith(b"data: "):
47
data = json.loads(line[6:-1])
48
if data:
49
yield data
50
elif event == b"done":
51
break
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
3
3
import uuid
4
4
5
from aiohttp import ClientSession, ClientTimeout
5
from aiohttp import ClientSession
6
6
7
7
from ..typing import AsyncGenerator
8
8
from .base_provider import AsyncGeneratorProvider
@@ -42,7 +42,6 @@ class Liaobots(AsyncGeneratorProvider):
42
42
messages: list[dict[str, str]],
43
43
auth: str = None,
44
44
proxy: str = None,
45
timeout: int = 30,
46
45
**kwargs
47
46
) -> AsyncGenerator:
48
47
model = model if model in models else "gpt-3.5-turbo"
@@ -54,7 +53,7 @@ class Liaobots(AsyncGeneratorProvider):
54
53
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
55
54
}
56
55
async with ClientSession(
57
headers=headers, timeout=ClientTimeout(timeout)
56
headers=headers
58
57
) as session:
59
58
cls._auth_code = auth if isinstance(auth, str) else cls._auth_code
60
59
if not cls._auth_code:
@@ -1,7 +1,7 @@
1
1
from __future__ import annotations
2
2
3
3
import json
4
from aiohttp import ClientSession, ClientTimeout
4
from aiohttp import ClientSession
5
5
6
6
from .base_provider import AsyncGeneratorProvider
7
7
from ..typing import AsyncGenerator
@@ -18,7 +18,6 @@ class Vitalentum(AsyncGeneratorProvider):
18
18
model: str,
19
19
messages: list[dict[str, str]],
20
20
proxy: str = None,
21
timeout: int = 30,
22
21
**kwargs
23
22
) -> AsyncGenerator:
24
23
headers = {
@@ -41,7 +40,7 @@ class Vitalentum(AsyncGeneratorProvider):
41
40
**kwargs
42
41
}
43
42
async with ClientSession(
44
headers=headers, timeout=ClientTimeout(timeout)
43
headers=headers
45
44
) as session:
46
45
async with session.post(cls.url + "/api/converse-edge", json=data, proxy=proxy) as response:
47
46
response.raise_for_status()
@@ -16,11 +16,10 @@ class Yqcloud(AsyncGeneratorProvider):
16
16
model: str,
17
17
messages: list[dict[str, str]],
18
18
proxy: str = None,
19
timeout: int = 30,
20
19
**kwargs,
21
20
) -> AsyncGenerator:
22
21
async with ClientSession(
23
headers=_create_header(), timeout=timeout
22
headers=_create_header()
24
23
) as session:
25
24
payload = _create_payload(messages)
26
25
async with session.post("https://api.aichatos.cloud/api/generateStream", proxy=proxy, json=payload) as response:
@@ -14,13 +14,13 @@ from .Chatgpt4Online import Chatgpt4Online
14
14
from .ChatgptAi import ChatgptAi
15
15
from .ChatgptDemo import ChatgptDemo
16
16
from .ChatgptDuo import ChatgptDuo
17
from .ChatgptLogin import ChatgptLogin
18
17
from .ChatgptX import ChatgptX
19
18
from .DeepAi import DeepAi
20
19
from .FreeGpt import FreeGpt
21
20
from .GPTalk import GPTalk
22
21
from .GptForLove import GptForLove
23
22
from .GptGo import GptGo
23
from .GptGod import GptGod
24
24
from .H2o import H2o
25
25
from .Liaobots import Liaobots
26
26
from .Myshell import Myshell
@@ -71,6 +71,7 @@ __all__ = [
71
71
'GptForLove',
72
72
'GetGpt',
73
73
'GptGo',
74
'GptGod',
74
75
'H2o',
75
76
'HuggingChat',
76
77
'Liaobots',
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
import os, re
4
4
from aiohttp import ClientSession
5
5
6
from .base_provider import AsyncProvider, format_prompt
6
from ..base_provider import AsyncProvider, format_prompt
7
7
8
8
9
9
class ChatgptLogin(AsyncProvider):