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の場合は空文字列。

戻り値の型:

str

例外:

ValueError -- 応答オブジェクトから本文を抽出できなかった場合。

list_models.list_provider_models(provider: str) → list[str]

プロバイダーAPIへ問い合わせ、利用可能モデル名を返す。

LiteLLMの get_valid_models 関数を使用して、指定されたプロバイダーが提供する 利用可能なモデルのリストを取得します。エンドポイントの有効性も確認されます。

パラメータ:

provider (str) -- モデル一覧を取得するプロバイダー名。

戻り値:

利用可能なモデル名のソート済みリスト。

戻り値の型:

list[str]

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 オプションで対象プロバイダーを選択できます。

パラメータ:

argv (Sequence[str] | None) -- コマンドライン引数のリスト。None の場合は sys.argv[1:] を使用。

戻り値:

終了コード (0: 成功、1: 失敗、2: 不適切な引数)。

戻り値の型:

int

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形式のモデル名) のタプル。

戻り値の型:

tuple[str, str]

例外:

ValueError -- モデル名が空の場合、または対応していないプロバイダーが指定された場合。

list_models.parse_args(argv: Sequence[str] | None = None) → Namespace

コマンドライン引数をパースする。

スクリプトの実行モード(モデル一覧表示またはテスト)と、 それに伴うオプション(プロバイダー、モデル名、プロンプト、設定ファイル)を 定義し、パースします。

パラメータ:

argv (Sequence[str] | None) -- コマンドライン引数のリスト。None の場合は sys.argv[1:] を使用。

戻り値:

パースされた引数を格納するNamespaceオブジェクト。

戻り値の型:

argparse.Namespace

list_models.parse_key_value_args(argv: Sequence[str]) → list[str]

mode=list のような形式のコマンドライン引数をargparse互換形式へ変換する。

特定のキーと値のペアを --key value の形式に変換します。 これにより、ユーザーは mode=list のような簡潔な記法と、 標準的な --mode list の両方を使用できます。

パラメータ:

argv (Sequence[str]) -- コマンドライン引数のリスト。

戻り値:

変換されたコマンドライン引数のリスト。

戻り値の型:

list[str]

list_models.print_provider_models(provider: str) → bool

指定されたプロバイダーの利用可能モデル一覧をコンソールに表示する。

まず、必要なAPIキーが設定されているかを確認します。 キーが設定されていれば、list_provider_models を呼び出してモデル一覧を取得し、表示します。 エラーが発生した場合やキーが未設定の場合は、エラーメッセージを表示します。

パラメータ:

provider (str) -- モデル一覧を表示するプロバイダー名。

戻り値:

モデル一覧の取得と表示が成功した場合は True、失敗した場合は False。

戻り値の型:

bool

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。

戻り値の型:

bool

例外:

ValueError -- 未知のプロバイダーが指定された場合。

list_models.test_model(model: str, prompt: str) → bool

指定モデルへプロンプトを送信し、回答を表示する。

まず、モデル名を正規化し、必要なAPIキーが設定されているかを確認します。 その後、LiteLLMの completion 関数を使用して指定されたプロンプトをモデルに送信し、 得られた応答のテキストコンテンツをコンソールに表示します。 APIキーの不足、モデルの認識失敗、またはAPI呼び出し中のエラーが発生した場合は、 適切なエラーメッセージを表示します。

パラメータ:
  • model (str) -- テスト対象のモデル名。

  • prompt (str) -- モデルに送信するプロンプト。

戻り値:

テストが成功した場合は True、失敗した場合は False。

戻り値の型:

bool