Add ChatBase Provider

This commit is contained in:
Heiner Lohaus 2023-09-10 19:06:46 +02:00
parent ddb6fa30d9
commit c2741a9a86
2 changed files with 64 additions and 0 deletions

62
g4f/Provider/ChatBase.py Normal file
View File

@ -0,0 +1,62 @@
from __future__ import annotations
from aiohttp import ClientSession
from ..typing import AsyncGenerator
from .base_provider import AsyncGeneratorProvider
class ChatBase(AsyncGeneratorProvider):
url = "https://www.chatbase.co"
supports_gpt_35_turbo = True
supports_gpt_4 = True
working = True
@classmethod
async def create_async_generator(
cls,
model: str,
messages: list[dict[str, str]],
**kwargs
) -> AsyncGenerator:
if model == "gpt-4":
chat_id = "quran---tafseer-saadi-pdf-wbgknt7zn"
elif model == "gpt-3.5-turbo" or True:
chat_id = "chatbase--1--pdf-p680fxvnm"
headers = {
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
"Accept" : "*/*",
"Accept-language" : "en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3",
"Origin" : cls.url,
"Referer" : cls.url + "/",
"Sec-Fetch-Dest" : "empty",
"Sec-Fetch-Mode" : "cors",
"Sec-Fetch-Site" : "same-origin",
}
async with ClientSession(
headers=headers
) as session:
data = {
"messages": messages,
"captchaCode": "hadsa",
"chatId": chat_id,
"conversationId": f"kcXpqEnqUie3dnJlsRi_O-{chat_id}"
}
async with session.post("https://www.chatbase.co/api/fe/chat", json=data) as response:
response.raise_for_status()
async for stream in response.content.iter_any():
stream = stream.decode()
if stream:
yield stream
@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

@ -6,6 +6,7 @@ from .AiService import AiService
from .AItianhu import AItianhu
from .Bard import Bard
from .Bing import Bing
from .ChatBase import ChatBase
from .ChatgptAi import ChatgptAi
from .ChatgptLogin import ChatgptLogin
from .CodeLinkAva import CodeLinkAva
@ -43,6 +44,7 @@ __all__ = [
'AItianhu',
'Bard',
'Bing',
'ChatBase',
'ChatgptAi',
'ChatgptLogin',
'CodeLinkAva',