返回提交历史
Added
g4f/Provider/Aichatos.py
+57
-0
Added
g4f/Provider/Blackbox.py
+56
-0
Added
g4f/Provider/Cnote.py
+58
-0
Added
g4f/Provider/Feedough.py
+52
-0
Modified
g4f/Provider/Liaobots.py
+1
-1
Modified
g4f/Provider/__init__.py
+5
-1
XFEstudio/gpt4free
Add Aichatos and Blackbox Provider (#1822)
Providers added: - Feedough - Added a new provider with GPT-3 model - Cnote - Added a new provider with GPT-3.5 model
fa739d2e
代码差异
6 个文件
+229
-2
@@ -0,0 +1,57 @@
1
from __future__ import annotations
2
3
from aiohttp import ClientSession
4
5
from ..typing import AsyncResult, Messages
6
from .base_provider import AsyncGeneratorProvider
7
from .helper import format_prompt
8
9
import random
10
11
12
class Aichatos(AsyncGeneratorProvider):
13
url = "https://chat10.aichatos.xyz"
14
api = "https://api.binjie.fun"
15
working = True
16
supports_gpt_35_turbo = True
17
18
@classmethod
19
async def create_async_generator(
20
cls,
21
model: str,
22
messages: Messages,
23
proxy: str = None,
24
**kwargs
25
) -> AsyncResult:
26
headers = {
27
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
28
"Accept": "application/json, text/plain, */*",
29
"Accept-Language": "en-US,en;q=0.5",
30
"Accept-Encoding": "gzip, deflate, br",
31
"Content-Type": "application/json",
32
"Origin": "https://chat10.aichatos.xyz",
33
"DNT": "1",
34
"Sec-GPC": "1",
35
"Connection": "keep-alive",
36
"Sec-Fetch-Dest": "empty",
37
"Sec-Fetch-Mode": "cors",
38
"Sec-Fetch-Site": "cross-site",
39
"TE": "trailers",
40
}
41
async with ClientSession(headers=headers) as session:
42
prompt = format_prompt(messages)
43
userId = random.randint(1000000000000, 9999999999999)
44
system_message: str = "",
45
data = {
46
"prompt": prompt,
47
"userId": "#/chat/{userId}",
48
"network": True,
49
"system": system_message,
50
"withoutContext": False,
51
"stream": True,
52
}
53
async with session.post(f"{cls.api}/api/generateStream", json=data, proxy=proxy) as response:
54
response.raise_for_status()
55
async for chunk in response.content:
56
if chunk:
57
yield chunk.decode()
@@ -0,0 +1,56 @@
1
from __future__ import annotations
2
3
import uuid
4
import secrets
5
from aiohttp import ClientSession
6
7
from ..typing import AsyncResult, Messages
8
from .base_provider import AsyncGeneratorProvider
9
10
class Blackbox(AsyncGeneratorProvider):
11
url = "https://www.blackbox.ai"
12
working = True
13
14
@classmethod
15
async def create_async_generator(
16
cls,
17
model: str,
18
messages: Messages,
19
proxy: str = None,
20
**kwargs
21
) -> AsyncResult:
22
headers = {
23
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
24
"Accept": "*/*",
25
"Accept-Language": "en-US,en;q=0.5",
26
"Accept-Encoding": "gzip, deflate, br",
27
"Referer": cls.url,
28
"Content-Type": "application/json",
29
"Origin": cls.url,
30
"DNT": "1",
31
"Sec-GPC": "1",
32
"Alt-Used": "www.blackbox.ai",
33
"Connection": "keep-alive",
34
}
35
async with ClientSession(headers=headers) as session:
36
random_id = secrets.token_hex(16)
37
random_user_id = str(uuid.uuid4())
38
data = {
39
"messages": messages,
40
"id": random_id,
41
"userId": random_user_id,
42
"codeModelMode": True,
43
"agentMode": {},
44
"trendingAgentMode": {},
45
"isMicMode": False,
46
"isChromeExt": False,
47
"playgroundMode": False,
48
"webSearchMode": False,
49
"userSystemPrompt": "",
50
"githubToken": None
51
}
52
async with session.post(f"{cls.url}/api/chat", json=data, proxy=proxy) as response:
53
response.raise_for_status()
54
async for chunk in response.content:
55
if chunk:
56
yield chunk.decode()
@@ -0,0 +1,58 @@
1
from __future__ import annotations
2
3
import json
4
from aiohttp import ClientSession
5
6
from ..typing import AsyncResult, Messages
7
from .base_provider import AsyncGeneratorProvider
8
from .helper import format_prompt
9
10
11
class Cnote(AsyncGeneratorProvider):
12
url = "https://f1.cnote.top"
13
api_url = "https://p1api.xjai.pro/freeapi/chat-process"
14
working = True
15
supports_gpt_35_turbo = True
16
17
@classmethod
18
async def create_async_generator(
19
cls,
20
model: str,
21
messages: Messages,
22
proxy: str = None,
23
**kwargs
24
) -> AsyncResult:
25
headers = {
26
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
27
"Accept": "application/json, text/plain, */*",
28
"Accept-Language": "en-US,en;q=0.5",
29
"Accept-Encoding": "gzip, deflate, br",
30
"Content-Type": "application/json",
31
"Origin": cls.url,
32
"DNT": "1",
33
"Sec-GPC": "1",
34
"Connection": "keep-alive",
35
"Sec-Fetch-Dest": "empty",
36
"Sec-Fetch-Mode": "cors",
37
"Sec-Fetch-Site": "cross-site",
38
"TE": "trailers",
39
}
40
async with ClientSession(headers=headers) as session:
41
prompt = format_prompt(messages)
42
system_message: str = "",
43
data = {
44
"prompt": prompt,
45
"systemMessage": system_message,
46
"temperature": 0.8,
47
"top_p": 1,
48
}
49
async with session.post(cls.api_url, json=data, proxy=proxy) as response:
50
response.raise_for_status()
51
async for chunk in response.content:
52
if chunk:
53
try:
54
data = json.loads(chunk.decode().split("&KFw6loC9Qvy&")[-1])
55
text = data.get("text", "")
56
yield text
57
except (json.JSONDecodeError, IndexError):
58
pass
@@ -0,0 +1,52 @@
1
from __future__ import annotations
2
3
import json
4
from aiohttp import ClientSession
5
6
from ..typing import AsyncResult, Messages
7
from .base_provider import AsyncGeneratorProvider
8
from .helper import format_prompt
9
10
11
class Feedough(AsyncGeneratorProvider):
12
url = "https://www.feedough.com"
13
working = True
14
supports_gpt_35_turbo = True
15
16
@classmethod
17
async def create_async_generator(
18
cls,
19
model: str,
20
messages: Messages,
21
proxy: str = None,
22
**kwargs
23
) -> AsyncResult:
24
headers = {
25
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
26
"Accept": "*/*",
27
"Accept-Language": "en-US,en;q=0.5",
28
"Accept-Encoding": "gzip, deflate, br",
29
"Referer": "https://www.feedough.com/ai-prompt-generator/",
30
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
31
"Origin": "https://www.feedough.com",
32
"DNT": "1",
33
"Sec-GPC": "1",
34
"Connection": "keep-alive",
35
"Sec-Fetch-Dest": "empty",
36
"Sec-Fetch-Mode": "cors",
37
"Sec-Fetch-Site": "same-origin",
38
"TE": "trailers",
39
}
40
async with ClientSession(headers=headers) as session:
41
prompt = format_prompt(messages)
42
data = {
43
"action": "aixg_generate",
44
"prompt": prompt,
45
}
46
async with session.post(f"{cls.url}/wp-admin/admin-ajax.php", data=data, proxy=proxy) as response:
47
response.raise_for_status()
48
response_text = await response.text()
49
response_json = json.loads(response_text)
50
if response_json["success"]:
51
message = response_json["data"]["message"]
52
yield message
@@ -142,7 +142,7 @@ class Liaobots(AsyncGeneratorProvider, ProviderModelMixin):
142
142
"model": models[cls.get_model(model)],
143
143
"messages": messages,
144
144
"key": "",
145
"prompt": kwargs.get("system_message", "You are ChatGPT, a large language model trained by OpenAI. Follow the user's instructions carefully."),
145
"prompt": kwargs.get("system_message", "You are a helpful assistant."),
146
146
}
147
147
async with session.post(
148
148
"https://liaobots.work/api/chat",
@@ -11,18 +11,22 @@ from .selenium import *
11
11
from .needs_auth import *
12
12
from .unfinished import *
13
13
14
from .Aichatos import Aichatos
14
15
from .Aura import Aura
15
16
from .Bing import Bing
16
17
from .BingCreateImages import BingCreateImages
18
from .Blackbox import Blackbox
17
19
from .ChatForAi import ChatForAi
18
20
from .Chatgpt4Online import Chatgpt4Online
19
21
from .ChatgptAi import ChatgptAi
20
22
from .ChatgptFree import ChatgptFree
21
23
from .ChatgptNext import ChatgptNext
22
24
from .ChatgptX import ChatgptX
25
from .Cnote import Cnote
23
26
from .DeepInfra import DeepInfra
24
27
from .DeepInfraImage import DeepInfraImage
25
28
from .DuckDuckGo import DuckDuckGo
29
from .Feedough import Feedough
26
30
from .FlowGpt import FlowGpt
27
31
from .FreeChatgpt import FreeChatgpt
28
32
from .FreeGpt import FreeGpt
@@ -62,4 +66,4 @@ __map__: dict[str, ProviderType] = dict([
62
66
])
63
67
64
68
class ProviderUtils:
65
convert: dict[str, ProviderType] = __map__
69
convert: dict[str, ProviderType] = __map__