diff options
Diffstat (limited to 'g4f/.v1/gpt4free/gptworldAi')
-rw-r--r-- | g4f/.v1/gpt4free/gptworldAi/README.md | 25 | ||||
-rw-r--r-- | g4f/.v1/gpt4free/gptworldAi/__init__.py | 105 |
2 files changed, 0 insertions, 130 deletions
diff --git a/g4f/.v1/gpt4free/gptworldAi/README.md b/g4f/.v1/gpt4free/gptworldAi/README.md deleted file mode 100644 index a6b07f86..00000000 --- a/g4f/.v1/gpt4free/gptworldAi/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# gptworldAi -Written by [hp_mzx](https://github.com/hpsj). - -## Examples: -### Completion: -```python -for chunk in gptworldAi.Completion.create("你是谁", "127.0.0.1:7890"): - print(chunk, end="", flush=True) - print() -``` - -### Chat Completion: -Support context -```python -message = [] -while True: - prompt = input("请输入问题:") - message.append({"role": "user","content": prompt}) - text = "" - for chunk in gptworldAi.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 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 |