metrics

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Aug 30, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FilterZeroValues

func FilterZeroValues(usage ModelUsage) map[string]any

FilterZeroValues returns the agents-js wire representation of usage with zero-valued numeric fields removed. The type, provider, and model fields are retained even when their strings are empty, matching agents-js.

func LogMetric

func LogMetric(logger *slog.Logger, metric Metric)

LogMetric emits the concise structured summary used by agents-js. The full metric remains available to telemetry subscribers.

func LogMetrics

func LogMetrics(logger *slog.Logger, metric Metric)

LogMetrics is the TypeScript-compatible plural name.

Types

type Avatar

type Avatar struct {
	Timestamp       time.Time
	PlaybackLatency time.Duration
	SessionStarted  time.Time
	AvatarJoined    time.Time
	Metadata        Metadata
}

func (Avatar) MarshalJSON

func (m Avatar) MarshalJSON() ([]byte, error)

func (Avatar) MetricKind

func (m Avatar) MetricKind() Kind

func (Avatar) MetricMetadata

func (m Avatar) MetricMetadata() Metadata

func (Avatar) MetricTime

func (m Avatar) MetricTime() time.Time

type CachedTokenDetails

type CachedTokenDetails struct {
	Audio int64 `json:"audioTokens"`
	Text  int64 `json:"textTokens"`
	Image int64 `json:"imageTokens"`
}

type EOTInference

type EOTInference struct {
	Timestamp          time.Time
	TotalDuration      time.Duration
	PredictionDuration time.Duration
	DetectionDelay     time.Duration
	NumRequests        int64
	Metadata           Metadata
}

func (EOTInference) MarshalJSON

func (m EOTInference) MarshalJSON() ([]byte, error)

func (EOTInference) MetricKind

func (m EOTInference) MetricKind() Kind

func (EOTInference) MetricMetadata

func (m EOTInference) MetricMetadata() Metadata

func (EOTInference) MetricTime

func (m EOTInference) MetricTime() time.Time

type EOU

type EOU struct {
	Timestamp                time.Time
	EndOfUtteranceDelay      time.Duration
	TranscriptionDelay       time.Duration
	OnUserTurnCompletedDelay time.Duration
	LastSpeakingTime         time.Time
	SpeechID                 string
	Metadata                 Metadata
}

func (EOU) MarshalJSON

func (m EOU) MarshalJSON() ([]byte, error)

func (EOU) MetricKind

func (m EOU) MetricKind() Kind

func (EOU) MetricMetadata

func (m EOU) MetricMetadata() Metadata

func (EOU) MetricTime

func (m EOU) MetricTime() time.Time

type InputTokenDetails

type InputTokenDetails struct {
	Audio         int64              `json:"audioTokens"`
	Text          int64              `json:"textTokens"`
	Image         int64              `json:"imageTokens"`
	Cached        int64              `json:"cachedTokens"`
	CachedDetails CachedTokenDetails `json:"cachedTokensDetails,omitempty"`
}

type Interruption

type Interruption struct {
	Timestamp          time.Time
	TotalDuration      time.Duration
	PredictionDuration time.Duration
	DetectionDelay     time.Duration
	NumInterruptions   int64
	NumBackchannels    int64
	NumRequests        int64
	Metadata           Metadata
}

func (Interruption) MarshalJSON

func (m Interruption) MarshalJSON() ([]byte, error)

func (Interruption) MetricKind

func (m Interruption) MetricKind() Kind

func (Interruption) MetricMetadata

func (m Interruption) MetricMetadata() Metadata

func (Interruption) MetricTime

func (m Interruption) MetricTime() time.Time

type Kind

type Kind string
const (
	KindLLM          Kind = "llm_metrics"
	KindSTT          Kind = "stt_metrics"
	KindTTS          Kind = "tts_metrics"
	KindVAD          Kind = "vad_metrics"
	KindEOU          Kind = "eou_metrics"
	KindEOTInference Kind = "eot_inference_metrics"
	KindRealtime     Kind = "realtime_model_metrics"
	KindInterruption Kind = "interruption_metrics"
	KindAvatar       Kind = "avatar_metrics"
)

type LLM

