from minisweagent import Model
from minisweagent.agents import get_agent_class
from minisweagent.environments import get_environment_class
from minisweagent.models import get_model, get_model_class
from minisweagent.models.test_models import make_output


def inspect_model(model: Model) -> None:
    user_message = model.format_message(role="user", content="hello")
    answer = model.query([user_message])

    print(f"answer: {answer['content']}")
    print(f"model name: {model.get_template_vars()['model_name']}")
    print(f"config class: {type(model.config).__name__}")
    print(f"inherits Model: {Model in type(model).__mro__}")


print(f"agent alias: {get_agent_class('default').__name__}")
print(f"environment alias: {get_environment_class('local').__name__}")
print(f"model alias: {get_model_class('unused', 'deterministic').__name__}")

offline_model: Model = get_model(
    "offline-lesson",
    {
        "model_class": "deterministic",
        "outputs": [make_output("fixed answer", [{"command": "echo offline"}], cost=0.0)],
        "cost_per_call": 0.0,
    },
)
inspect_model(offline_model)
