Documentation
¶
Index ¶
- type ModelPrice
- type Registry
- func (r *Registry) Cost(providerName, model string, input, output, cachedInput int, ...) (float64, string)
- func (r *Registry) Lookup(model string) (ModelPrice, bool)
- func (r *Registry) LookupForProvider(provider, model string) (ModelPrice, bool)
- func (r *Registry) Register(model string, price ModelPrice)
- func (r *Registry) RegisterPrefix(prefix string, price ModelPrice)
- func (r *Registry) RegisterProviderModel(provider, model string, price ModelPrice)
- func (r *Registry) RegisterProviderPrefix(provider, prefix string, price ModelPrice)
- func (r *Registry) SetFallbackRate(ratePerKTokens float64)
- func (r *Registry) SetProviderFallbackRate(provider string, rate float64)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ModelPrice ¶
type ModelPrice struct {
InputPerMTok float64 // cost per million input tokens
OutputPerMTok float64 // cost per million output tokens
CachedInputPerMTok float64 // cost per million cached input tokens; 0 means same as InputPerMTok
}
ModelPrice holds per-million-token pricing for a model.
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
Registry maps model names/prefixes to their pricing.
func (*Registry) Cost ¶
func (r *Registry) Cost(providerName, model string, input, output, cachedInput int, providerCost float64) (float64, string)
Cost calculates the USD cost for a given model and token usage. providerName selects the per-provider override layer (empty string skips it). Resolution order:
- providerCost > 0 → "provider"
- provider sub-registry (exact → prefix)
- global registry (exact → prefix)
- provider sub-registry fallback rate
- global fallback rate
- 0 / "unknown"
func (*Registry) Lookup ¶
func (r *Registry) Lookup(model string) (ModelPrice, bool)
Lookup returns the pricing for a model. Exact match is tried first, then longest prefix match.
func (*Registry) LookupForProvider ¶ added in v0.32.0
func (r *Registry) LookupForProvider(provider, model string) (ModelPrice, bool)
LookupForProvider returns the pricing for a model, checking the provider sub-registry first, then falling back to the global registry.
func (*Registry) Register ¶
func (r *Registry) Register(model string, price ModelPrice)
Register adds an exact-match model price.
func (*Registry) RegisterPrefix ¶
func (r *Registry) RegisterPrefix(prefix string, price ModelPrice)
RegisterPrefix adds a prefix-match model price. Longer prefixes take priority. Duplicate prefixes are overwritten.
func (*Registry) RegisterProviderModel ¶ added in v0.32.0
func (r *Registry) RegisterProviderModel(provider, model string, price ModelPrice)
RegisterProviderModel adds an exact-match model price to a per-provider sub-registry. The sub-registry is created on first use.
func (*Registry) RegisterProviderPrefix ¶ added in v0.32.0
func (r *Registry) RegisterProviderPrefix(provider, prefix string, price ModelPrice)
RegisterProviderPrefix adds a prefix-match model price to a per-provider sub-registry.
func (*Registry) SetFallbackRate ¶
SetFallbackRate sets the default rate per 1K tokens used when no model match is found. Set to 0 to disable the fallback (cost will be 0).
func (*Registry) SetProviderFallbackRate ¶ added in v0.32.0
SetProviderFallbackRate sets the per-provider fallback rate ($/1K tokens).