fix: bound model stream aggregation and close failed responses

This commit is contained in:
chenmingxuan committed 2026-11-02 16:48:51 +08:00
1 parent 4879adc380
commit 7c0c2b59ca
13 files changed
+1315 -12

No files matched your search

+33
View File
@@ -16,12 +16,38 @@ class ArgumentFingerprint:
self.encoding_valid = True
self.digest = hashlib.sha256()
self.prefixes: list[dict] = []
self.whitespace_chars = 0
self.whitespace_run = 0
self.max_whitespace_run = 0
self.min_delta_chars: int | None = None
self.max_delta_chars = 0
self.same_delta_run = 0
self.max_same_delta_run = 0
self.previous_delta_digest: bytes | None = None
def observe(self, arguments: str) -> None:
self.characters += len(arguments)
if not arguments:
return
self.deltas += 1
length = len(arguments)
self.min_delta_chars = min(self.min_delta_chars or length, length)
self.max_delta_chars = max(self.max_delta_chars, length)
for character in arguments:
if character in " \t\r\n":
self.whitespace_chars += 1
self.whitespace_run += 1
self.max_whitespace_run = max(self.max_whitespace_run, self.whitespace_run)
else:
self.whitespace_run = 0
# One digest, never the previous argument body. Surrogate handling here
# compares SDK strings only; wire UTF-8 fingerprints remain invalid below.
delta_digest = hashlib.sha256(arguments.encode("utf-8", "surrogatepass")).digest()
self.same_delta_run = (
self.same_delta_run + 1 if delta_digest == self.previous_delta_digest else 1
)
self.max_same_delta_run = max(self.max_same_delta_run, self.same_delta_run)
self.previous_delta_digest = delta_digest
if not self.encoding_valid:
return
try:
@@ -50,4 +76,11 @@ class ArgumentFingerprint:
"argument_deltas": self.deltas,
"argument_prefixes": [dict(prefix) for prefix in self.prefixes],
"argument_encoding_valid": self.encoding_valid,
"argument_json_whitespace_chars": self.whitespace_chars,
"argument_json_whitespace_run": self.whitespace_run,
"argument_json_whitespace_run_max": self.max_whitespace_run,
"argument_delta_chars_min": self.min_delta_chars,
"argument_delta_chars_max": self.max_delta_chars,
"argument_same_delta_run": self.same_delta_run,
"argument_same_delta_run_max": self.max_same_delta_run,
}