import base64, os, re, requests from ..typing import Any, CreateResult from .base_provider import BaseProvider class ChatgptLogin(BaseProvider): url = "https://opchatgpts.net" supports_gpt_35_turbo = True working = True @staticmethod def create_completion( model: str, messages: list[dict[str, str]], stream: bool, **kwargs: Any) -> CreateResult: headers = { "authority" : "chatgptlogin.ac", "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", "content-type" : "application/json", "origin" : "https://opchatgpts.net", "referer" : "https://opchatgpts.net/chatgpt-free-use/", "sec-ch-ua" : '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"', "sec-ch-ua-mobile" : "?0", "sec-ch-ua-platform" : '"Windows"', "sec-fetch-dest" : "empty", "sec-fetch-mode" : "cors", "sec-fetch-site" : "same-origin", "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", "x-wp-nonce" : _get_nonce(), } conversation = _transform(messages) json_data = { "env" : "chatbot", "session" : "N/A", "prompt" : "Converse as if you were an AI assistant. Be friendly, creative.", "context" : "Converse as if you were an AI assistant. Be friendly, creative.", "messages" : conversation, "newMessage" : messages[-1]["content"], "userName" : '
User:
', "aiName" : '
AI:
', "model" : "gpt-3.5-turbo", "temperature" : kwargs.get("temperature", 0.8), "maxTokens" : 1024, "maxResults" : 1, "apiKey" : "", "service" : "openai", "embeddingsIndex": "", "stop" : "", "clientId" : os.urandom(6).hex() } response = requests.post("https://opchatgpts.net/wp-json/ai-chatbot/v1/chat", headers=headers, json=json_data) response.raise_for_status() yield response.json()["reply"] @classmethod @property def params(cls): params = [ ("model", "str"), ("messages", "list[dict[str, str]]"), ("stream", "bool"), ("temperature", "float"), ] param = ", ".join([": ".join(p) for p in params]) return f"g4f.provider.{cls.__name__} supports: ({param})" def _get_nonce() -> str: res = requests.get("https://opchatgpts.net/chatgpt-free-use/", headers = { "Referer" : "https://opchatgpts.net/chatgpt-free-use/", "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"}) result = re.search( r'class="mwai-chat mwai-chatgpt">.*Send