29 Commits

Author SHA1 Message Date
CaIon
fddf54ccc5
perf: reduce heap residency for large base64 relay requests
Three layered optimizations targeting Gemini-style 5MB base64 payloads where
RSS could balloon to tens of GB under concurrent load:

1. Byte-based param override (relay/common/override.go)
   - Switch legacy/operations hot paths from common.Marshal round-trips and
     map[string]any conversions to gjson/sjson on []byte directly.
   - Avoids cloning 5MB strings during each Set/Delete operation.

2. strings.Builder for Gemini response markdown (relay/channel/gemini/relay-gemini.go)
   - Replace string concatenation + strings.Join when assembling
     "![image](data:...;base64,DATA)" content for inline image responses.
   - Pre-allocates capacity from inline_data byte sizes.

3. Outbound BodyStorage + streaming Decoder (this commit's core)
   - New relay/common/outbound_body.go helper wraps marshaled upstream bodies
     in common.BodyStorage, allowing disk-cache mode to offload jsonData to
     a temp file while waiting for upstream TTFB. The original []byte can
     then be GC'd, removing ~5MB/req of heap residency during the longest
     window of a request.
   - All 7 relay handlers (gemini/claude/responses/embedding/image/compatible/
     rerank) plus chat_completions_via_responses adopt the helper with
     defer closer.Close() and explicit jsonData = nil.
   - relay/common/relay_info.go: new UpstreamRequestBodySize so
     relay/channel/api_request.go can populate req.ContentLength (lost when
     body becomes a type-erased io.Reader).
   - common/gin.go UnmarshalBodyReusable: when storage is disk-backed and
     content-type is JSON, decode via DecodeJson(storage) instead of
     storage.Bytes()+Unmarshal, removing one transient 5MB copy per request.
     memory mode and form/multipart paths unchanged.
2026-05-22 19:08:38 +08:00
Seefs
0d4b25795a
fix: expose param override audits for sensitive message fields (#4974) 2026-05-19 18:28:03 +08:00
Seefs
f7adf02eb4
feat(claude): add cache_control and speed passthrough controls (#4247) 2026-04-15 20:55:01 +08:00
Seefs
8aa8b81e03 fix: original_model && upstream_model paramOverrideKeyAuditPaths 2026-03-17 17:00:01 +08:00
Seefs
bc80477b1a feat: simplify param override audit UI and operation labels 2026-03-17 17:00:01 +08:00
Seefs
5db25f47f1 feat: add param override audit modal for usage logs 2026-03-17 17:00:01 +08:00
Seefs
d087cc5025 feat:support $keep_only_declared and deduped $append for header token overrides 2026-03-09 00:12:53 +08:00
Seefs
d2332685db feat: add wildcard path support and improve param override templates/editor 2026-03-05 16:39:34 +08:00
Seefs
ad326beb10 Merge pull request #3066 from seefs001/fix/aws-header-override
Fix/aws header override
2026-03-02 18:54:56 +08:00
Seefs
054370abdc feat: support token-map rewrite for comma-separated headers and add bedrock anthropic-beta preset 2026-02-27 19:47:32 +08:00
Seefs
a955d4102d refactor(override): simplify header overrides to a lowercase single map 2026-02-25 17:24:18 +08:00
Seefs
3034fb8899 fix: merge runtime and channel header overrides, skip missing source headers 2026-02-25 16:12:34 +08:00
Seefs
58fcd9cbca fix pass_headers 2026-02-25 15:39:49 +08:00
Seefs
71886f4e57 feat: add pass_headers op, grouped presets (incl. Gemini 4K), and robust JSON fallback 2026-02-22 17:16:57 +08:00
Seefs
768745fd1b feat: sync field 2026-02-22 01:27:58 +08:00
Seefs
7633863c96 feat: unify param/header overrides with retry-aware conditions and flexible header operations 2026-02-22 00:45:49 +08:00
Seefs
aebc8ae254 feat: add retry-aware param override with return_error and prune_objects 2026-02-22 00:10:49 +08:00
Seefs
eae53ac398 Merge pull request #2627 from seefs001/feature/channel-test-param-override
Some checks failed
Publish Docker image (Multi Registries, native amd64+arm64) / Build & push (amd64) [native] (push) Has been cancelled
Publish Docker image (Multi Registries, native amd64+arm64) / Build & push (arm64) [native] (push) Has been cancelled
Publish Docker image (Multi Registries, native amd64+arm64) / Create multi-arch manifests (Docker Hub) (push) Has been cancelled
feat: channel testing supports parameter overriding
2026-01-12 18:49:05 +08:00
Seefs
552e51c15a feat: add parameter coverage for the operations: copy, trim_prefix, trim_suffix, ensure_prefix, ensure_suffix, trim_space, to_lower, to_upper, replace, and regex_replace 2026-01-03 10:27:16 +08:00
Seefs
1dd8c0f569 fix: regex repeat compile 2025-12-03 00:41:47 +08:00
Seefs
dbdcb14e7a feat: embedding param override && internal params 2025-11-22 18:27:17 +08:00
CaIon
ba949ac5af fix(override): handle null value comparison in JSON equality check 2025-10-30 23:28:14 +08:00
Seefs
5010f2d004 format: package name -> github.com/QuantumNous/new-api (#2017) 2025-10-11 15:30:09 +08:00
Nekohy
1de5216148 fix: allow the negative number for override.go 2025-09-04 23:36:19 +08:00
Nekohy
9e649148bb feats:the error of gjson.True and gjson.False 2025-08-16 17:16:46 +08:00
Nekohy
7323dcf906 feats:custom the key missing condition 2025-08-16 16:37:09 +08:00
Nekohy
5683f4b95f feats:use the types of gjson,the error expection,the invert of the condition 2025-08-16 16:31:17 +08:00
Nekohy
02401b9a38 fix:moveValue bug 2025-08-16 11:58:40 +08:00
Nekohy
4b6031b59c feats: the flexable params override and compatible format 2025-08-16 11:27:47 +08:00