Spaces:
Running
Running
| """Safe metadata summaries for HTTP 422 validation logging (no raw text content).""" | |
| from __future__ import annotations | |
| from typing import Any | |
| def summarize_request_validation_body( | |
| body: Any, | |
| ) -> tuple[list[dict[str, Any]], list[str]]: | |
| """Return message shape summary and tool name list for debug logs.""" | |
| messages = body.get("messages") if isinstance(body, dict) else None | |
| message_summary: list[dict[str, Any]] = [] | |
| if isinstance(messages, list): | |
| for msg in messages: | |
| if not isinstance(msg, dict): | |
| message_summary.append({"message_kind": type(msg).__name__}) | |
| continue | |
| content = msg.get("content") | |
| item: dict[str, Any] = { | |
| "role": msg.get("role"), | |
| "content_kind": type(content).__name__, | |
| } | |
| if isinstance(content, list): | |
| item["block_types"] = [ | |
| block.get("type", "dict") | |
| if isinstance(block, dict) | |
| else type(block).__name__ | |
| for block in content[:12] | |
| ] | |
| item["block_keys"] = [ | |
| sorted(str(key) for key in block)[:12] | |
| for block in content[:5] | |
| if isinstance(block, dict) | |
| ] | |
| elif isinstance(content, str): | |
| item["content_length"] = len(content) | |
| message_summary.append(item) | |
| tool_names: list[str] = [] | |
| if isinstance(body, dict) and isinstance(body.get("tools"), list): | |
| tool_names = [ | |
| str(tool.get("name", "")) | |
| for tool in body["tools"] | |
| if isinstance(tool, dict) | |
| ] | |
| return message_summary, tool_names | |