返回提交历史
Added
g4f/Provider/Free2GPT.py
+77
-0
Modified
g4f/Provider/__init__.py
+2
-1
Modified
g4f/models.py
+3
-1
XFEstudio/gpt4free
Adding a new provider Free2GPT
b3950ae6
代码差异
3 个文件
+82
-2
@@ -0,0 +1,77 @@
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 Free2GPT(AsyncGeneratorProvider, ProviderModelMixin):
16
url = "https://chat10.free2gpt.xyz"
17
working = True
18
supports_message_history = True
19
default_model = 'llama-3.1-70b'
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 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
32
"Accept": "*/*",
33
"Accept-Language": "en-US,en;q=0.9",
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
"Sec-Ch-Ua": '"Chromium";v="127", "Not)A;Brand";v="99"',
42
"Sec-Ch-Ua-Mobile": "?0",
43
"Sec-Ch-Ua-Platform": '"Linux"',
44
"Cache-Control": "no-cache",
45
"Pragma": "no-cache",
46
"Priority": "u=1, i",
47
}
48
async with ClientSession(
49
connector=get_connector(connector, proxy), headers=headers
50
) as session:
51
timestamp = int(time.time() * 1e3)
52
system_message = {
53
"role": "system",
54
"content": ""
55
}
56
data = {
57
"messages": [system_message] + messages,
58
"time": timestamp,
59
"pass": None,
60
"sign": generate_signature(timestamp, messages[-1]["content"]),
61
}
62
async with session.post(
63
f"{cls.url}/api/generate", json=data, proxy=proxy
64
) as response:
65
if response.status == 500:
66
if "Quota exceeded" in await response.text():
67
raise RateLimitError(
68
f"Response {response.status}: Rate limit reached"
69
)
70
await raise_for_status(response)
71
async for chunk in response.content.iter_any():
72
yield chunk.decode(errors="ignore")
73
74
75
def generate_signature(time: int, text: str, secret: str = ""):
76
message = f"{time}:{text}:{secret}"
77
return sha256(message.encode()).hexdigest()
@@ -16,7 +16,7 @@ from .AiChats import AiChats
16
16
from .Aura import Aura
17
17
from .Bing import Bing
18
18
from .BingCreateImages import BingCreateImages
19
from .Binjie import Binjie
19
from .Binjie import Binjie
20
20
from .Bixin123 import Bixin123
21
21
from .Blackbox import Blackbox
22
22
from .ChatGot import ChatGot
@@ -29,6 +29,7 @@ from .DeepInfra import DeepInfra
29
29
from .DeepInfraImage import DeepInfraImage
30
30
from .FlowGpt import FlowGpt
31
31
from .FluxAirforce import FluxAirforce
32
from .Free2GPT import Free2GPT
32
33
from .FreeChatgpt import FreeChatgpt
33
34
from .FreeGpt import FreeGpt
34
35
from .FreeNetfly import FreeNetfly
@@ -19,6 +19,7 @@ from .Provider import (
19
19
DeepInfra,
20
20
DeepInfraImage,
21
21
FluxAirforce,
22
Free2GPT,
22
23
FreeChatgpt,
23
24
FreeGpt,
24
25
FreeNetfly,
@@ -86,6 +87,7 @@ default = Model(
86
87
Blackbox,
87
88
Bixin123,
88
89
Binjie,
90
Free2GPT,
89
91
])
90
92
)
91
93
@@ -182,7 +184,7 @@ llama_3_1_8b = Model(
182
184
llama_3_1_70b = Model(
183
185
name = "llama-3.1-70b",
184
186
base_provider = "Meta",
185
best_provider = IterListProvider([DDG, HuggingChat, FreeGpt, Blackbox, TeachAnything, HuggingFace])
187
best_provider = IterListProvider([DDG, HuggingChat, FreeGpt, Blackbox, TeachAnything, Free2GPT, HuggingFace])
186
188
)
187
189
188
190
llama_3_1_405b = Model(