costtracker

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Jul 14, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Overview

Package costtracker предоставляет обёртку LLMProvider с подсчётом токенов и стоимости.

Index

Constants

This section is empty.

Variables

View Source
var ErrStreamingNotSupported = errors.New("LLM provider does not support streaming")

ErrStreamingNotSupported возвращается при попытке streaming, если провайдер его не поддерживает.

Functions

This section is empty.

Types

type CostTracker

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

CostTracker — прозрачная обёртка над LLMProvider, накапливающая статистику токенов и стоимости LLM-вызовов.

Потокобезопасность: sync.Mutex на запись и чтение счётчиков.

func NewCostTracker

func NewCostTracker(llm domain.LLMProvider, pricing map[string]domain.ModelPricing) *CostTracker

NewCostTracker создаёт CostTracker, оборачивающий llm. Если pricing == nil, расчёт стоимости не производится (TotalCost всегда 0).

func (*CostTracker) Checkpoint

func (ct *CostTracker) Checkpoint() domain.CostSnapshot

@sk-task cost-tracking: Checkpoint — алиас Snapshot (AC-007, RQ-007) Checkpoint фиксирует текущий absolute срез для последующего расчёта дельты через domain.Diff.

func (*CostTracker) Generate

func (ct *CostTracker) Generate(ctx context.Context, systemPrompt, userMessage string) (string, error)

@sk-task cost-tracking: Generate — прозрачная обёртка с подсчётом (AC-001, AC-006, RQ-001, RQ-005) Generate генерирует ответ, подсчитывая токены и стоимость.

Если underlying provider реализует UsageAwareLLMProvider, используется GenerateWithUsage для извлечения token usage. Иначе — только инкремент callsCount.

func (*CostTracker) GenerateStream

func (ct *CostTracker) GenerateStream(ctx context.Context, systemPrompt, userMessage string) (<-chan string, error)

@sk-task cost-tracking: GenerateStream — обёртка для streaming (AC-005, RQ-006, T3.4) GenerateStream делегирует вызов underlying StreamingLLMProvider и извлекает token usage из финального chunk, если провайдер реализует UsageAwareStreamingLLMProvider. Иначе — только инкремент callsCount.

func (*CostTracker) Health

func (ct *CostTracker) Health(ctx context.Context) error

@sk-task cost-tracking: Health — делегирует underlying provider (RQ-001)

func (*CostTracker) Reset

func (ct *CostTracker) Reset()

@sk-task cost-tracking: Reset — обнуление статистики (AC-004, RQ-004) Reset сбрасывает все счётчики в ноль. Конкурентно завершённые вызовы между вызовом Reset и Snapshot могут быть учтены (snapshot до/после).

func (*CostTracker) SetDefaultModel

func (ct *CostTracker) SetDefaultModel(model string)

SetDefaultModel устанавливает имя модели по умолчанию для расчёта стоимости, используется если UsageAwareLLMProvider.ModelName() не найден в pricing.

func (*CostTracker) Snapshot

func (ct *CostTracker) Snapshot() domain.CostSnapshot

@sk-task cost-tracking: Snapshot — атомарный срез статистики (AC-003, RQ-003) Snapshot возвращает текущую накопленную статистику с момента создания CostTracker или последнего Reset.

Jump to

Keyboard shortcuts

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