diff options
author | t.me/xtekky <98614666+xtekky@users.noreply.github.com> | 2023-04-27 20:32:39 +0200 |
---|---|---|
committer | t.me/xtekky <98614666+xtekky@users.noreply.github.com> | 2023-04-27 20:32:39 +0200 |
commit | ac96278d74c8fa9f70e07190df7e602cfec118f6 (patch) | |
tree | 1db66f0bae8e34b8d15dbcbbcbb5a0e9216b1818 /theb | |
parent | remove phind (diff) | |
download | gpt4free-ac96278d74c8fa9f70e07190df7e602cfec118f6.tar gpt4free-ac96278d74c8fa9f70e07190df7e602cfec118f6.tar.gz gpt4free-ac96278d74c8fa9f70e07190df7e602cfec118f6.tar.bz2 gpt4free-ac96278d74c8fa9f70e07190df7e602cfec118f6.tar.lz gpt4free-ac96278d74c8fa9f70e07190df7e602cfec118f6.tar.xz gpt4free-ac96278d74c8fa9f70e07190df7e602cfec118f6.tar.zst gpt4free-ac96278d74c8fa9f70e07190df7e602cfec118f6.zip |
Diffstat (limited to 'theb')
-rw-r--r-- | theb/README.md | 11 | ||||
-rw-r--r-- | theb/__init__.py | 50 | ||||
-rw-r--r-- | theb/theb_test.py | 4 |
3 files changed, 65 insertions, 0 deletions
diff --git a/theb/README.md b/theb/README.md new file mode 100644 index 00000000..982c34a1 --- /dev/null +++ b/theb/README.md @@ -0,0 +1,11 @@ +### Example: `theb` (use like openai pypi package) <a name="example-theb"></a> + + +```python +# import library +import theb + +# simple streaming completion +for token in theb.Completion.create('hello world'): + print(token, end='', flush=True) +```
\ No newline at end of file diff --git a/theb/__init__.py b/theb/__init__.py new file mode 100644 index 00000000..726e025e --- /dev/null +++ b/theb/__init__.py @@ -0,0 +1,50 @@ +from re import findall +from json import loads +from queue import Queue, Empty +from threading import Thread +from curl_cffi import requests + +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(prompt: str): + 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': prompt, + 'options': {} + } + ) + + Completion.stream_completed = True + + @staticmethod + def create(prompt: str): + Thread(target=Completion.request, args=[prompt]).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)['delta'] + + except Empty: + pass + + @staticmethod + def handle_stream_response(response): + Completion.message_queue.put(response.decode()) diff --git a/theb/theb_test.py b/theb/theb_test.py new file mode 100644 index 00000000..177c970a --- /dev/null +++ b/theb/theb_test.py @@ -0,0 +1,4 @@ +import theb + +for token in theb.Completion.create('hello world'): + print(token, end='', flush=True)
\ No newline at end of file |