list_models プログラム仕様
LiteLLMを使ってOpenAI/Geminiのモデル一覧取得と応答テストを行うモジュール。
このモジュールはLiteLLMライブラリを利用し、OpenAIおよびGoogle GeminiのAIモデルに対して 以下の操作を実行します。
利用可能なモデルの一覧を取得し、コンソールに表示する。
指定されたモデルに対して接続テストを行い、応答を表示する。
APIキーの管理には、tkai_lib または tkai_lib_litellm ライブラリ(もし利用可能であれば) または環境変数を使用します。特に、Google AI StudioのAPIキーは GOOGLE_API_KEY または GEMINI_API_KEY のどちらかに設定することで利用可能です。
使用例:
python list_litellm_models.py mode=list
python list_litellm_models.py mode=list api=openai
python list_litellm_models.py mode=test model=gpt-4o-mini
python list_litellm_models.py mode=test model=gemini-2.0-flash
python list_litellm_models.py --mode test --model openai/gpt-4o-mini
- list_models.extract_response_text(response: Any) str
LiteLLMの応答オブジェクトからメッセージ本文を取り出す。
LiteLLMの completion 関数が返す応答オブジェクトから、 AIモデルの生成したメッセージのテキストコンテンツを抽出します。 応答の構造が異なる可能性に対応するため、複数のアクセス方法を試行します。
- パラメータ:
response (Any) -- LiteLLMの completion 関数が返した応答オブジェクト。
- 戻り値:
抽出されたメッセージ本文の文字列。本文がNoneの場合は空文字列。
- 戻り値の型:
- 例外:
ValueError -- 応答オブジェクトから本文を抽出できなかった場合。
- list_models.list_provider_models(provider: str) list[str]
プロバイダーAPIへ問い合わせ、利用可能モデル名を返す。
LiteLLMの get_valid_models 関数を使用して、指定されたプロバイダーが提供する 利用可能なモデルのリストを取得します。エンドポイントの有効性も確認されます。
- list_models.load_api_keys(config_path: str) None
添付ライブラリを使ってAPIキー設定を読み込む。
tkai_lib_litellm または tkai_lib が利用可能な場合、指定された設定ファイルから APIキーを環境変数に読み込みます。これらのライブラリが見つからない場合は、 既存の環境変数がそのまま使用されます。
また、GOOGLE_API_KEY が設定されていれば、LiteLLMがGeminiモデルで使用できるよう GEMINI_API_KEY にも設定をコピーします。
- パラメータ:
config_path (str) -- APIキー設定ファイルのパス。
- 戻り値:
なし
- 戻り値の型:
None
- list_models.main(argv: Sequence[str] | None = None) int
スクリプトのメイン処理を実行する。
コマンドライン引数をパースし、APIキーを読み込み、指定されたモードに応じて モデル一覧表示またはモデル応答テストを実行します。
mode=test の場合、--model オプションが必須です。
mode=list の場合、--api オプションで対象プロバイダーを選択できます。
- list_models.normalize_model_name(model: str) tuple[str, str]
モデル名からプロバイダーを判定し、LiteLLM形式へ正規化する。
入力されたモデル名に基づいてプロバイダーを識別し、LiteLLMが認識する形式 (例: 'openai/gpt-4o-mini', 'gemini/gemini-2.0-flash') に変換します。 モデル名に / が含まれる場合はそれを使用してプロバイダーを判断し、 そうでなければ一般的なプレフィックス('gemini' など)で判断します。 Gemini以外のモデルはデフォルトでOpenAIとして扱われます。
- パラメータ:
model (str) -- ユーザーが指定したモデル名。
- 戻り値:
(プロバイダー名, LiteLLM形式のモデル名) のタプル。
- 戻り値の型:
- 例外:
ValueError -- モデル名が空の場合、または対応していないプロバイダーが指定された場合。
- list_models.parse_args(argv: Sequence[str] | None = None) Namespace
コマンドライン引数をパースする。
スクリプトの実行モード(モデル一覧表示またはテスト)と、 それに伴うオプション(プロバイダー、モデル名、プロンプト、設定ファイル)を 定義し、パースします。
- パラメータ:
argv (Sequence[str] | None) -- コマンドライン引数のリスト。None の場合は sys.argv[1:] を使用。
- 戻り値:
パースされた引数を格納するNamespaceオブジェクト。
- 戻り値の型:
- list_models.parse_key_value_args(argv: Sequence[str]) list[str]
mode=list のような形式のコマンドライン引数をargparse互換形式へ変換する。
特定のキーと値のペアを --key value の形式に変換します。 これにより、ユーザーは mode=list のような簡潔な記法と、 標準的な --mode list の両方を使用できます。
- list_models.print_provider_models(provider: str) bool
指定されたプロバイダーの利用可能モデル一覧をコンソールに表示する。
まず、必要なAPIキーが設定されているかを確認します。 キーが設定されていれば、list_provider_models を呼び出してモデル一覧を取得し、表示します。 エラーが発生した場合やキーが未設定の場合は、エラーメッセージを表示します。
- list_models.required_key_exists(provider: str) bool
指定されたプロバイダーに必要なAPIキーが環境変数に存在するかを確認する。
'openai' の場合: OPENAI_API_KEY の有無をチェックします。
'gemini' の場合: GEMINI_API_KEY または GOOGLE_API_KEY のいずれかの有無をチェックします。
- パラメータ:
provider (str) -- チェックするプロバイダー名 ('openai' または 'gemini')。
- 戻り値:
必要なAPIキーが存在すれば True、そうでなければ False。
- 戻り値の型:
- 例外:
ValueError -- 未知のプロバイダーが指定された場合。