Alloy.ModelMetadata (alloy v0.10.1)

Copy Markdown View Source

Provider model metadata used for context budgeting.

The primary consumer today is Alloy.Context.Compactor, but this module keeps model-window knowledge in one place so provider updates do not require editing token estimation logic directly.

Summary

Functions

Returns the known model catalog.

Returns the known context window limit for a model name.

Returns the default fallback context window for unknown models.

Types

model_entry()

@type model_entry() :: %{
  name: String.t(),
  limit: pos_integer(),
  suffix_patterns: [String.t() | Regex.t()]
}

override_entry()

@type override_entry() ::
  pos_integer()
  | %{
      :limit => pos_integer(),
      optional(:suffix_patterns) => [String.t() | Regex.t()]
    }

Functions

catalog()

@spec catalog() :: [model_entry()]

Returns the known model catalog.

context_window(model_name, overrides \\ %{})

@spec context_window(
  String.t(),
  %{optional(String.t()) => override_entry()} | [{String.t(), override_entry()}]
) :: pos_integer() | nil

Returns the known context window limit for a model name.

overrides may provide exact-model or family overrides as either:

  • %{"model-name" => 1_000_000}
  • %{"model-name" => %{limit: 1_000_000, suffix_patterns: ["", ~r/^-+$/]}}

For overrides that only provide a limit, existing catalog suffix patterns are reused when available; unknown models default to exact-match only.

Returns nil when the model is not in the current catalog or overrides.

default_context_window()

@spec default_context_window() :: pos_integer()

Returns the default fallback context window for unknown models.