type LLM struct {
	Label               string
	RequestID           string
	Timestamp           time.Time
	Duration            time.Duration
	TimeToFirstToken    time.Duration
	Cancelled           bool
	CompletionTokens    int64
	PromptTokens        int64
	PromptCachedTokens  int64
	CacheCreationTokens int64
	TotalTokens         int64
	TokensPerSecond     float64
	SpeechID            string
	Metadata            Metadata
}

func (LLM) MarshalJSON

func (m LLM) MarshalJSON() ([]byte, error)

func (LLM) MetricKind

func (m LLM) MetricKind() Kind

func (LLM) MetricMetadata

func (m LLM) MetricMetadata() Metadata

func (LLM) MetricTime

func (m LLM) MetricTime() time.Time

type LLMUsage

type LLMUsage struct {
	Provider                 string
	Model                    string
	InputTokens              int64
	InputCachedTokens        int64
	InputCacheCreationTokens int64
	InputAudioTokens         int64
	InputCachedAudioTokens   int64
	InputTextTokens          int64
	InputCachedTextTokens    int64
	InputImageTokens         int64
	InputCachedImageTokens   int64
	OutputTokens             int64
	OutputAudioTokens        int64
	OutputTextTokens         int64
	SessionDuration          time.Duration
}

func (LLMUsage) MarshalJSON

func (u LLMUsage) MarshalJSON() ([]byte, error)

func (LLMUsage) UsageKind

func (u LLMUsage) UsageKind() UsageKind

func (LLMUsage) UsageModel

func (u LLMUsage) UsageModel() string

func (LLMUsage) UsageProvider

func (u LLMUsage) UsageProvider() string

type Metadata

type Metadata struct {
	ModelProvider string `json:"modelProvider,omitempty"`
	ModelName     string `json:"modelName,omitempty"`
}

type Metric

type Metric interface {
	MetricKind() Kind
	MetricTime() time.Time
	MetricMetadata() Metadata
}

type ModelUsage

type ModelUsage interface {
	UsageKind() UsageKind
	UsageProvider() string
	UsageModel() string
}

type ModelUsageCollector

type ModelUsageCollector struct {
	// contains filtered or unexported fields
}

ModelUsageCollector is safe for concurrent collection and snapshots.

func NewModelUsageCollector

func NewModelUsageCollector() *ModelUsageCollector

func (*ModelUsageCollector) Collect

func (c *ModelUsageCollector) Collect(metric Metric)

func (*ModelUsageCollector) Snapshot

func (c *ModelUsageCollector) Snapshot() []ModelUsage

type OutputTokenDetails

type OutputTokenDetails struct {
	Text  int64 `json:"textTokens"`
	Audio int64 `json:"audioTokens"`
	Image int64 `json:"imageTokens"`
}

type Realtime

type Realtime struct {
	Label            string
	RequestID        string
	Timestamp        time.Time
	Duration         time.Duration
	SessionDuration  time.Duration
	TimeToFirstToken time.Duration
	Cancelled        bool
	InputTokens      int64
	OutputTokens     int64
	TotalTokens      int64
	TokensPerSecond  float64
	InputDetails     InputTokenDetails
	OutputDetails    OutputTokenDetails
	Metadata         Metadata
}

func (Realtime) MarshalJSON

func (m Realtime) MarshalJSON() ([]byte, error)

func (Realtime) MetricKind

func (m Realtime) MetricKind() Kind

func (Realtime) MetricMetadata

func (m Realtime) MetricMetadata() Metadata

func (Realtime) MetricTime

func (m Realtime) MetricTime() time.Time

type RequestUsage

type RequestUsage struct {
	Kind          UsageKind
	Provider      string
	Model         string
	TotalRequests int64
}

func (RequestUsage) MarshalJSON

func (u RequestUsage) MarshalJSON() ([]byte, error)

func (RequestUsage) UsageKind

func (u RequestUsage) UsageKind() UsageKind

func (RequestUsage) UsageModel

func (u RequestUsage) UsageModel() string

func (RequestUsage) UsageProvider

func (u RequestUsage) UsageProvider() string

type STT

type STT struct {
	Label         string
	RequestID     string
	Timestamp     time.Time
	Duration      time.Duration
	AudioDuration time.Duration
	InputTokens   int64
	OutputTokens  int64
	Streamed      bool
	Metadata      Metadata
}

