mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-19 00:01:29 +00:00
fix(logging): satisfy callback redaction type gates
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
parent
566a323e47
commit
6d251a6cc0
3 changed files with 16 additions and 14 deletions
|
|
@ -914,9 +914,9 @@ class CustomLogger: # https://docs.litellm.ai/docs/observability/custom_callbac
|
|||
return model_call_details
|
||||
|
||||
redacted_model_call_details: Final = (
|
||||
{
|
||||
{ # mutable-ok: callback payload copy
|
||||
**model_call_details,
|
||||
"messages": [{"role": "user", "content": REDACTED_BY_LITELLM}],
|
||||
"messages": [{"role": "user", "content": REDACTED_BY_LITELLM}], # mutable-ok: callback payload copy
|
||||
"prompt": "",
|
||||
"input": "",
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3194,18 +3194,18 @@ class Logging(LiteLLMLoggingBaseClass):
|
|||
)
|
||||
|
||||
if isinstance(callback, CustomLogger): # custom logger class
|
||||
callback_model_call_details: Final[dict] = self.model_call_details
|
||||
callback_model_call_details: Final[dict] = self.model_call_details # mutable-ok: callback payload API
|
||||
##################################
|
||||
# call redaction hook for custom logger
|
||||
standard_redacted_model_call_details: Final[dict] = (
|
||||
standard_redacted_model_call_details: Final[dict] = ( # mutable-ok: callback payload API
|
||||
callback.redact_standard_logging_payload_from_model_call_details(
|
||||
model_call_details=callback_model_call_details
|
||||
)
|
||||
)
|
||||
streaming_redacted_model_call_details: Final[dict] = redact_streaming_responses_for_custom_logger(
|
||||
streaming_redacted_model_call_details: Final[dict] = redact_streaming_responses_for_custom_logger( # mutable-ok: callback payload API
|
||||
model_call_details=standard_redacted_model_call_details, custom_logger=callback
|
||||
)
|
||||
redacted_model_call_details: Final[dict] = redact_model_call_details_for_custom_logger(
|
||||
redacted_model_call_details: Final[dict] = redact_model_call_details_for_custom_logger( # mutable-ok: callback payload API
|
||||
model_call_details=streaming_redacted_model_call_details, custom_logger=callback
|
||||
)
|
||||
##################################
|
||||
|
|
@ -4291,7 +4291,7 @@ def _construct_custom_logger_compatible_class(
|
|||
logging_integration: _custom_logger_compatible_callbacks_literal,
|
||||
internal_usage_cache: DualCache | None,
|
||||
llm_router: Any | None, # expect litellm.Router, but typing errors due to circular import
|
||||
custom_logger_init_args: dict | None = None,
|
||||
custom_logger_init_args: dict | None = None, # mutable-ok: callback constructor API
|
||||
) -> CustomLogger | None:
|
||||
try:
|
||||
custom_logger_init_args = custom_logger_init_args or {}
|
||||
|
|
|
|||
|
|
@ -75,7 +75,9 @@ def redact_response_for_custom_logger(result: object, custom_logger: CustomLogge
|
|||
)
|
||||
if not opted_out or custom_logger.redacts_messages_itself():
|
||||
return result
|
||||
return perform_redaction(model_call_details={}, result=result, redact_streaming_responses=False)
|
||||
return perform_redaction( # mutable-ok: redaction scratch payload
|
||||
model_call_details={}, result=result, redact_streaming_responses=False
|
||||
)
|
||||
|
||||
|
||||
def redact_model_call_details_for_custom_logger(
|
||||
|
|
@ -93,11 +95,11 @@ def redact_model_call_details_for_custom_logger(
|
|||
raw_request_typed_dict.get("raw_request_body") if isinstance(raw_request_typed_dict, dict) else None
|
||||
)
|
||||
redacted_raw_request_typed_dict: Final = (
|
||||
{
|
||||
{ # mutable-ok: callback payload copy
|
||||
**raw_request_typed_dict,
|
||||
"raw_request_body": {
|
||||
**raw_request_body,
|
||||
"messages": [{"role": "user", "content": REDACTED_BY_LITELLM}],
|
||||
**raw_request_body, # mutable-ok: callback payload copy
|
||||
"messages": [{"role": "user", "content": REDACTED_BY_LITELLM}], # mutable-ok: callback payload copy
|
||||
"input": "",
|
||||
"prompt": "",
|
||||
},
|
||||
|
|
@ -105,15 +107,15 @@ def redact_model_call_details_for_custom_logger(
|
|||
if isinstance(raw_request_typed_dict, dict) and isinstance(raw_request_body, dict)
|
||||
else raw_request_typed_dict
|
||||
)
|
||||
return {
|
||||
return { # mutable-ok: callback payload copy
|
||||
**model_call_details,
|
||||
**{
|
||||
**{ # mutable-ok: callback payload copy
|
||||
key: redact_response_for_custom_logger(result=model_call_details[key], custom_logger=custom_logger)
|
||||
for key in response_keys
|
||||
if model_call_details.get(key) is not None
|
||||
},
|
||||
**(
|
||||
{"raw_request_typed_dict": redacted_raw_request_typed_dict}
|
||||
{"raw_request_typed_dict": redacted_raw_request_typed_dict} # mutable-ok: callback payload copy
|
||||
if redacted_raw_request_typed_dict is not raw_request_typed_dict
|
||||
else {}
|
||||
),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue