~ | Merge pull request #839

Wuguokai
This commit is contained in:
Tekky 2023-08-25 17:19:24 +01:00 committed by GitHub
commit af7defe2e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 67 additions and 0 deletions

65
g4f/Provider/Wuguokai.py Normal file
View File

@ -0,0 +1,65 @@
import random, requests, json
from ..typing import Any, CreateResult
from .base_provider import BaseProvider
class Wuguokai(BaseProvider):
url = 'https://chat.wuguokai.xyz'
supports_gpt_35_turbo = True
supports_stream = False
needs_auth = False
working = True
@staticmethod
def create_completion(
model: str,
messages: list[dict[str, str]],
stream: bool,
**kwargs: Any,
) -> CreateResult:
base = ''
for message in messages:
base += '%s: %s\n' % (message['role'], message['content'])
base += 'assistant:'
headers = {
'authority': 'ai-api.wuguokai.xyz',
'accept': 'application/json, text/plain, */*',
'accept-language': 'id-ID,id;q=0.9,en-US;q=0.8,en;q=0.7',
'content-type': 'application/json',
'origin': 'https://chat.wuguokai.xyz',
'referer': 'https://chat.wuguokai.xyz/',
'sec-ch-ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-site',
'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'
}
data ={
"prompt": base,
"options": {},
"userId": f"#/chat/{random.randint(1,99999999)}",
"usingContext": True
}
response = requests.post("https://ai-api20.wuguokai.xyz/api/chat-process", headers=headers, data=json.dumps(data),proxies=kwargs['proxy'] if 'proxy' in kwargs else {})
_split = response.text.split("> 若回答失败请重试或多刷新几次界面后重试")
if response.status_code == 200:
if len(_split) > 1:
yield _split[1].strip()
else:
yield _split[0].strip()
else:
raise Exception(f"Error: {response.status_code} {response.reason}")
@classmethod
@property
def params(cls):
params = [
("model", "str"),
("messages", "list[dict[str, str]]"),
("stream", "bool")
]
param = ", ".join([": ".join(p) for p in params])
return f"g4f.provider.{cls.__name__} supports: ({param})"

View File

@ -28,6 +28,7 @@ from .Yqcloud import Yqcloud
from .Equing import Equing from .Equing import Equing
from .FastGpt import FastGpt from .FastGpt import FastGpt
from .V50 import V50 from .V50 import V50
from .Wuguokai import Wuguokai
__all__ = [ __all__ = [
"BaseProvider", "BaseProvider",
@ -59,5 +60,6 @@ __all__ = [
"Yqcloud", "Yqcloud",
"Equing", "Equing",
"FastGpt", "FastGpt",
"Wuguokai"
"V50" "V50"
] ]