From b60f94f8a70ac6bbc43b706a08d9e1a6ffadf3c4 Mon Sep 17 00:00:00 2001 From: based Date: Thu, 14 Dec 2023 08:18:01 +1000 Subject: [PATCH] out with the old in with the new --- APIKey.py | 2 +- MakerSuite.py | 18 ++++++++++++++++++ Palm.py | 17 ----------------- README.md | 2 +- main.py | 36 ++++++++++++++++++------------------ 5 files changed, 38 insertions(+), 37 deletions(-) create mode 100644 MakerSuite.py delete mode 100644 Palm.py diff --git a/APIKey.py b/APIKey.py index 6113b16..0afe82b 100644 --- a/APIKey.py +++ b/APIKey.py @@ -45,7 +45,7 @@ class Provider(Enum): OPENAI = 1, ANTHROPIC = 2 AI21 = 3 - PALM = 4 + MAKERSUITE = 4 AWS = 5 AZURE = 6 VERTEXAI = 7 diff --git a/MakerSuite.py b/MakerSuite.py new file mode 100644 index 0000000..ae18e5c --- /dev/null +++ b/MakerSuite.py @@ -0,0 +1,18 @@ +import requests +import APIKey + + +def check_makersuite(key: APIKey): + response = requests.get(f"https://generativelanguage.googleapis.com/v1beta/models?key={key.api_key}") + print(response.text) + if response.status_code != 200: + return + return True + + +def pretty_print_makersuite_keys(keys): + print('-' * 90) + print(f'Validated {len(keys)} MakerSuite keys:') + for key in keys: + print(f'{key.api_key}') + print(f'\n--- Total Valid MakerSuite Keys: {len(keys)} ---\n') diff --git a/Palm.py b/Palm.py deleted file mode 100644 index 6edc3c2..0000000 --- a/Palm.py +++ /dev/null @@ -1,17 +0,0 @@ -import requests -import APIKey - - -def check_palm(key: APIKey): - response = requests.get(f"https://generativelanguage.googleapis.com/v1beta2/models?key={key.api_key}") - if response.status_code != 200: - return - return True - - -def pretty_print_palm_keys(keys): - print('-' * 90) - print(f'Validated {len(keys)} PaLM keys:') - for key in keys: - print(f'{key.api_key}') - print(f'\n--- Total Valid PaLM Keys: {len(keys)} ---\n') diff --git a/README.md b/README.md index 109d177..9f54d8e 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Currently supports and validates keys for the services below, and checks for the - OpenAI - (Best model, key in quota, RPM, list of organizations if applicable, trial key status) - Anthropic - (Pozzed check) - AI21 - (Trial check) -- Google PaLM +- Google MakerSuite (Gemini) - AWS - (Admin status, auto-fetch the region, logging status, username, bedrock status) - Azure - (Auto-fetch all deployments, auto-fetch best deployment/model, filter status) - Google Cloud Vertex AI - (Requires a key file since oauth tokens expire hourly. Good luck scraping for those.) diff --git a/main.py b/main.py index 38b1702..1240bef 100644 --- a/main.py +++ b/main.py @@ -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()