Documentation
¶
Overview ¶
Package modelsdev provides read-only access to the models.dev catalog (https://github.com/anomalyco/models.dev), a community-maintained database of model pricing and capabilities per provider.
Providers rarely report pricing through their own model-listing APIs, so Pando cannot show a session cost for most dynamically discovered models. The catalog fills those gaps. It is strictly best-effort: every failure path (no network, malformed payload, unknown provider or model) degrades to "no data" so callers keep their original behaviour.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Reset ¶
func Reset()
Reset drops the memoized catalog so the next Get loads it again. Intended for tests; production code toggles the catalog with SetDisabled instead.
func SetDisabled ¶
func SetDisabled(v bool)
SetDisabled turns the catalog off (true) or back on (false). Turning it on after startup is enough for the next Get to load the catalog; nothing needs to be reset.
Types ¶
type Catalog ¶
type Catalog struct {
// contains filtered or unexported fields
}
Catalog is the parsed models.dev payload plus the lookup indexes built from it. The zero value is a valid, empty catalog: Lookup always reports "not found", which is exactly the fallback behaviour callers need.
func Get ¶
Get returns the models.dev catalog, loading it at most once per process. The first caller pays the ~3 MB download; everyone else gets the memoized value, including the memoized failure — a provider refresh must never retry that download once per model.
Resolution order: fresh on-disk copy, then network, then a stale on-disk copy. An error is only returned when all three fail, and callers are expected to treat it as "no enrichment available" rather than a hard error.
func (Catalog) Lookup ¶
Lookup resolves a model within one models.dev provider. modelID is the provider's own API model identifier (Model.APIModel in Pando), which may carry a vendor prefix or a dated/versioned suffix the catalog does not use.
type Cost ¶
type Cost struct {
Input float64 `json:"input"`
Output float64 `json:"output"`
CacheRead float64 `json:"cache_read"`
CacheWrite float64 `json:"cache_write"`
}
Cost holds the per-million-token prices reported by models.dev, in USD.
type Modalities ¶
Modalities lists the input/output modalities a model accepts.
type Model ¶
type Model struct {
ID string `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
Family string `json:"family"`
Attachment bool `json:"attachment"`
Reasoning bool `json:"reasoning"`
ReasoningOptions []ReasoningOption `json:"reasoning_options"`
ToolCall bool `json:"tool_call"`
Temperature bool `json:"temperature"`
Knowledge string `json:"knowledge"`
ReleaseDate string `json:"release_date"`
LastUpdated string `json:"last_updated"`
Modalities Modalities `json:"modalities"`
OpenWeights bool `json:"open_weights"`
Cost Cost `json:"cost"`
Limit Limit `json:"limit"`
}
Model is a single catalog entry.
func (Model) ReasoningEffortValues ¶ added in v0.646.4
ReasoningEffortValues returns the allowed values for the "effort" reasoning control, if the model advertises one. It is the ordered list (weakest to strongest) that Pando copies onto models.Model.ReasoningEfforts.
func (Model) SupportsReasoningEffort ¶
SupportsReasoningEffort reports whether the model exposes an effort-style reasoning control, which is what Pando's UIs gate the effort selector on.
type Provider ¶
type Provider struct {
ID string `json:"id"`
Name string `json:"name"`
Doc string `json:"doc"`
Models map[string]Model `json:"models"`
}
Provider is one provider entry of the catalog, keyed by its models.dev id.
type ReasoningOption ¶
ReasoningOption describes one reasoning control a model exposes (e.g. an "effort" selector with its allowed values).