返回提交历史
Modified
docs/providers-and-models.md
+2
-0
Added
g4f/Provider/ChatGot.py
+75
-0
Modified
g4f/Provider/__init__.py
+1
-0
XFEstudio/gpt4free
Returned provider 'g4f/Provider/ChatGot.py' updated documentation 'docs/providers-and-models.md'
0c18ed5c
代码差异
3 个文件
+78
-0
@@ -1,4 +1,5 @@
1
1
2
2
3
## 🚀 Providers and Models
3
4
- [Providers](#Providers)
4
5
- [Models](#models)
@@ -20,6 +21,7 @@
20
21
|[chat18.aichatos8.com](https://chat18.aichatos8.com)|`g4f.Provider.Binjie`|`gpt-4`|❌|❌|✔||❌|
21
22
|[chat.bixin123.com](https://chat.bixin123.com)|`g4f.Provider.Bixin123`|`gpt-3.5-turbo, gpt-4-turbo, qwen-turbo`|❌|❌||||
22
23
|[blackbox.ai](https://www.blackbox.ai)|`g4f.Provider.Blackbox`|`blackbox, gemini-flash, llama-3.1-8b, llama-3.1-70b, llama-3.1-405b, gpt-4o, gemini-pro, claude-3.5-sonnet`|`flux`|✔|✔||❌|
24
|[chatgot.one](https://www.chatgot.one/)|`g4f.Provider.ChatGot`|`gemini-pro`|❌|❌|✔||❌|
23
25
|[chatgpt.com](https://chatgpt.com)|`g4f.Provider.ChatGpt`|`?`|`?`|`?`|?| |❌|
24
26
|[chatgpt.es](https://chatgpt.es)|`g4f.Provider.ChatGptEs`|`gpt-4o, gpt-4o-mini`|❌|❌|✔||❌|
25
27
|[chatgpt4online.org](https://chatgpt4online.org)|`g4f.Provider.Chatgpt4Online`|`gpt-4`|❌|❌|✔||❌|
@@ -0,0 +1,75 @@
1
from __future__ import annotations
2
3
import time
4
from hashlib import sha256
5
6
from aiohttp import BaseConnector, ClientSession
7
8
from ..errors import RateLimitError
9
from ..requests import raise_for_status
10
from ..requests.aiohttp import get_connector
11
from ..typing import AsyncResult, Messages
12
from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
13
14
15
class ChatGot(AsyncGeneratorProvider, ProviderModelMixin):
16
url = "https://www.chatgot.one/"
17
working = True
18
supports_message_history = True
19
default_model = 'gemini-pro'
20
21
@classmethod
22
async def create_async_generator(
23
cls,
24
model: str,
25
messages: Messages,
26
proxy: str = None,
27
connector: BaseConnector = None,
28
**kwargs,
29
) -> AsyncResult:
30
headers = {
31
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0",
32
"Accept": "*/*",
33
"Accept-Language": "en-US,en;q=0.5",
34
"Accept-Encoding": "gzip, deflate, br",
35
"Content-Type": "text/plain;charset=UTF-8",
36
"Referer": f"{cls.url}/",
37
"Origin": cls.url,
38
"Sec-Fetch-Dest": "empty",
39
"Sec-Fetch-Mode": "cors",
40
"Sec-Fetch-Site": "same-origin",
41
"Connection": "keep-alive",
42
"TE": "trailers",
43
}
44
async with ClientSession(
45
connector=get_connector(connector, proxy), headers=headers
46
) as session:
47
timestamp = int(time.time() * 1e3)
48
data = {
49
"messages": [
50
{
51
"role": "model" if message["role"] == "assistant" else "user",
52
"parts": [{"text": message["content"]}],
53
}
54
for message in messages
55
],
56
"time": timestamp,
57
"pass": None,
58
"sign": generate_signature(timestamp, messages[-1]["content"]),
59
}
60
async with session.post(
61
f"{cls.url}/api/generate", json=data, proxy=proxy
62
) as response:
63
if response.status == 500:
64
if "Quota exceeded" in await response.text():
65
raise RateLimitError(
66
f"Response {response.status}: Rate limit reached"
67
)
68
await raise_for_status(response)
69
async for chunk in response.content.iter_any():
70
yield chunk.decode(errors="ignore")
71
72
73
def generate_signature(time: int, text: str, secret: str = ""):
74
message = f"{time}:{text}:{secret}"
75
return sha256(message.encode()).hexdigest()
@@ -19,6 +19,7 @@ from .BingCreateImages import BingCreateImages
19
19
from .Binjie import Binjie
20
20
from .Bixin123 import Bixin123
21
21
from .Blackbox import Blackbox
22
from .ChatGot import ChatGot
22
23
from .ChatGpt import ChatGpt
23
24
from .Chatgpt4Online import Chatgpt4Online
24
25
from .Chatgpt4o import Chatgpt4o