[OpenAI] Log raw request payload for --log-requests (#20605)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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"],
|
||||
|
||||
Reference in New Issue
Block a user