summaryrefslogtreecommitdiffstats
path: root/g4f/Provider
diff options
context:
space:
mode:
authorkqlio67 <kqlio67@users.noreply.github.com>2024-10-17 14:44:27 +0200
committerkqlio67 <kqlio67@users.noreply.github.com>2024-10-17 14:44:27 +0200
commit4cd1ed1a71ded59fb18d60a45c655e711200480a (patch)
treeefe380d9e2ea4d61b0e897a4b33df5f134095213 /g4f/Provider
parentAdded new provider (g4f/Provider/RubiksAI.py) (diff)
downloadgpt4free-4cd1ed1a71ded59fb18d60a45c655e711200480a.tar
gpt4free-4cd1ed1a71ded59fb18d60a45c655e711200480a.tar.gz
gpt4free-4cd1ed1a71ded59fb18d60a45c655e711200480a.tar.bz2
gpt4free-4cd1ed1a71ded59fb18d60a45c655e711200480a.tar.lz
gpt4free-4cd1ed1a71ded59fb18d60a45c655e711200480a.tar.xz
gpt4free-4cd1ed1a71ded59fb18d60a45c655e711200480a.tar.zst
gpt4free-4cd1ed1a71ded59fb18d60a45c655e711200480a.zip
Diffstat (limited to 'g4f/Provider')
-rw-r--r--g4f/Provider/Ai4Chat.py70
-rw-r--r--g4f/Provider/__init__.py1
2 files changed, 71 insertions, 0 deletions
diff --git a/g4f/Provider/Ai4Chat.py b/g4f/Provider/Ai4Chat.py
new file mode 100644
index 00000000..81633b7a
--- /dev/null
+++ b/g4f/Provider/Ai4Chat.py
@@ -0,0 +1,70 @@
+from __future__ import annotations
+
+from aiohttp import ClientSession
+import re
+
+from ..typing import AsyncResult, Messages
+from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
+from .helper import format_prompt
+
+
+class Ai4Chat(AsyncGeneratorProvider, ProviderModelMixin):
+ url = "https://www.ai4chat.co"
+ api_endpoint = "https://www.ai4chat.co/generate-response"
+ working = True
+ supports_gpt_4 = False
+ supports_stream = False
+ supports_system_message = True
+ supports_message_history = True
+
+ default_model = 'gpt-4'
+
+ @classmethod
+ def get_model(cls, model: str) -> str:
+ return cls.default_model
+
+ @classmethod
+ async def create_async_generator(
+ cls,
+ model: str,
+ messages: Messages,
+ proxy: str = None,
+ **kwargs
+ ) -> AsyncResult:
+ model = cls.get_model(model)
+
+ headers = {
+ 'accept': '*/*',
+ 'accept-language': 'en-US,en;q=0.9',
+ 'cache-control': 'no-cache',
+ 'content-type': 'application/json',
+ 'cookie': 'messageCount=2',
+ 'origin': 'https://www.ai4chat.co',
+ 'pragma': 'no-cache',
+ 'priority': 'u=1, i',
+ 'referer': 'https://www.ai4chat.co/gpt/talkdirtytome',
+ 'sec-ch-ua': '"Chromium";v="129", "Not=A?Brand";v="8"',
+ 'sec-ch-ua-mobile': '?0',
+ 'sec-ch-ua-platform': '"Linux"',
+ 'sec-fetch-dest': 'empty',
+ 'sec-fetch-mode': 'cors',
+ 'sec-fetch-site': 'same-origin',
+ 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36'
+ }
+
+ async with ClientSession(headers=headers) as session:
+ payload = {
+ "messages": [
+ {
+ "role": "user",
+ "content": format_prompt(messages)
+ }
+ ]
+ }
+
+ async with session.post(cls.api_endpoint, json=payload, proxy=proxy) as response:
+ response.raise_for_status()
+ response_data = await response.json()
+ message = response_data.get('message', '')
+ clean_message = re.sub('<[^<]+?>', '', message).strip()
+ yield clean_message
diff --git a/g4f/Provider/__init__.py b/g4f/Provider/__init__.py
index 9caa92d3..c794dd0b 100644
--- a/g4f/Provider/__init__.py
+++ b/g4f/Provider/__init__.py
@@ -11,6 +11,7 @@ from .needs_auth import *
from .nexra import *
+from .Ai4Chat import Ai4Chat
from .AI365VIP import AI365VIP
from .AIChatFree import AIChatFree
from .AIUncensored import AIUncensored