summaryrefslogblamecommitdiffstats
path: root/g4f/Provider/Aichat.py
blob: 596405334f32432ab756ca266ae3593b9e518e8b (plain) (tree)
1
2
3
4
5
6
7
8
9

                                  






                                       

                                                       





                                       

                                                     

                                                                                            


















                                                                                                                                                  
                                                          
                                  
                                            








                                            

                                                                 
                                        
from __future__ import annotations

import requests

from ..typing import Any, CreateResult
from .base_provider import BaseProvider


class Aichat(BaseProvider):
    url                   = "https://chat-gpt.org/chat"
    working               = True
    supports_gpt_35_turbo = True

    @staticmethod
    def create_completion(
        model: str,
        messages: list[dict[str, str]],
        stream: bool, **kwargs: Any) -> CreateResult:
        
        chat = "\n".join(f"{message['role']}: {message['content']}" for message in messages)
        chat += "\nassistant: "

        headers = {
            "authority": "chat-gpt.org",
            "accept": "*/*",
            "cache-control": "no-cache",
            "content-type": "application/json",
            "origin": "https://chat-gpt.org",
            "pragma": "no-cache",
            "referer": "https://chat-gpt.org/chat",
            "sec-ch-ua-mobile": "?0",
            "sec-ch-ua-platform": '"macOS"',
            "sec-fetch-dest": "empty",
            "sec-fetch-mode": "cors",
            "sec-fetch-site": "same-origin",
            "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
        }

        json_data = {
            "message": base,
            "temperature": kwargs.get('temperature', 0.5),
            "presence_penalty": 0,
            "top_p": kwargs.get('top_p', 1),
            "frequency_penalty": 0,
        }

        response = requests.post(
            "https://chat-gpt.org/api/text",
            headers=headers,
            json=json_data,
        )
        response.raise_for_status()
        if not response.json()['response']:
            raise Exception("Error Response: " + response.json())
        yield response.json()["message"]