"""
OpenAIの利用可能なモデル一覧を確認するスクリプト。
このスクリプトは、指定されたOpenAI APIキーを使用して、利用可能なすべてのモデルIDを取得し、表示します。
APIキーは環境変数 'OPENAI_API_KEY' から読み込まれます。
:doc:`list_openai_models_usage`
"""
from openai import OpenAI, AuthenticationError
import os
import sys
# from tkai_lib import read_ai_config
[ドキュメント]
def get_api_key() -> str | None:
"""
OpenAI APIキーを取得します。
環境変数 'OPENAI_API_KEY' からAPIキーを読み込みます。
以前は 'read_ai_config' 関数を使用していた可能性がありますが、現在は環境変数から直接取得します。
:returns: str | None - 環境変数 'OPENAI_API_KEY' の値。設定されていない場合はNone。
"""
# read_ai_config("ai.env")
return os.getenv("OPENAI_API_KEY")
[ドキュメント]
def list_models(api_key: str) -> int:
"""
利用可能なOpenAIモデルの一覧を取得し、表示します。
指定されたAPIキーを使用してOpenAIクライアントを初期化し、
利用可能なすべてのモデルのIDをコンソールに出力します。
最終的に出力したモデルの総数を返します。
:param api_key: str - OpenAI APIにアクセスするためのキー。
:returns: int - 利用可能なモデルの総数。
"""
client = OpenAI(api_key=api_key)
count = 0
for m in client.models.list():
print(f"ID: {m.id}")
count += 1
return count
[ドキュメント]
def main() -> int:
"""
スクリプトのメイン処理を実行します。
OpenAI APIキーの取得、利用可能なモデルの一覧表示、および
認証エラーやその他の例外処理を行います。
処理が成功した場合は0を、エラーが発生した場合は1を返します。
:returns: int - 処理の成功を示す0、またはエラーを示す1。
"""
print("--- OpenAI 利用可能モデル確認 ---")
try:
print("ai.env を読み込みます...")
api_key = get_api_key()
print(f"OPENAI_API_KEY exists = {bool(api_key)}")
if not api_key:
print("ERROR: OPENAI_API_KEY が設定されていません")
print(" ai.env の内容、または read_ai_config() を確認してください")
return 1
print("--- 利用可能なモデル一覧を取得します ---")
count = list_models(api_key)
print(f"--- 完了: {count} 件 ---")
return 0
except AuthenticationError as e:
print("ERROR: OpenAI API の認証に失敗しました")
print(" API KEY が無効、削除済み、または取り違えの可能性があります")
print(" 以前に漏洩疑いで無効化されたキーを使っていないか確認してください")
print(" 新しい API KEY を発行して ai.env を更新してください")
print()
print(str(e))
return 1
except Exception as e:
print("ERROR: モデル一覧の取得に失敗しました")
print(type(e).__name__, e)
return 1
if __name__ == "__main__":
sys.exit(main())