feat: use message LCP cache affinity keys
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
|
||||
type CacheAffinityObservationInput struct {
|
||||
CacheAffinityKey string
|
||||
CacheAffinityKeys []string
|
||||
CacheAffinityPolicy map[string]any
|
||||
PlatformID string
|
||||
PlatformModelID string
|
||||
@@ -19,9 +20,10 @@ type CacheAffinityObservationInput struct {
|
||||
|
||||
func (s *Store) RecordCacheAffinityObservation(ctx context.Context, input CacheAffinityObservationInput) error {
|
||||
input.CacheAffinityKey = strings.TrimSpace(input.CacheAffinityKey)
|
||||
input.CacheAffinityKeys = normalizedCacheAffinityKeys(input.CacheAffinityKey, input.CacheAffinityKeys)
|
||||
input.ClientID = strings.TrimSpace(input.ClientID)
|
||||
input.ModelType = strings.TrimSpace(input.ModelType)
|
||||
if input.CacheAffinityKey == "" || input.ClientID == "" || input.ModelType == "" {
|
||||
if len(input.CacheAffinityKeys) == 0 || input.ClientID == "" || input.ModelType == "" {
|
||||
return nil
|
||||
}
|
||||
if !input.CachedInputTokensKnown || !cacheAffinityPolicyEnabled(input.CacheAffinityPolicy, input.ModelType) {
|
||||
@@ -39,6 +41,15 @@ func (s *Store) RecordCacheAffinityObservation(ctx context.Context, input CacheA
|
||||
}
|
||||
alpha := cacheAffinityEMAAlpha(input.CacheAffinityPolicy)
|
||||
hitRatio := float64(input.CachedInputTokens) / float64(input.InputTokens)
|
||||
for _, key := range input.CacheAffinityKeys {
|
||||
if err := s.recordCacheAffinityObservationKey(ctx, input, key, hitRatio, alpha); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Store) recordCacheAffinityObservationKey(ctx context.Context, input CacheAffinityObservationInput, key string, hitRatio float64, alpha float64) error {
|
||||
_, err := s.pool.Exec(ctx, `
|
||||
INSERT INTO gateway_cache_affinity_stats (
|
||||
client_id, cache_affinity_key, platform_id, platform_model_id, model_type,
|
||||
@@ -60,7 +71,7 @@ func (s *Store) RecordCacheAffinityObservation(ctx context.Context, input CacheA
|
||||
last_observed_at = now(),
|
||||
updated_at = now()`,
|
||||
input.ClientID,
|
||||
input.CacheAffinityKey,
|
||||
key,
|
||||
input.PlatformID,
|
||||
input.PlatformModelID,
|
||||
input.ModelType,
|
||||
|
||||
Reference in New Issue
Block a user