| from __future__ import annotations | |
| import json | |
| from aiohttp import ClientSession | |
| from ..typing import AsyncResult, Messages | |
| from .base_provider import AsyncGeneratorProvider | |
| class Chatgpt4Online(AsyncGeneratorProvider): | |
| url = "https://chatgpt4online.org" | |
| supports_gpt_35_turbo = True | |
| working = True | |
| async def create_async_generator( | |
| cls, | |
| model: str, | |
| messages: Messages, | |
| proxy: str = None, | |
| **kwargs | |
| ) -> AsyncResult: | |
| async with ClientSession() as session: | |
| data = { | |
| "botId": "default", | |
| "customId": None, | |
| "session": "N/A", | |
| "chatId": "", | |
| "contextId": 58, | |
| "messages": messages, | |
| "newMessage": messages[-1]["content"], | |
| "stream": True | |
| } | |
| async with session.post(cls.url + "/wp-json/mwai-ui/v1/chats/submit", json=data, proxy=proxy) as response: | |
| response.raise_for_status() | |
| async for line in response.content: | |
| if line.startswith(b"data: "): | |
| line = json.loads(line[6:]) | |
| if line["type"] == "live": | |
| yield line["data"] |