diff --git a/backend/internal/pkg/antigravity/stream_transformer.go b/backend/internal/pkg/antigravity/stream_transformer.go index 75ce074c..58982878 100644 --- a/backend/internal/pkg/antigravity/stream_transformer.go +++ b/backend/internal/pkg/antigravity/stream_transformer.go @@ -18,9 +18,6 @@ const ( BlockTypeFunction ) -// UsageMapHook is a callback that can modify usage data before it's emitted in SSE events. -type UsageMapHook func(usageMap map[string]any) - // StreamingProcessor 流式响应处理器 type StreamingProcessor struct { blockType BlockType @@ -33,7 +30,6 @@ type StreamingProcessor struct { originalModel string webSearchQueries []string groundingChunks []GeminiGroundingChunk - usageMapHook UsageMapHook // 累计 usage inputTokens int @@ -50,28 +46,6 @@ func NewStreamingProcessor(originalModel string) *StreamingProcessor { } } -// SetUsageMapHook sets an optional hook that modifies usage maps before they are emitted. -func (p *StreamingProcessor) SetUsageMapHook(fn UsageMapHook) { - p.usageMapHook = fn -} - -func usageToMap(u ClaudeUsage) map[string]any { - m := map[string]any{ - "input_tokens": u.InputTokens, - "output_tokens": u.OutputTokens, - } - if u.CacheCreationInputTokens > 0 { - m["cache_creation_input_tokens"] = u.CacheCreationInputTokens - } - if u.CacheReadInputTokens > 0 { - m["cache_read_input_tokens"] = u.CacheReadInputTokens - } - if u.ImageOutputTokens > 0 { - m["image_output_tokens"] = u.ImageOutputTokens - } - return m -} - // ProcessLine 处理 SSE 行,返回 Claude SSE 事件 func (p *StreamingProcessor) ProcessLine(line string) []byte { line = strings.TrimSpace(line) diff --git a/backend/internal/pkg/apicompat/chatcompletions_to_responses.go b/backend/internal/pkg/apicompat/chatcompletions_to_responses.go index 7e60ead1..6cdd012a 100644 --- a/backend/internal/pkg/apicompat/chatcompletions_to_responses.go +++ b/backend/internal/pkg/apicompat/chatcompletions_to_responses.go @@ -33,7 +33,7 @@ func ChatCompletionsToResponses(req *ChatCompletionsRequest) (*ResponsesRequest, TopP: req.TopP, Stream: true, // upstream always streams Include: []string{"reasoning.encrypted_content"}, - ServiceTier: req.ServiceTier, + ServiceTier: req.ServiceTier, } storeFalse := false diff --git a/backend/internal/service/channel_service.go b/backend/internal/service/channel_service.go index c6a249ef..ec8310f6 100644 --- a/backend/internal/service/channel_service.go +++ b/backend/internal/service/channel_service.go @@ -134,7 +134,7 @@ func (r ChannelMappingResult) ToUsageFields(reqModel, upstreamModel string) Chan const ( channelCacheTTL = 10 * time.Minute - channelErrorTTL = 5 * time.Second // DB 错误时的短缓存 + channelErrorTTL = 5 * time.Second // DB 错误时的短缓存 channelCacheDBTimeout = 10 * time.Second ) diff --git a/backend/internal/service/gateway_service.go b/backend/internal/service/gateway_service.go index bc1708c8..6d2b04ee 100644 --- a/backend/internal/service/gateway_service.go +++ b/backend/internal/service/gateway_service.go @@ -67,12 +67,6 @@ const ( MediaTypePrompt = "prompt" ) -const ( - claudeMaxMessageOverheadTokens = 3 - claudeMaxBlockOverheadTokens = 1 - claudeMaxUnknownContentTokens = 4 -) - // ForceCacheBillingContextKey 强制缓存计费上下文键 // 用于粘性会话切换时,将 input_tokens 转为 cache_read_input_tokens 计费 type forceCacheBillingKeyType struct{} diff --git a/backend/internal/service/openai_model_mapping_test.go b/backend/internal/service/openai_model_mapping_test.go index a88c5825..5ce2602c 100644 --- a/backend/internal/service/openai_model_mapping_test.go +++ b/backend/internal/service/openai_model_mapping_test.go @@ -87,10 +87,10 @@ func TestResolveOpenAIForwardModel_PreventsClaudeModelFromFallingBackToGpt51(t * func TestNormalizeCodexModel(t *testing.T) { cases := map[string]string{ - "gpt-5.3-codex-spark": "gpt-5.3-codex", - "gpt-5.3-codex-spark-high": "gpt-5.3-codex", - "gpt-5.3-codex-spark-xhigh": "gpt-5.3-codex", - "gpt-5.3": "gpt-5.3-codex", + "gpt-5.3-codex-spark": "gpt-5.3-codex", + "gpt-5.3-codex-spark-high": "gpt-5.3-codex", + "gpt-5.3-codex-spark-xhigh": "gpt-5.3-codex", + "gpt-5.3": "gpt-5.3-codex", } for input, expected := range cases {