Files
gpt-load/internal/dialect/usage.go
T
tbphp a710acab1e feat(usage): 接入 OpenAI 图片用量计价 (#483)
* feat(usage): 接入 OpenAI 图片用量计价

* fix(usage): 修复图片响应计量采集

* fix(usage): 减少图片流式解析分配

* fix(usage): 收口图片用量解析内存
2026-08-27 18:44:35 +08:00

33 lines
1.1 KiB
Go

package dialect
import "gpt-load/internal/usage"
// UsageExtractor optionally exposes provider-specific usage extraction.
type UsageExtractor interface {
// ExtractUsage consumes a borrowed body valid only for this call.
// Implementations must not mutate or retain it.
ExtractUsage(body []byte) (usage.Result, error)
NewUsageStreamExtractor() UsageStreamExtractor
}
// UsageStreamExtractor extracts usage from one provider response stream.
type UsageStreamExtractor interface {
// Observe consumes a borrowed payload valid only for this call.
// Implementations must not mutate or retain it.
Observe(payload []byte) error
Finalize() (usage.Result, bool)
}
// StreamUsageInjector optionally derives an OpenAI streaming request that asks
// the upstream to include terminal usage in the response stream.
type StreamUsageInjector interface {
InjectStreamUsage(req *ParsedRequest) (*ParsedRequest, error)
}
var _ UsageExtractor = (*OpenAI)(nil)
var _ UsageExtractor = (*OpenAIResponses)(nil)
var _ UsageExtractor = (*OpenAIImages)(nil)
var _ UsageExtractor = (*Anthropic)(nil)
var _ UsageExtractor = (*Gemini)(nil)
var _ StreamUsageInjector = (*OpenAI)(nil)