From dc1d9834f97bc5044c6417aeb44b9ca84bd18118 Mon Sep 17 00:00:00 2001 From: Raju Komati Date: Fri, 28 Apr 2023 02:58:12 +0530 Subject: added theb to openai_rev module --- README.md | 2 +- openai_rev/forefront/__init__.py | 1 - openai_rev/openai_rev.py | 8 +++++++ openai_rev/theb/README.md | 10 ++++++++ openai_rev/theb/__init__.py | 52 ++++++++++++++++++++++++++++++++++++++++ openai_rev/theb/theb_test.py | 4 ++++ testing/accounts.txt | 3 +++ testing/test_main.py | 11 +++++---- theb/README.md | 11 --------- theb/__init__.py | 50 -------------------------------------- theb/theb_test.py | 4 ---- 11 files changed, 85 insertions(+), 71 deletions(-) create mode 100644 openai_rev/theb/README.md create mode 100644 openai_rev/theb/__init__.py create mode 100644 openai_rev/theb/theb_test.py delete mode 100644 theb/README.md delete mode 100644 theb/__init__.py delete mode 100644 theb/theb_test.py diff --git a/README.md b/README.md index a37dc9b2..7eff0098 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Please note the following: | **Copyright** | Copyright information | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#copyright) | - | | **Star History** | Star History | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#star-history) | - | | **Usage Examples** | | | | -| `theb` | Example usage for theb (gpt-3.5) | [![Link to File](https://img.shields.io/badge/Link-Go%20to%20File-blue)](./theb/README.md) | ![Active](https://img.shields.io/badge/Active-brightgreen) | +| `theb` | Example usage for theb (gpt-3.5) | [![Link to File](https://img.shields.io/badge/Link-Go%20to%20File-blue)](openai_rev/theb/README.md) | ![Active](https://img.shields.io/badge/Active-brightgreen) | | `forefront` | Example usage for forefront (gpt-4) | [![Link to File](https://img.shields.io/badge/Link-Go%20to%20File-blue)](./forefront/README.md) | ![Active](https://img.shields.io/badge/Active-brightgreen) | || | `quora (poe)` | Example usage for quora | [![Link to File](https://img.shields.io/badge/Link-Go%20to%20File-blue)](./quora/README.md) | ![Active](https://img.shields.io/badge/Active-brightgreen) | | `you` | Example usage for you | [![Link to File](https://img.shields.io/badge/Link-Go%20to%20File-blue)](./you/README.md) | ![Active](https://img.shields.io/badge/Active-brightgreen) | diff --git a/openai_rev/forefront/__init__.py b/openai_rev/forefront/__init__.py index 10202615..6fece65a 100644 --- a/openai_rev/forefront/__init__.py +++ b/openai_rev/forefront/__init__.py @@ -169,7 +169,6 @@ class Completion: ) -> ForeFrontResponse: text = '' final_response = None - res = list(StreamingCompletion.create(token=token, prompt=prompt)) for response in StreamingCompletion.create( token=token, chat_id=chat_id, diff --git a/openai_rev/openai_rev.py b/openai_rev/openai_rev.py index 7d483c01..6b88298b 100644 --- a/openai_rev/openai_rev.py +++ b/openai_rev/openai_rev.py @@ -2,6 +2,7 @@ from enum import Enum from openai_rev import forefront from openai_rev import quora +from openai_rev import theb from openai_rev import you @@ -9,6 +10,7 @@ class Provider(Enum): You = 'you' Poe = 'poe' ForeFront = 'fore_front' + Theb = 'theb' class Completion: @@ -20,6 +22,8 @@ class Completion: return Completion.__you_service(prompt, **kwargs) elif provider == Provider.ForeFront: return Completion.__fore_front_service(prompt, **kwargs) + elif provider == Provider.Theb: + return Completion.__theb_service(prompt, **kwargs) @classmethod def __you_service(cls, prompt: str, **kwargs) -> str: @@ -32,3 +36,7 @@ class Completion: @classmethod def __fore_front_service(cls, prompt: str, **kwargs) -> str: return forefront.Completion.create(prompt=prompt, **kwargs).text + + @classmethod + def __theb_service(cls, prompt: str, **kwargs): + return ''.join(theb.Completion.create(prompt=prompt)) diff --git a/openai_rev/theb/README.md b/openai_rev/theb/README.md new file mode 100644 index 00000000..bd37ba3f --- /dev/null +++ b/openai_rev/theb/README.md @@ -0,0 +1,10 @@ +### Example: `theb` (use like openai pypi package) + +```python +# import library +from openai_rev 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/openai_rev/theb/__init__.py b/openai_rev/theb/__init__.py new file mode 100644 index 00000000..fa79fdd9 --- /dev/null +++ b/openai_rev/theb/__init__.py @@ -0,0 +1,52 @@ +from json import loads +from queue import Queue, Empty +from re import findall +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 + + @classmethod + def request(cls, 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 not Completion.stream_completed 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/openai_rev/theb/theb_test.py b/openai_rev/theb/theb_test.py new file mode 100644 index 00000000..805ef094 --- /dev/null +++ b/openai_rev/theb/theb_test.py @@ -0,0 +1,4 @@ +from openai_rev import theb + +for token in theb.Completion.create('hello world'): + print(token, end='', flush=True) diff --git a/testing/accounts.txt b/testing/accounts.txt index 82a8957d..9d58df06 100644 --- a/testing/accounts.txt +++ b/testing/accounts.txt @@ -15,3 +15,6 @@ trbfmqhnokevio@bugfoo.com:eyJhbGciOiJSUzI1NiIsImtpZCI6Imluc18yTzZ3UTFYd3dxVFdXUW gprzdsftrckwbj@bugfoo.com:eyJhbGciOiJSUzI1NiIsImtpZCI6Imluc18yTzZ3UTFYd3dxVFdXUWUyQ1VYZHZ2bnNaY2UiLCJ0eXAiOiJKV1QifQ.eyJhenAiOiJodHRwczovL2FjY291bnRzLmZvcmVmcm9udC5haSIsImV4cCI6MTY4MjYyNzM3NiwiaWF0IjoxNjgyNjI3MzE2LCJpc3MiOiJodHRwczovL2NsZXJrLmZvcmVmcm9udC5haSIsIm5iZiI6MTY4MjYyNzMwNiwic2lkIjoic2Vzc18yUDFiMTkxUUdYZ3YxZ2VDTHRJUXA2QjZVWjIiLCJzdWIiOiJ1c2VyXzJQMWIxNkRSdmpNS2FQaGV6aGFSWFF3WDhDRyJ9.MzKp7sLGFxWyupd6V2Ohl9btKV0SOMGixeV-qPxpNi4uh4r0CMSctSLR0SfxArsYskFwUF9DNqAp2YbrPP4c9rEiL8ShNimvUzCncG7pG1I4roPxQcz_8zm1mquh3BdDQD7L5-RvTm4_KLCrJ6d9QGIoNxHYhbotCfr_7T90iMzLCYs1hPjVU0XGtTMB9cQI_1b49tHswcWouqpP7RdqMupAACo1lxC9JjG1LHs2WIqHNkbyD8q3WepbjH3_4d4AoP4-XdD5lO7FHTr4xcc-fKJLV7D6EThH2BRDjuRNywUTa_jc4UlIpxMWT11RV8G9DE-ExckUm7e0EUO-0eNiVg hsecrzgezneibp@bugfoo.com:eyJhbGciOiJSUzI1NiIsImtpZCI6Imluc18yTzZ3UTFYd3dxVFdXUWUyQ1VYZHZ2bnNaY2UiLCJ0eXAiOiJKV1QifQ.eyJhenAiOiJodHRwczovL2FjY291bnRzLmZvcmVmcm9udC5haSIsImV4cCI6MTY4MjYyODU4NiwiaWF0IjoxNjgyNjI4NTI2LCJpc3MiOiJodHRwczovL2NsZXJrLmZvcmVmcm9udC5haSIsIm5iZiI6MTY4MjYyODUxNiwic2lkIjoic2Vzc18yUDFkVERHT3I5b2l5NktRajRWUnQ0YVg1UHYiLCJzdWIiOiJ1c2VyXzJQMWRUN2FUZUJtUndjcVlMMDNtaVlnamVaNSJ9.UKqZKGsCY-wWuPPMYnziaB-3cVKAvBWtddjNnuCakbl_nh2BnQugb1iPp0Ov8IKbHQr7vIE14CHp_07-BK_1GRCoFlmk4bhOrtZ8FeKIqVR_1JpcF6YYiZwc0ebV_rtEoD9mSuFytjcG_cufdKCTZoS_ddAckQZDduzfK1LtenbUMNigd9YjTXBeJV6tNOJIyiKXJCA58_puT7_baMKKnCiSlOA4OazatbLBv8vwKrCz1zdFZvkvPLmXoZ4-EA16CWxbmaJmi-G7fzdfohqxuZn7vguWumSgx8P3YDODggYfqvy3cd2-PAcpde066UgWCvRqXWn8s-01EropKbI_lg ogokkecbrckufe@bugfoo.com:eyJhbGciOiJSUzI1NiIsImtpZCI6Imluc18yTzZ3UTFYd3dxVFdXUWUyQ1VYZHZ2bnNaY2UiLCJ0eXAiOiJKV1QifQ.eyJhenAiOiJodHRwczovL2FjY291bnRzLmZvcmVmcm9udC5haSIsImV4cCI6MTY4MjYyODgwMSwiaWF0IjoxNjgyNjI4NzQxLCJpc3MiOiJodHRwczovL2NsZXJrLmZvcmVmcm9udC5haSIsIm5iZiI6MTY4MjYyODczMSwic2lkIjoic2Vzc18yUDFkdThHWkdJUHR4bXZvY2ZQMVJaSU12TnEiLCJzdWIiOiJ1c2VyXzJQMWR1N1RIN0VEeGx6NTQwTktITHdFalZSWCJ9.S-VMHfS9U-OYRBJsL6VjQzQawnV3opwYf0AQNQYiXaieMQTD8Op351zx9X6wKUk7JWeNZykP9-D8eNMBR8MeQ4ePxIRWmLtVnTBxJsoTNkXpC9FpbRzhTr84fXwkFccg-Yr3uPqdYuDz2EiPpROi3D2o072cNU1ZE2P4gSf6MOkatXP2l7ZYyNyI9WJEjkDJ5nRuGErPk9HLUuWzpqefmJSoo0PyrCT0OZSSGaNeB-QrcrLrw19UxqHcBdMYsay0HicX8A94HFerVlGz14s8aM4TdZNHWRZAgI627-HP23DZe53HUVTBCsRA6KYv4D7TI1PzVGrZVMweG1oaMkvr0A +xprysdgqgcljde@bugfoo.com:eyJhbGciOiJSUzI1NiIsImtpZCI6Imluc18yTzZ3UTFYd3dxVFdXUWUyQ1VYZHZ2bnNaY2UiLCJ0eXAiOiJKV1QifQ.eyJhenAiOiJodHRwczovL2FjY291bnRzLmZvcmVmcm9udC5haSIsImV4cCI6MTY4MjYzMDMxNSwiaWF0IjoxNjgyNjMwMjU1LCJpc3MiOiJodHRwczovL2NsZXJrLmZvcmVmcm9udC5haSIsIm5iZiI6MTY4MjYzMDI0NSwic2lkIjoic2Vzc18yUDFneVNHbWNFYzFjUmJwaGVPcVBNaEZNeWciLCJzdWIiOiJ1c2VyXzJQMWd5Uk45VXZHOHpzSjB5RGV2dW9IM0lRNiJ9.l4_UxRJy33HCl2hsjA3GBVrRH9gE8j9zusPvxYt531ze70UuXT8kaKXolDEJmub32LMEyGFjpTqvvKUdKAVfdhLnlIWvTbaIrwP5IQ1x38RA5ADNFGXRIizLjU2unsJR6Y_50yTuLerux9AVn_o2B0777FSm9aFAip0JdQjP_LHPCGE5fa6VU93VkP90qHf-m-WpimhIf8aqO4N8YeIr_E39TNM_RSWmRj6nqNp8aeY6PQYTq4csd57kMRCM4bgL_B9VeNI0khdQE42qbLvFqWQu2Cf1j2a7ZX6Qng2m6IauykzmJ8zMlbqGBTBIVHUviX_RuEYFWcCECQLVtOIlJQ +othjyimaedmaum@bugfoo.com:eyJhbGciOiJSUzI1NiIsImtpZCI6Imluc18yTzZ3UTFYd3dxVFdXUWUyQ1VYZHZ2bnNaY2UiLCJ0eXAiOiJKV1QifQ.eyJhenAiOiJodHRwczovL2FjY291bnRzLmZvcmVmcm9udC5haSIsImV4cCI6MTY4MjYzMDUwNywiaWF0IjoxNjgyNjMwNDQ3LCJpc3MiOiJodHRwczovL2NsZXJrLmZvcmVmcm9udC5haSIsIm5iZiI6MTY4MjYzMDQzNywic2lkIjoic2Vzc18yUDFoTWFCaEw5Nzg3MzJJWTVFcFpMamZWOVAiLCJzdWIiOiJ1c2VyXzJQMWhNYUhYaXF3dnV3SUZQZTYwNDducDcwQyJ9.xKg5zVlDlLC0ZVT21g9WmJrm6dW4Z9-WmMdBjskyaK_Gp7zytF0QFaCit_nmI-lWZ5mfUaiVm1sMAJcbAP8uyV1SJcv2dbBQ7vsYSoklDRSdiQCwHS5YL_fH77a7Bk5z3QMnssouIne3oJLD1qadD5Dv68uumvyZ5iq4a-PB8kV0cprl44GiMOkgBsoseZ8kgAkUUMmktScgtEFDO5ALBbNAPFZzt8nsrKDZO_fD9hQE9eWhF50Htchj3HE27gRGY5zC6n_XyMxsFmxoHSIt0vi74atqbFtlzp4Ct7YuDm_PFA6Dy0VoWx2FtkyjFow4ZcqHUubn2Nw3r8BlwpUReA +vcwbipuximmpzo@bugfoo.com:eyJhbGciOiJSUzI1NiIsImtpZCI6Imluc18yTzZ3UTFYd3dxVFdXUWUyQ1VYZHZ2bnNaY2UiLCJ0eXAiOiJKV1QifQ.eyJhenAiOiJodHRwczovL2FjY291bnRzLmZvcmVmcm9udC5haSIsImV4cCI6MTY4MjYzMDg2MywiaWF0IjoxNjgyNjMwODAzLCJpc3MiOiJodHRwczovL2NsZXJrLmZvcmVmcm9udC5haSIsIm5iZiI6MTY4MjYzMDc5Mywic2lkIjoic2Vzc18yUDFpNUhDM0JHUTRlRXY2VnFkcUdCQnNMUzgiLCJzdWIiOiJ1c2VyXzJQMWk1R2U5VFRzQjFCMDVXTFRIcXBjNzA2ZSJ9.vZt1afDAZ1UANpZwW30p4GWEezpQ2pCtQ6oD7bKxl68-_tsyOHlTd_Tqo1EChkqHKfaKdiSN2opjl3EpPqOq1DEwn7Oc0xFGod489juO-KSpbT5zyJtuUQn8t56UnOvC3ofCJvveE51aaPNt2it7-8vyhqDgkrEfw03PGFCv8PFK1zhqpjERuhBA_Cw8lFCtsc-uDcgMMSrenYmGnlPt8cD49k7OGNzE-GAXjVoxaVUFNQSloP76C-Nh919ycDId6x8U6P9DkOojLRUhEaGRNPI5SopO7IAOWt3S7jgpczzRW70pC_tn3EEcxFPm67tb2c41PdXk2vxrOwRo38cXPA diff --git a/testing/test_main.py b/testing/test_main.py index 956c004b..612ec695 100644 --- a/testing/test_main.py +++ b/testing/test_main.py @@ -3,15 +3,13 @@ from openai_rev import openai_rev, Provider, quora, forefront # usage You response = openai_rev.Completion.create(Provider.You, prompt='Write a poem on Lionel Messi') print(response) -print(f'END') + # usage Poe -# token = quora.Account.create(logging=False) -token = 'GKzCahZYGKhp76LfE197xw==' +token = quora.Account.create(logging=False) response = openai_rev.Completion.create( Provider.Poe, prompt='Write a poem on Lionel Messi', token=token, model='ChatGPT' ) print(response) -print(f'END') # usage forefront token = forefront.Account.create(logging=False) @@ -19,3 +17,8 @@ response = openai_rev.Completion.create( Provider.ForeFront, prompt='Write a poem on Lionel Messi', model='gpt-4', token=token ) print(response) +print(f'END') + +# usage theb +response = openai_rev.Completion.create(Provider.Theb, prompt='Write a poem on Lionel Messi') +print(response) diff --git a/theb/README.md b/theb/README.md deleted file mode 100644 index 982c34a1..00000000 --- a/theb/README.md +++ /dev/null @@ -1,11 +0,0 @@ -### Example: `theb` (use like openai pypi package) - - -```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 deleted file mode 100644 index 726e025e..00000000 --- a/theb/__init__.py +++ /dev/null @@ -1,50 +0,0 @@ -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 deleted file mode 100644 index 177c970a..00000000 --- a/theb/theb_test.py +++ /dev/null @@ -1,4 +0,0 @@ -import theb - -for token in theb.Completion.create('hello world'): - print(token, end='', flush=True) \ No newline at end of file -- cgit v1.2.3