Coverage for .venv/lib/python3.13/site-packages/litellm/proxy/client/cli/commands/model_groups.py: 0%
34 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 12:01 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 12:01 +0000
1from collections.abc import Mapping
2from typing import Final, Literal
4import click
5import rich
6import rich.table
8from ... import Client
9from ._cli_context import cli_context_values
12def create_client(ctx: click.Context) -> Client:
13 context: Final = cli_context_values(ctx)
14 return Client(base_url=context["base_url"], api_key=context["api_key"])
17def _rendered_field(group: Mapping[str, object], key: str, default: str) -> str:
18 """The rendered value of one model group field, or ``default`` when the group omits it."""
19 return str(group.get(key, default))
22@click.group(name="model-groups")
23def model_groups() -> None:
24 """Inspect model groups your key can access on the proxy"""
27@model_groups.command("list")
28@click.option(
29 "--format",
30 "output_format",
31 type=click.Choice(["table", "json"]),
32 default="table",
33 help="Output format (table or json)",
34)
35@click.pass_context
36def list_model_groups(ctx: click.Context, output_format: Literal["table", "json"]) -> None:
37 """List model groups accessible to your key, with mode and pricing"""
38 client: Final = create_client(ctx)
39 groups: Final = client.model_groups.info()
40 if not isinstance(groups, list):
41 raise click.ClickException(
42 f"Unexpected response from /model_group/info: expected a list, got {type(groups).__name__}"
43 )
45 if output_format == "json":
46 rich.print_json(data=groups)
47 return
49 table: Final = rich.table.Table(title="Accessible Model Groups")
50 table.add_column("Model", style="cyan")
51 table.add_column("Mode", style="green")
52 table.add_column("Input $/token", style="yellow")
53 table.add_column("Output $/token", style="yellow")
55 for group in groups:
56 table.add_row(
57 _rendered_field(group, "model_group", ""),
58 _rendered_field(group, "mode", "chat"),
59 _rendered_field(group, "input_cost_per_token", ""),
60 _rendered_field(group, "output_cost_per_token", ""),
61 )
62 rich.print(table)
65__all__ = ["model_groups"]