[OpenAI] Log raw request payload for --log-requests (#20605)

This commit is contained in:
Zhirui
2026-03-16 08:45:00 +08:00
committed by GitHub
parent d852f26cb6
commit 35c249b4de
3 changed files with 155 additions and 8 deletions

View File

@@ -84,6 +84,11 @@ class OpenAIServingBase(ABC):
if error_msg:
return self.create_error_response(error_msg)
# Log the raw OpenAI request payload before conversion to tokenized form.
request_logger = self.tokenizer_manager.request_logger
if request_logger.log_requests and request_logger.log_requests_level >= 2:
request_logger.log_openai_received_request(request, request=raw_request)
# Convert to internal format
adapted_request, processed_request = self._convert_to_internal_request(
request, raw_request

View File

@@ -130,6 +130,34 @@ class RequestLogger:
decoded = tokenizer.decode(obj.input_ids, skip_special_tokens=False)
obj.text = decoded
def log_openai_received_request(
self,
obj: Any,
request: Optional["fastapi.Request"] = None,
) -> None:
"""Log the raw OpenAI request payload before request adaptation/tokenization."""
max_length, _, _ = self.metadata
max_length = max_length if max_length is not None else 2048
headers = _extract_whitelisted_headers(request)
if hasattr(obj, "model_dump"):
obj_to_log = obj.model_dump(exclude_none=True)
else:
obj_to_log = obj
if self.log_requests_format == "json":
log_data = {
"obj": _transform_data_for_logging(obj_to_log, max_length=max_length),
}
if headers:
log_data["headers"] = headers
log_json(self.targets, "request.received.openai", log_data)
else:
headers_str = f", headers={headers}" if headers else ""
self._log(
f"Receive OpenAI: obj={_dataclass_to_string_truncated(obj_to_log, max_length)}{headers_str}"
)
def log_finished_request(
self,
obj: Union["GenerateReqInput", "EmbeddingReqInput"],