summaryrefslogtreecommitdiffstats
path: root/gpt4free/deepai/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'gpt4free/deepai/__init__.py')
-rw-r--r--gpt4free/deepai/__init__.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/gpt4free/deepai/__init__.py b/gpt4free/deepai/__init__.py
new file mode 100644
index 00000000..a2fc6f5a
--- /dev/null
+++ b/gpt4free/deepai/__init__.py
@@ -0,0 +1,46 @@
+import requests
+import json
+import hashlib
+import random
+import string
+from fake_useragent import UserAgent
+
+class ChatCompletion:
+ @classmethod
+ def md5(self, text):
+ return hashlib.md5(text.encode()).hexdigest()[::-1]
+
+ @classmethod
+ def get_api_key(self, user_agent):
+ part1 = str(random.randint(0, 10**11))
+ part2 = self.md5(user_agent+self.md5(user_agent+self.md5(user_agent+part1+"x")))
+ return f"tryit-{part1}-{part2}"
+
+ @classmethod
+ def create(self, messages):
+ user_agent = UserAgent().random
+ api_key = self.get_api_key(user_agent)
+ headers = {
+ "api-key": api_key,
+ "user-agent": user_agent
+ }
+ files = {
+ "chat_style": (None, "chat"),
+ "chatHistory": (None, json.dumps(messages))
+ }
+
+ r = requests.post("https://api.deepai.org/chat_response", headers=headers, files=files, stream=True)
+
+ for chunk in r.iter_content(chunk_size=None):
+ r.raise_for_status()
+ yield chunk.decode()
+
+class Completion:
+ @classmethod
+ def create(self, prompt):
+ return ChatCompletion.create([
+ {
+ "role": "user",
+ "content": prompt
+ }
+ ]) \ No newline at end of file