func (STT) MarshalJSON

func (m STT) MarshalJSON() ([]byte, error)

func (STT) MetricKind

func (m STT) MetricKind() Kind

func (STT) MetricMetadata

func (m STT) MetricMetadata() Metadata

func (STT) MetricTime

func (m STT) MetricTime() time.Time

type STTUsage

type STTUsage struct {
	Provider      string
	Model         string
	InputTokens   int64
	OutputTokens  int64
	AudioDuration time.Duration
}

func (STTUsage) MarshalJSON

func (u STTUsage) MarshalJSON() ([]byte, error)

func (STTUsage) UsageKind

func (u STTUsage) UsageKind() UsageKind

func (STTUsage) UsageModel

func (u STTUsage) UsageModel() string

func (STTUsage) UsageProvider

func (u STTUsage) UsageProvider() string

type TTS

type TTS struct {
	Label           string
	RequestID       string
	Timestamp       time.Time
	TimeToFirstByte time.Duration
	Duration        time.Duration
	AudioDuration   time.Duration
	Cancelled       bool
	CharactersCount int64
	InputTokens     int64
	OutputTokens    int64
	Streamed        bool
	SegmentID       string
	SpeechID        string
	Metadata        Metadata
}

func (TTS) MarshalJSON

func (m TTS) MarshalJSON() ([]byte, error)

func (TTS) MetricKind

func (m TTS) MetricKind() Kind

func (TTS) MetricMetadata

func (m TTS) MetricMetadata() Metadata

func (TTS) MetricTime

func (m TTS) MetricTime() time.Time

type TTSUsage

type TTSUsage struct {
	Provider        string
	Model           string
	InputTokens     int64
	OutputTokens    int64
	CharactersCount int64
	AudioDuration   time.Duration
}

func (TTSUsage) MarshalJSON

func (u TTSUsage) MarshalJSON() ([]byte, error)

func (TTSUsage) UsageKind

func (u TTSUsage) UsageKind() UsageKind

func (TTSUsage) UsageModel

func (u TTSUsage) UsageModel() string

func (TTSUsage) UsageProvider

func (u TTSUsage) UsageProvider() string

type UsageCollector

type UsageCollector struct {
	// contains filtered or unexported fields
}

UsageCollector aggregates the legacy global counters. Deprecated: use ModelUsageCollector.

func NewUsageCollector

func NewUsageCollector() *UsageCollector

func (*UsageCollector) Collect

func (c *UsageCollector) Collect(metric Metric)

func (*UsageCollector) GetSummary

func (c *UsageCollector) GetSummary() UsageSummary

GetSummary is the agents-js compatibility name for Summary.

func (*UsageCollector) Summary

func (c *UsageCollector) Summary() UsageSummary

type UsageKind

type UsageKind string
const (
	UsageLLM          UsageKind = "llm_usage"
	UsageTTS          UsageKind = "tts_usage"
	UsageSTT          UsageKind = "stt_usage"
	UsageInterruption UsageKind = "interruption_usage"
	UsageEOT          UsageKind = "eot_usage"
)

type UsageSummary

type UsageSummary struct {
	LLMPromptTokens       int64
	LLMPromptCachedTokens int64
	LLMCompletionTokens   int64
	TTSCharactersCount    int64
	STTAudioDuration      time.Duration
}

UsageSummary is retained for source compatibility. Deprecated: use ModelUsageCollector for provider/model attribution.

func (UsageSummary) MarshalJSON

func (s UsageSummary) MarshalJSON() ([]byte, error)

type VAD

type VAD struct {
	Label                  string
	Timestamp              time.Time
	IdleTime               time.Duration
	InferenceDurationTotal time.Duration
	InferenceCount         int64
	Metadata               Metadata
}

func (VAD) MarshalJSON

func (m VAD) MarshalJSON() ([]byte, error)

func (VAD) MetricKind

func (m VAD) MetricKind() Kind

func (VAD) MetricMetadata

func (m VAD) MetricMetadata() Metadata

func (VAD) MetricTime

func (m VAD) MetricTime() time.Time

Jump to

Keyboard shortcuts

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