pricing

package
v0.36.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 18, 2026 License: Apache-2.0 Imports: 2 Imported by: 0

Documentation

Index

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 New

func New() *Registry

New creates a Registry pre-loaded with bundled defaults.

func NewEmpty

func NewEmpty() *Registry

NewEmpty creates a Registry with no bundled defaults.

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:

  1. providerCost > 0 → "provider"
  2. provider sub-registry (exact → prefix)
  3. global registry (exact → prefix)
  4. provider sub-registry fallback rate
  5. global fallback rate
  6. 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

func (r *Registry) SetFallbackRate(ratePerKTokens float64)

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

func (r *Registry) SetProviderFallbackRate(provider string, rate float64)

SetProviderFallbackRate sets the per-provider fallback rate ($/1K tokens).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL