feat: track logical call statistics across governed calls
This commit is contained in:
@@ -208,6 +208,10 @@ class CacheMW:
|
||||
max_inter_token_ms=None,
|
||||
call_id=str(uuid.uuid4()),
|
||||
structured_data=structured_data,
|
||||
# 显式覆盖: 历史条目里的 `call_stats` 是个 dict,而 `_RESPONSE_FIELDS`
|
||||
# 过滤**会放行它**——不覆盖就会有 dict 冒充 `CallStats` 漏给调用方。
|
||||
# 本次调用的真实统计由公开边界在返回前追加(设计 §3)
|
||||
call_stats=None,
|
||||
)
|
||||
return LLMResponse(**fields)
|
||||
except Exception as exc:
|
||||
@@ -230,6 +234,9 @@ class CacheMW:
|
||||
def _serialize(self, response: LLMResponse) -> str:
|
||||
data = dataclasses.asdict(response)
|
||||
data.pop("structured_data", None) # pydantic 实例不可 JSON 往返(设计 §2.1)
|
||||
# 统计描述**本次**调用,存进去再放出来等于向下一个调用方谎称
|
||||
# 它重试了 N 次;`asdict` 会把 `CallStats` 摊成 dict,故必须显式剔除
|
||||
data.pop("call_stats", None)
|
||||
return json.dumps(data, ensure_ascii=False)
|
||||
|
||||
async def _safe_get(self, key: str) -> str | None:
|
||||
|
||||
Reference in New Issue
Block a user