summaryrefslogtreecommitdiffstats
path: root/gpt4free/hpgptai/__init__.py
blob: 66841a87771c32d9e1aa6b8e36d9226c715549cc (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
# -*- coding: utf-8 -*-
"""
@Time : 2023/5/22 14:04
@Auth : Hp_mzx
@File :__init__.py.py
@IDE :PyCharm
"""
import json
import requests
import random
import string

class ChatCompletion:
    @staticmethod
    def create(
            messages: list,
            context: str="Converse as if you were an AI assistant. Be friendly, creative.",
            proxy:str=None
    ):
        url = "https://chatgptlogin.ac/wp-json/ai-chatbot/v1/chat"
        headers = {
            "Content-Type": "application/json",
            "X-Wp-Nonce": "02244d73c2"
        }
        proxies = {'http': 'http://' + proxy, 'https': 'http://' + proxy} if proxy else None
        data = {
            "env": "chatbot",
            "session": "N/A",
            "prompt": ChatCompletion.__build_prompt(context,messages),
            "context": context,
            "messages": messages,
            "newMessage": messages[-1]["content"],
            "userName": "<div class=\"mwai-name-text\">User:</div>",
            "aiName": "<div class=\"mwai-name-text\">AI:</div>",
            "model": "gpt-3.5-turbo",
            "temperature": 0.8,
            "maxTokens": 1024,
            "maxResults": 1,
            "apiKey": "",
            "service": "openai",
            "embeddingsIndex": "",
            "stop": "",
            "clientId": ChatCompletion.randomStr(),
        }
        res = requests.post(url=url, data=json.dumps(data), headers=headers, proxies=proxies)
        if res.status_code == 200:
            return res.json()
        return res.text


    @staticmethod
    def randomStr():
        return ''.join(random.choices(string.ascii_lowercase + string.digits, k=34))[:11]

    @classmethod
    def __build_prompt(cls, context: str, message: list, isCasuallyFineTuned=False, last=15):
        prompt = context + '\n\n' if context else ''
        message = message[-last:]
        if isCasuallyFineTuned:
            lastLine = message[-1]
            prompt = lastLine.content + ""
            return prompt
        conversation = [x["who"] + x["content"] for x in message]
        prompt += '\n'.join(conversation)
        prompt += '\n' + "AI: "
        return prompt




class Completion:
    @staticmethod
    def create(prompt: str,proxy:str):
        messages = [
            {
                "content": prompt,
                "html": prompt,
                "id": ChatCompletion.randomStr(),
                "role": "user",
                "who": "User: ",
            },
        ]
        return ChatCompletion.create(messages=messages,proxy=proxy)