ai.list_gemini_models のソースコード

"""
Gemini (Google AI) の利用可能なモデルを一覧表示するスクリプト。

このスクリプトは、`ai.env` ファイルから Google API キーを読み込み、
Google Generative AI SDK を使用して、`generateContent` メソッドをサポートする
利用可能な Gemini モデルのIDを出力します。
API キーの認証エラーや権限エラーなどの例外処理も含まれています。

:doc:`list_gemini_models_usage`
"""
import google.generativeai as genai
import os
import sys
from tkai_lib import read_ai_config

[ドキュメント] def get_api_key() -> str | None: """ ai.env ファイルから GOOGLE_API_KEY を取得する。 この関数は `tkai_lib.read_ai_config` を呼び出して指定された環境設定ファイルを読み込み、 その中から "GOOGLE_API_KEY" という名前の環境変数の値を取得します。 :returns: str | None: GOOGLE_API_KEY の値。設定されていない場合は None。 """ read_ai_config("ai.env") return os.getenv("GOOGLE_API_KEY")
[ドキュメント] def list_models() -> int: """ 利用可能な Gemini モデルの一覧を取得し、`generateContent` をサポートするモデルの件数を返す。 Google Generative AI SDK を使用して、Google AI サービスに登録されているすべてのモデルを取得します。 その中から、`generateContent` メソッドをサポートしているモデルのみをフィルタリングし、 そのモデルID (m.name) を標準出力に表示し、総数を返します。 :returns: int: `generateContent` をサポートするモデルの総数。 """ count = 0 for m in genai.list_models(): if 'generateContent' in m.supported_generation_methods: print(f"ID: {m.name}") count += 1 return count
[ドキュメント] def main() -> int: """ Gemini (Google AI) の利用可能モデルを確認し、一覧を出力するメイン処理。 `ai.env` から API キーを読み込み、API の認証と設定を行います。 その後、`list_models` 関数を呼び出して利用可能なモデルの一覧を取得・表示します。 API キーの欠落、無効なAPIキー、権限エラーなど、発生しうる例外を捕捉し、 詳細なエラーメッセージを出力して適切な終了コードを返します。 :returns: int: 処理が正常に完了した場合は 0、エラーが発生した場合は 1。 """ print("--- Gemini (Google AI) 利用可能モデル確認 ---") try: print("ai.env を読み込みます...") api_key = get_api_key() print(f"GOOGLE_API_KEY exists = {bool(api_key)}") if not api_key: print("ERROR: GOOGLE_API_KEY が設定されていません") print(" ai.env の内容、または read_ai_config() を確認してください") return 1 print("API を設定中...") genai.configure(api_key=api_key) print("--- 利用可能なモデル一覧を取得します ---") count = list_models() print(f"--- 完了: {count} 件 ---") return 0 except Exception as e: # 認証エラーや権限エラーの判定 error_msg = str(e).lower() if "api_key_invalid" in error_msg or "invalid api key" in error_msg: print("ERROR: Google API の認証に失敗しました") print(" API KEY が無効か、設定が間違っている可能性があります") print(" Google AI Studio で新しいキーを確認し、ai.env を更新してください") elif "permissiondenied" in error_msg or "403" in error_msg: print("ERROR: 権限エラーが発生しました") print(" API KEY の制限設定(IP制限やサービス制限)を確認してください") else: print("ERROR: モデル一覧の取得に失敗しました") print(f"[{type(e).__name__}] {e}") return 1
if __name__ == "__main__": # もとのコードの "_MAIN__" を修正し、終了コードを返すように変更 sys.exit(main())