|
|
|
@@ -3,7 +3,7 @@ from Anthropic import check_anthropic, pretty_print_anthropic_keys
|
|
|
|
|
from Logger import Logger
|
|
|
|
|
from OpenAI import get_oai_model, get_oai_key_attribs, get_oai_org, pretty_print_oai_keys
|
|
|
|
|
from AI21 import check_ai21, pretty_print_ai21_keys
|
|
|
|
|
from Palm import check_palm, pretty_print_palm_keys
|
|
|
|
|
from MakerSuite import check_makersuite, pretty_print_makersuite_keys
|
|
|
|
|
from AWS import check_aws, pretty_print_aws_keys
|
|
|
|
|
from Azure import check_azure, pretty_print_azure_keys
|
|
|
|
|
from VertexAI import check_vertexai, pretty_print_vertexai_keys
|
|
|
|
@@ -18,7 +18,7 @@ import os.path
|
|
|
|
|
|
|
|
|
|
api_keys = set()
|
|
|
|
|
|
|
|
|
|
print('Enter API keys (OpenAI/Anthropic/AI21/PaLM/AWS/Azure) one per line. Press Enter on a blank line to start validation')
|
|
|
|
|
print('Enter API keys (OpenAI/Anthropic/AI21/MakerSuite/AWS/Azure) one per line. Press Enter on a blank line to start validation')
|
|
|
|
|
print('Expected format for AWS keys is accesskey:secret, for Azure keys it\'s resourcegroup:apikey. For Vertex AI keys the absolute path to the secrets key file is expected in quotes. "/path/to/secrets.json"')
|
|
|
|
|
|
|
|
|
|
inputted_keys = set()
|
|
|
|
@@ -70,8 +70,8 @@ def validate_ai21(key: APIKey):
|
|
|
|
|
api_keys.add(key)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def validate_palm(key: APIKey):
|
|
|
|
|
if check_palm(key) is None:
|
|
|
|
|
def validate_makersuite(key: APIKey):
|
|
|
|
|
if check_makersuite(key) is None:
|
|
|
|
|
return
|
|
|
|
|
api_keys.add(key)
|
|
|
|
|
|
|
|
|
@@ -97,7 +97,7 @@ def validate_vertexai(key: APIKey):
|
|
|
|
|
oai_regex = re.compile('(sk-[A-Za-z0-9]{20}T3BlbkFJ[A-Za-z0-9]{20})')
|
|
|
|
|
anthropic_regex = re.compile(r'sk-ant-api03-[A-Za-z0-9\-_]{93}AA')
|
|
|
|
|
ai21_regex = re.compile('[A-Za-z0-9]{32}')
|
|
|
|
|
palm_regex = re.compile(r'AIzaSy[A-Za-z0-9\-_]{33}')
|
|
|
|
|
makersuite_regex = re.compile(r'AIzaSy[A-Za-z0-9\-_]{33}')
|
|
|
|
|
aws_regex = re.compile(r'^(AKIA[0-9A-Z]{16}):([A-Za-z0-9+/]{40})$')
|
|
|
|
|
azure_regex = re.compile(r'^(.+):([a-z0-9]{32})$')
|
|
|
|
|
# vertex_regex = re.compile(r'^(.+):(ya29.[A-Za-z0-9\-_]{469})$') regex for the oauth tokens, useless since they expire hourly
|
|
|
|
@@ -121,11 +121,11 @@ def validate_keys():
|
|
|
|
|
key_obj = APIKey(Provider.ANTHROPIC, key)
|
|
|
|
|
futures.append(executor.submit(validate_anthropic, key_obj, 20))
|
|
|
|
|
elif "AIzaSy" in key[:6]:
|
|
|
|
|
match = palm_regex.match(key)
|
|
|
|
|
match = makersuite_regex.match(key)
|
|
|
|
|
if not match:
|
|
|
|
|
continue
|
|
|
|
|
key_obj = APIKey(Provider.PALM, key)
|
|
|
|
|
futures.append(executor.submit(validate_palm, key_obj))
|
|
|
|
|
key_obj = APIKey(Provider.MAKERSUITE, key)
|
|
|
|
|
futures.append(executor.submit(validate_makersuite, key_obj))
|
|
|
|
|
elif "sk-" in key:
|
|
|
|
|
match = oai_regex.match(key)
|
|
|
|
|
if not match:
|
|
|
|
@@ -156,16 +156,16 @@ def validate_keys():
|
|
|
|
|
futures.clear()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_invalid_keys(valid_oai_keys, valid_anthropic_keys, valid_ai21_keys, valid_palm_keys, valid_aws_keys, valid_azure_keys, valid_vertexai_keys):
|
|
|
|
|
def get_invalid_keys(valid_oai_keys, valid_anthropic_keys, valid_ai21_keys, valid_makersuite_keys, valid_aws_keys, valid_azure_keys, valid_vertexai_keys):
|
|
|
|
|
valid_oai_keys_set = set([key.api_key for key in valid_oai_keys])
|
|
|
|
|
valid_anthropic_keys_set = set([key.api_key for key in valid_anthropic_keys])
|
|
|
|
|
valid_ai21_keys_set = set([key.api_key for key in valid_ai21_keys])
|
|
|
|
|
valid_palm_keys_set = set([key.api_key for key in valid_palm_keys])
|
|
|
|
|
valid_makersuite_keys_set = set([key.api_key for key in valid_makersuite_keys])
|
|
|
|
|
valid_aws_keys_set = set([key.api_key for key in valid_aws_keys])
|
|
|
|
|
valid_azure_keys_set = set([key.api_key for key in valid_azure_keys])
|
|
|
|
|
valid_vertexai_keys_set = set([key.api_key for key in valid_vertexai_keys])
|
|
|
|
|
|
|
|
|
|
invalid_keys = inputted_keys - valid_oai_keys_set - valid_anthropic_keys_set - valid_ai21_keys_set - valid_palm_keys_set - valid_aws_keys_set - valid_azure_keys_set - valid_vertexai_keys_set
|
|
|
|
|
invalid_keys = inputted_keys - valid_oai_keys_set - valid_anthropic_keys_set - valid_ai21_keys_set - valid_makersuite_keys_set - valid_aws_keys_set - valid_azure_keys_set - valid_vertexai_keys_set
|
|
|
|
|
if len(invalid_keys) < 1:
|
|
|
|
|
return
|
|
|
|
|
print('\nInvalid Keys:')
|
|
|
|
@@ -180,7 +180,7 @@ def output_keys():
|
|
|
|
|
valid_oai_keys = []
|
|
|
|
|
valid_anthropic_keys = []
|
|
|
|
|
valid_ai21_keys = []
|
|
|
|
|
valid_palm_keys = []
|
|
|
|
|
valid_makersuite_keys = []
|
|
|
|
|
valid_aws_keys = []
|
|
|
|
|
valid_azure_keys = []
|
|
|
|
|
valid_vertexai_keys = []
|
|
|
|
@@ -192,8 +192,8 @@ def output_keys():
|
|
|
|
|
valid_anthropic_keys.append(key)
|
|
|
|
|
elif key.provider == Provider.AI21:
|
|
|
|
|
valid_ai21_keys.append(key)
|
|
|
|
|
elif key.provider == Provider.PALM:
|
|
|
|
|
valid_palm_keys.append(key)
|
|
|
|
|
elif key.provider == Provider.MAKERSUITE:
|
|
|
|
|
valid_makersuite_keys.append(key)
|
|
|
|
|
elif key.provider == Provider.AWS:
|
|
|
|
|
valid_aws_keys.append(key)
|
|
|
|
|
elif key.provider == Provider.AZURE:
|
|
|
|
@@ -209,7 +209,7 @@ def output_keys():
|
|
|
|
|
print(f"Key snapshot from {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
|
|
|
|
print("#" * 90)
|
|
|
|
|
print(f'\n--- Checked {len(inputted_keys)} keys | {len(inputted_keys) - len(api_keys)} were invalid ---')
|
|
|
|
|
get_invalid_keys(valid_oai_keys, valid_anthropic_keys, valid_ai21_keys, valid_palm_keys, valid_aws_keys, valid_azure_keys, valid_vertexai_keys)
|
|
|
|
|
get_invalid_keys(valid_oai_keys, valid_anthropic_keys, valid_ai21_keys, valid_makersuite_keys, valid_aws_keys, valid_azure_keys, valid_vertexai_keys)
|
|
|
|
|
print()
|
|
|
|
|
if valid_oai_keys:
|
|
|
|
|
pretty_print_oai_keys(valid_oai_keys)
|
|
|
|
@@ -217,8 +217,8 @@ def output_keys():
|
|
|
|
|
pretty_print_anthropic_keys(valid_anthropic_keys)
|
|
|
|
|
if valid_ai21_keys:
|
|
|
|
|
pretty_print_ai21_keys(valid_ai21_keys)
|
|
|
|
|
if valid_palm_keys:
|
|
|
|
|
pretty_print_palm_keys(valid_palm_keys)
|
|
|
|
|
if valid_makersuite_keys:
|
|
|
|
|
pretty_print_makersuite_keys(valid_makersuite_keys)
|
|
|
|
|
if valid_aws_keys:
|
|
|
|
|
pretty_print_aws_keys(valid_aws_keys)
|
|
|
|
|
if valid_azure_keys:
|
|
|
|
@@ -230,7 +230,7 @@ def output_keys():
|
|
|
|
|
print("OPENAI_KEY=" + ','.join(key.api_key for key in valid_oai_keys))
|
|
|
|
|
print("ANTHROPIC_KEY=" + ','.join(key.api_key for key in valid_anthropic_keys))
|
|
|
|
|
print("AWS_CREDENTIALS=" + ','.join(f"{key.api_key}:{key.region}" for key in valid_aws_keys))
|
|
|
|
|
print("GOOGLE_PALM_KEY=" + ','.join(key.api_key for key in valid_palm_keys))
|
|
|
|
|
print("GOOGLE_AI_KEY=" + ','.join(key.api_key for key in valid_makersuite_keys))
|
|
|
|
|
print("AZURE_CREDENTIALS=" + ','.join(f"{key.api_key.split(':')[0]}:{key.best_deployment}:{key.api_key.split(':')[1]}" for key in valid_azure_keys if key.unfiltered))
|
|
|
|
|
if should_write:
|
|
|
|
|
sys.stdout.file.close()
|
|
|
|
|