summaryrefslogtreecommitdiffstats
path: root/gpt4free/oraai/__init__.py
blob: 99a7009835d23d0a14ecb65e2c59c296b6107770 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import time
import json
import uuid
import random
import requests
from fake_useragent import UserAgent


class ChatCompletion:
    def __init__(self,proxy=None,chatbotId="5111b690-edd3-403f-b02a-607332d059f9"):
        self.userId = "auto:"+str(uuid.uuid4()) 
        self.chatbotId = chatbotId
        self.proxies = {'http': 'http://' + proxy, 'https': 'http://' + proxy} if proxy else None
        self.conversationId = None
        self.headers = {
            "Content-Type": "application/json",
            "Origin": "https://ora.ai",
            "Referer": "https://ora.ai/",
            'user-agent': UserAgent().random,
        }

    def create(self,prompt: str):
        url = "https://ora.ai/api/conversation"
        data = {
            "chatbotId": self.chatbotId,
            "config": False,
            "includeHistory": True,
            "input": prompt,
            "provider": "OPEN_AI",
            "userId": self.userId,
        }

        if self.conversationId:
            data["conversationId"] = self.conversationId
        response = requests.post(
            url,
            data=json.dumps(data),
            proxies=self.proxies,
            headers=self.headers
        )
        if response.status_code == 200:
            response_json = response.json()
            self.conversationId = response_json["conversationId"]
            return response_json["response"]

        raise ValueError(response.text)


    def generate_image(self,prompt:str):
        url = "https://ora.ai/api/images/request"
        data = {
            "prompt":prompt,
            "seed":random.randint(0, 4294967295)
        }
        response = requests.post(
            url,
            data=json.dumps(data),
            proxies=self.proxies,
            headers=self.headers
        )
        if response.status_code == 200:
            inferenceId = response.json()["id"]
        else:
            raise ValueError(response.text)

        data = {
            "chatbotId":self.chatbotId,
            "inferenceId":inferenceId,
            "userId":self.userId,
            "userInput":"/generate " + prompt
        }
        print(data)
        if self.conversationId:
            data["conversationId"] = self.conversationId
        while True:
            response = requests.post(
                "https://ora.ai/api/images/check",
                data=json.dumps(data),
                proxies=self.proxies,
                headers=self.headers
            )
            if response.status_code == 200:
                response_json = response.json()
                if response_json.get("conversationId"):
                    self.conversationId = response_json["conversationId"]
                    return response_json["inference"]["images"][0]["uri"]
                else:
                    time.sleep(0.5)
            else:
                raise ValueError(response.text)


class Completion:
    @classmethod
    def create(self, prompt, proxy):
        return ChatCompletion(proxy).create(prompt)