from openai import OpenAI, AuthenticationError
import os
import sys
# from tkai_lib import read_ai_config


def get_api_key() -> str | None:
    # read_ai_config("ai.env")
    return os.getenv("OPENAI_API_KEY")


def list_models(api_key: str) -> 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:
    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())