Import source: src/utils

Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
This commit is contained in:
arsam
2026-09-18 23:07:19 +03:30
parent cc3acd1496
commit 2405e7a6e4
+45
View File
@@ -0,0 +1,45 @@
"""
This module provides a function to check the validity of an OpenAI API key by making a test request
to a chosen model using the OpenAI client. It captures various exceptions and prints error details.
"""
import rich
from openai import APIStatusError, AuthenticationError, OpenAI, RateLimitError
def check_key(key, model="gpt-4o-mini") -> str | None:
"""
Check if the API key is valid.
"""
try:
client = OpenAI(api_key=key)
completion = client.chat.completions.create(
model=model,
messages=[
{
"role": "system",
"content": "You are a yeser, you only output lowercase yes.",
},
{"role": "user", "content": "yes or no? say yes"},
],
)
result = completion.choices[0].message.content
rich.print(f"🔑 [bold green]available key[/bold green]: [orange_red1]'{key}'[/orange_red1] ({result})\n")
return "yes"
except AuthenticationError as e:
rich.print(f"[deep_sky_blue1]{e.body['code']} ({e.status_code})[/deep_sky_blue1]: '{key[:10]}...{key[-10:]}'") # type: ignore
return e.body["code"] # type: ignore
except RateLimitError as e:
rich.print(f"[deep_sky_blue1]{e.body['code']} ({e.status_code})[/deep_sky_blue1]: '{key[:10]}...{key[-10:]}'") # type: ignore
return e.body["code"] # type: ignore
except APIStatusError as e:
rich.print(f"[bold red]{e.body['code']} ({e.status_code})[/bold red]: '{key[:10]}...{key[-10:]}'") # type: ignore
return e.body["code"] # type: ignore
except Exception as e: # pylint: disable=broad-except
rich.print(f"[bold red]{e}[/bold red]: '{key[:10]}...{key[-10:]}'") # type: ignore
return "Unknown Error"
if __name__ == "__main__":
check_key("sk-proj-12345")