File size: 4,873 Bytes
f1594cf 81e0330 351fbbb f1594cf 81e0330 f1594cf 81e0330 f1594cf 81e0330 f1594cf 81e0330 f1594cf 81e0330 f1594cf 81e0330 f1594cf 81e0330 f1594cf 81e0330 f1594cf 81e0330 f1594cf 81e0330 f1594cf 81e0330 f1594cf 81e0330 f1594cf 81e0330 f1594cf e6289bf 81e0330 f1594cf 81e0330 f1594cf ab75098 f1594cf ab75098 f1594cf ab75098 f1594cf ab75098 f1594cf ab75098 e6289bf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
from time import time
from requests import post
headers = {
'authority': 'www.t3nsor.tech',
'accept': '*/*',
'accept-language': 'en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3',
'cache-control': 'no-cache',
'content-type': 'application/json',
'origin': 'https://www.t3nsor.tech',
'pragma': 'no-cache',
'referer': 'https://www.t3nsor.tech/',
'sec-ch-ua': '"Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"macOS"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'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',
}
class T3nsorResponse:
class Completion:
class Choices:
def __init__(self, choice: dict) -> None:
self.text = choice['text']
self.content = self.text.encode()
self.index = choice['index']
self.logprobs = choice['logprobs']
self.finish_reason = choice['finish_reason']
def __repr__(self) -> str:
return f'''<__main__.APIResponse.Completion.Choices(\n text = {self.text.encode()},\n index = {self.index},\n logprobs = {self.logprobs},\n finish_reason = {self.finish_reason})object at 0x1337>'''
def __init__(self, choices: dict) -> None:
self.choices = [self.Choices(choice) for choice in choices]
class Usage:
def __init__(self, usage_dict: dict) -> None:
self.prompt_tokens = usage_dict['prompt_chars']
self.completion_tokens = usage_dict['completion_chars']
self.total_tokens = usage_dict['total_chars']
def __repr__(self):
return f'''<__main__.APIResponse.Usage(\n prompt_tokens = {self.prompt_tokens},\n completion_tokens = {self.completion_tokens},\n total_tokens = {self.total_tokens})object at 0x1337>'''
def __init__(self, response_dict: dict) -> None:
self.response_dict = response_dict
self.id = response_dict['id']
self.object = response_dict['object']
self.created = response_dict['created']
self.model = response_dict['model']
self.completion = self.Completion(response_dict['choices'])
self.usage = self.Usage(response_dict['usage'])
def json(self) -> dict:
return self.response_dict
class Completion:
model = {
'model': {
'id': 'gpt-3.5-turbo',
'name': 'Default (GPT-3.5)'
}
}
def create(
prompt: str = 'hello world',
messages: list = []) -> T3nsorResponse:
response = post('https://www.t3nsor.tech/api/chat', headers=headers, json=Completion.model | {
'messages': messages,
'key': '',
'prompt': prompt
})
return T3nsorResponse({
'id': f'cmpl-1337-{int(time())}',
'object': 'text_completion',
'created': int(time()),
'model': Completion.model,
'choices': [{
'text': response.text,
'index': 0,
'logprobs': None,
'finish_reason': 'stop'
}],
'usage': {
'prompt_chars': len(prompt),
'completion_chars': len(response.text),
'total_chars': len(prompt) + len(response.text)
}
})
class StreamCompletion:
model = {
'model': {
'id': 'gpt-3.5-turbo',
'name': 'Default (GPT-3.5)'
}
}
def create(
prompt: str = 'hello world',
messages: list = []) -> T3nsorResponse:
print('t3nsor api is down, this may not work, refer to another module')
response = post('https://www.t3nsor.tech/api/chat', headers=headers, stream=True, json=Completion.model | {
'messages': messages,
'key': '',
'prompt': prompt
})
for chunk in response.iter_content(chunk_size=2046):
yield T3nsorResponse({
'id': f'cmpl-1337-{int(time())}',
'object': 'text_completion',
'created': int(time()),
'model': Completion.model,
'choices': [{
'text': chunk.decode(),
'index': 0,
'logprobs': None,
'finish_reason': 'stop'
}],
'usage': {
'prompt_chars': len(prompt),
'completion_chars': len(chunk.decode()),
'total_chars': len(prompt) + len(chunk.decode())
}
})
|