Jido.AI.Usage (Jido AI v2.3.0)

Copy Markdown View Source

Helpers for merging provider usage metadata.

Summary

Functions

Adds :total_tokens when input and output token counters are available.

Merges two usage maps while summing numeric counters and preserving provider metadata.

Normalizes common usage counter keys and numeric counter values.

Returns canonical input/output/total token counters from provider usage shapes.

Builds canonical token measurements for telemetry events.

Reads a usage value from atom or string keys.

Merges canonical token counters into a provider usage map.

Functions

ensure_total_tokens(usage)

@spec ensure_total_tokens(map()) :: map()

Adds :total_tokens when input and output token counters are available.

merge(existing, incoming)

@spec merge(term(), term()) :: map()

Merges two usage maps while summing numeric counters and preserving provider metadata.

normalize(usage)

@spec normalize(term()) :: map() | nil

Normalizes common usage counter keys and numeric counter values.

token_counts(usage)

@spec token_counts(term()) :: %{
  input_tokens: non_neg_integer(),
  output_tokens: non_neg_integer(),
  total_tokens: non_neg_integer()
}

Returns canonical input/output/total token counters from provider usage shapes.

token_measurements(response_or_usage)

@spec token_measurements(term()) :: %{
  input_tokens: non_neg_integer(),
  output_tokens: non_neg_integer(),
  total_tokens: non_neg_integer()
}

Builds canonical token measurements for telemetry events.

value(usage, key)

@spec value(term(), atom()) :: term()

Reads a usage value from atom or string keys.

with_token_counts(usage)

@spec with_token_counts(term()) :: map() | nil

Merges canonical token counters into a provider usage map.