Spaces:
Sleeping
Sleeping
File size: 2,248 Bytes
b22f922 e82f42a 02fdb50 c10c2de b22f922 02fdb50 b22f922 9087846 b22f922 c10c2de b22f922 73906d6 5c66db7 4d5cf91 5c66db7 b22f922 9087846 aef6b86 9087846 caa2ecf 9087846 b22f922 c10c2de b22f922 02fdb50 c10c2de 02fdb50 c10c2de 02fdb50 c10c2de 02fdb50 c10c2de 02fdb50 c10c2de |
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 |
import tiktoken
from urllib.parse import urlparse
import requests
import logging
from icecream import ic
from typing import Generator
def mylogger(name, format, level=logging.INFO):
# Create a custom logger
logger = logging.getLogger(name)
logger.setLevel(level)
# Configure the custom logger with the desired settings
formatter = logging.Formatter(format)
c_handler = logging.StreamHandler()
c_handler.setFormatter(formatter)
# file_handler = logging.FileHandler('custom_logs.log')
# file_handler.setFormatter(formatter)
logger.addHandler(c_handler)
return logger
def count_token(text, encoding="cl100k_base") -> int:
return len(tiktoken.get_encoding(encoding).encode(text))
def is_valid_url(url: str) -> bool:
try:
result = urlparse(url)
return all([result.scheme, result.netloc])
except ValueError:
return False
def is_valid_openai_api_key(api_base: str, api_key: str) -> bool:
headers = {"Authorization": f"Bearer {api_key}"}
test_url = f"{api_base}/models"
response = requests.get(test_url, headers=headers)
if response.status_code in range(200,300):
try:
ic(response.json())
except:
ic(response.text)
return response.status_code in range(200,300)
def checkAPI(api_base: str, api_key: str):
if not is_valid_openai_api_key(api_base, api_key):
raise ValueError(
"API not available. Please double check your API settings. If you don't have any API key, try getting one from https://beta.openai.com/account/api-keys"
)
def zip_api(api_base: str, api_key: str, model: str) -> dict[str, str]:
return {"base": api_base, "key": api_key, "model": model}
def stream_together(*gens: Generator):
ln = len(gens)
result = [""] * ln # Mind type here
while 1:
stop: bool = True
for i in range(ln):
try:
n = next(gens[i])
if "delta" in dir(n):
n = n.delta
result[i] += n
stop = False
except StopIteration:
# info(f"gen[{i}] exhausted")
pass
yield result
if stop:
break
|