Skip to content

Model Utilities

Convenience functions for selecting and configuring models.

minisweagent.models.get_model

get_model(
    input_model_name: str | None = None,
    config: dict | None = None,
) -> Model

Get an initialized model object from any kind of user input or settings.

Source code in src/minisweagent/models/__init__.py
44
45
46
47
48
49
50
51
52
53
54
55
56
57
def get_model(input_model_name: str | None = None, config: dict | None = None) -> Model:
    """Get an initialized model object from any kind of user input or settings."""
    resolved_model_name = get_model_name(input_model_name, config)
    if config is None:
        config = {}
    config = copy.deepcopy(config)
    config["model_name"] = resolved_model_name

    # API key resolution (from env -> config -> None)
    if "model_kwargs" not in config:
        config["model_kwargs"] = {}
    if from_env := os.getenv("MSWEA_MODEL_API_KEY"):
        config["model_kwargs"]["api_key"] = from_env
    return get_model_class(resolved_model_name)(**config)

minisweagent.models.get_model_name

get_model_name(
    input_model_name: str | None = None,
    config: dict | None = None,
) -> str

Get a model name from any kind of user input or settings.

Source code in src/minisweagent/models/__init__.py
60
61
62
63
64
65
66
67
68
69
70
def get_model_name(input_model_name: str | None = None, config: dict | None = None) -> str:
    """Get a model name from any kind of user input or settings."""
    if config is None:
        config = {}
    if input_model_name:
        return input_model_name
    if from_env := os.getenv("MSWEA_MODEL_NAME"):
        return from_env
    if from_config := config.get("model_name"):
        return from_config
    raise ValueError("No default model set. Please run `mini-extra config setup` to set one.")

minisweagent.models.get_model_class

get_model_class(model_name: str) -> type

Select the best model class for a given model name.

Source code in src/minisweagent/models/__init__.py
73
74
75
76
77
78
79
80
81
def get_model_class(model_name: str) -> type:
    """Select the best model class for a given model name."""
    if any(s in model_name.lower() for s in ["anthropic", "sonnet", "opus", "claude"]):
        from minisweagent.models.anthropic import AnthropicModel

        return AnthropicModel
    from minisweagent.models.litellm_model import LitellmModel

    return LitellmModel