From a485cfb180094f14b3fe27ea218d2890033768a3 Mon Sep 17 00:00:00 2001 From: "t.me/xtekky" <98614666+xtekky@users.noreply.github.com> Date: Thu, 20 Apr 2023 15:34:19 +0100 Subject: unfinished api's (help is welcome) --- unfinished/theb.ai/README.md | 3 +++ unfinished/theb.ai/__init__.py | 57 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 unfinished/theb.ai/README.md create mode 100644 unfinished/theb.ai/__init__.py (limited to 'unfinished/theb.ai') diff --git a/unfinished/theb.ai/README.md b/unfinished/theb.ai/README.md new file mode 100644 index 00000000..c221f860 --- /dev/null +++ b/unfinished/theb.ai/README.md @@ -0,0 +1,3 @@ +https://chatbot.theb.ai/ +to do: +- code refractoring \ No newline at end of file diff --git a/unfinished/theb.ai/__init__.py b/unfinished/theb.ai/__init__.py new file mode 100644 index 00000000..a90a32f5 --- /dev/null +++ b/unfinished/theb.ai/__init__.py @@ -0,0 +1,57 @@ +from curl_cffi import requests +from json import loads +from re import findall +from threading import Thread +from queue import Queue, Empty + +class Completion: + # experimental + part1 = '{"role":"assistant","id":"chatcmpl' + part2 = '"},"index":0,"finish_reason":null}]}}' + regex = rf'{part1}(.*){part2}' + + timer = None + message_queue = Queue() + stream_completed = False + + def request(): + headers = { + 'authority' : 'chatbot.theb.ai', + 'content-type': 'application/json', + 'origin' : 'https://chatbot.theb.ai', + 'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', + } + + requests.post('https://chatbot.theb.ai/api/chat-process', headers=headers, content_callback=Completion.handle_stream_response, + json = { + 'prompt' : 'hello world', + 'options': {} + } + ) + + Completion.stream_completed = True + + @staticmethod + def create(): + Thread(target=Completion.request).start() + + while Completion.stream_completed != True or not Completion.message_queue.empty(): + try: + message = Completion.message_queue.get(timeout=0.01) + for message in findall(Completion.regex, message): + yield loads(Completion.part1 + message + Completion.part2) + + except Empty: + pass + + @staticmethod + def handle_stream_response(response): + Completion.message_queue.put(response.decode()) + +def start(): + for message in Completion.create(): + yield message['delta'] + +if __name__ == '__main__': + for message in start(): + print(message) -- cgit v1.2.3