summaryrefslogtreecommitdiffstats
path: root/g4f/.v1/gpt4free/gptworldAi/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'g4f/.v1/gpt4free/gptworldAi/__init__.py')
-rw-r--r--g4f/.v1/gpt4free/gptworldAi/__init__.py105
1 files changed, 0 insertions, 105 deletions
diff --git a/g4f/.v1/gpt4free/gptworldAi/__init__.py b/g4f/.v1/gpt4free/gptworldAi/__init__.py
deleted file mode 100644
index e7f76c61..00000000
--- a/g4f/.v1/gpt4free/gptworldAi/__init__.py
+++ /dev/null
@@ -1,105 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-@Time : 2023/5/23 13:37
-@Auth : Hp_mzx
-@File :__init__.py.py
-@IDE :PyCharm
-"""
-import json
-import uuid
-import random
-import binascii
-import requests
-import Crypto.Cipher.AES as AES
-from fake_useragent import UserAgent
-
-class ChatCompletion:
- @staticmethod
- def create(messages:[],proxy: str = None):
- url = "https://chat.getgpt.world/api/chat/stream"
- headers = {
- "Content-Type": "application/json",
- "Referer": "https://chat.getgpt.world/",
- 'user-agent': UserAgent().random,
- }
- proxies = {'http': 'http://' + proxy, 'https': 'http://' + proxy} if proxy else None
- data = json.dumps({
- "messages": messages,
- "frequency_penalty": 0,
- "max_tokens": 4000,
- "model": "gpt-3.5-turbo",
- "presence_penalty": 0,
- "temperature": 1,
- "top_p": 1,
- "stream": True,
- "uuid": str(uuid.uuid4())
- })
- signature = ChatCompletion.encrypt(data)
- res = requests.post(url, headers=headers, data=json.dumps({"signature": signature}), proxies=proxies,stream=True)
- for chunk in res.iter_content(chunk_size=None):
- res.raise_for_status()
- datas = chunk.decode('utf-8').split('data: ')
- for data in datas:
- if not data or "[DONE]" in data:
- continue
- data_json = json.loads(data)
- content = data_json['choices'][0]['delta'].get('content')
- if content:
- yield content
-
-
- @staticmethod
- def random_token(e):
- token = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
- n = len(token)
- return "".join([token[random.randint(0, n - 1)] for i in range(e)])
-
- @staticmethod
- def encrypt(e):
- t = ChatCompletion.random_token(16).encode('utf-8')
- n = ChatCompletion.random_token(16).encode('utf-8')
- r = e.encode('utf-8')
- cipher = AES.new(t, AES.MODE_CBC, n)
- ciphertext = cipher.encrypt(ChatCompletion.__pad_data(r))
- return binascii.hexlify(ciphertext).decode('utf-8') + t.decode('utf-8') + n.decode('utf-8')
-
- @staticmethod
- def __pad_data(data: bytes) -> bytes:
- block_size = AES.block_size
- padding_size = block_size - len(data) % block_size
- padding = bytes([padding_size] * padding_size)
- return data + padding
-
-
-class Completion:
- @staticmethod
- def create(prompt:str,proxy:str=None):
- return ChatCompletion.create([
- {
- "content": "You are ChatGPT, a large language model trained by OpenAI.\nCarefully heed the user's instructions. \nRespond using Markdown.",
- "role": "system"
- },
- {"role": "user", "content": prompt}
- ], proxy)
-
-
-if __name__ == '__main__':
- # single completion
- text = ""
- for chunk in Completion.create("你是谁", "127.0.0.1:7890"):
- text = text + chunk
- print(chunk, end="", flush=True)
- print()
-
-
- #chat completion
- message = []
- while True:
- prompt = input("请输入问题:")
- message.append({"role": "user","content": prompt})
- text = ""
- for chunk in ChatCompletion.create(message,'127.0.0.1:7890'):
- text = text+chunk
- print(chunk, end="", flush=True)
- print()
- message.append({"role": "assistant", "content": text}) \ No newline at end of file