forked from phoenix/litellm-mirror
[Fix] OTEL - Don't log messages when callback settings disable message logging (#5875)
* fix otel dont log messages * otel fix redis failure hook logging
This commit is contained in:
parent
d37c8b5c6b
commit
3ccdb42d26
2 changed files with 60 additions and 43 deletions
|
@ -196,20 +196,27 @@ class ServiceLogging(CustomLogger):
|
||||||
end_time=end_time,
|
end_time=end_time,
|
||||||
event_metadata=event_metadata,
|
event_metadata=event_metadata,
|
||||||
)
|
)
|
||||||
|
elif callback == "otel":
|
||||||
|
from litellm.integrations.opentelemetry import OpenTelemetry
|
||||||
|
from litellm.proxy.proxy_server import open_telemetry_logger
|
||||||
|
|
||||||
from litellm.proxy.proxy_server import open_telemetry_logger
|
await self.init_otel_logger_if_none()
|
||||||
|
|
||||||
if not isinstance(error, str):
|
if not isinstance(error, str):
|
||||||
error = str(error)
|
error = str(error)
|
||||||
if open_telemetry_logger is not None:
|
|
||||||
await self.otel_logger.async_service_failure_hook(
|
if (
|
||||||
payload=payload,
|
parent_otel_span is not None
|
||||||
parent_otel_span=parent_otel_span,
|
and open_telemetry_logger is not None
|
||||||
start_time=start_time,
|
and isinstance(open_telemetry_logger, OpenTelemetry)
|
||||||
end_time=end_time,
|
):
|
||||||
event_metadata=event_metadata,
|
await self.otel_logger.async_service_success_hook(
|
||||||
error=error,
|
payload=payload,
|
||||||
)
|
parent_otel_span=parent_otel_span,
|
||||||
|
start_time=start_time,
|
||||||
|
end_time=end_time,
|
||||||
|
event_metadata=event_metadata,
|
||||||
|
)
|
||||||
|
|
||||||
async def async_post_call_failure_hook(
|
async def async_post_call_failure_hook(
|
||||||
self,
|
self,
|
||||||
|
|
|
@ -409,13 +409,51 @@ class OpenTelemetry(CustomLogger):
|
||||||
str(optional_params.get("stream", False)),
|
str(optional_params.get("stream", False)),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if optional_params.get("user"):
|
||||||
|
span.set_attribute(SpanAttributes.LLM_USER, optional_params.get("user"))
|
||||||
|
|
||||||
|
# The unique identifier for the completion.
|
||||||
|
if response_obj.get("id"):
|
||||||
|
span.set_attribute("gen_ai.response.id", response_obj.get("id"))
|
||||||
|
|
||||||
|
# The model used to generate the response.
|
||||||
|
if response_obj.get("model"):
|
||||||
|
span.set_attribute(
|
||||||
|
SpanAttributes.LLM_RESPONSE_MODEL, response_obj.get("model")
|
||||||
|
)
|
||||||
|
|
||||||
|
usage = response_obj.get("usage")
|
||||||
|
if usage:
|
||||||
|
span.set_attribute(
|
||||||
|
SpanAttributes.LLM_USAGE_TOTAL_TOKENS,
|
||||||
|
usage.get("total_tokens"),
|
||||||
|
)
|
||||||
|
|
||||||
|
# The number of tokens used in the LLM response (completion).
|
||||||
|
span.set_attribute(
|
||||||
|
SpanAttributes.LLM_USAGE_COMPLETION_TOKENS,
|
||||||
|
usage.get("completion_tokens"),
|
||||||
|
)
|
||||||
|
|
||||||
|
# The number of tokens used in the LLM prompt.
|
||||||
|
span.set_attribute(
|
||||||
|
SpanAttributes.LLM_USAGE_PROMPT_TOKENS,
|
||||||
|
usage.get("prompt_tokens"),
|
||||||
|
)
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
########## LLM Request Medssages / tools / content Attributes ###########
|
||||||
|
#########################################################################
|
||||||
|
|
||||||
|
if litellm.turn_off_message_logging is True:
|
||||||
|
return
|
||||||
|
if self.message_logging is not True:
|
||||||
|
return
|
||||||
|
|
||||||
if optional_params.get("tools"):
|
if optional_params.get("tools"):
|
||||||
tools = optional_params["tools"]
|
tools = optional_params["tools"]
|
||||||
self.set_tools_attributes(span, tools)
|
self.set_tools_attributes(span, tools)
|
||||||
|
|
||||||
if optional_params.get("user"):
|
|
||||||
span.set_attribute(SpanAttributes.LLM_USER, optional_params.get("user"))
|
|
||||||
|
|
||||||
if kwargs.get("messages"):
|
if kwargs.get("messages"):
|
||||||
for idx, prompt in enumerate(kwargs.get("messages")):
|
for idx, prompt in enumerate(kwargs.get("messages")):
|
||||||
if prompt.get("role"):
|
if prompt.get("role"):
|
||||||
|
@ -472,34 +510,6 @@ class OpenTelemetry(CustomLogger):
|
||||||
tool_calls[0].get("function").get("arguments"),
|
tool_calls[0].get("function").get("arguments"),
|
||||||
)
|
)
|
||||||
|
|
||||||
# The unique identifier for the completion.
|
|
||||||
if response_obj.get("id"):
|
|
||||||
span.set_attribute("gen_ai.response.id", response_obj.get("id"))
|
|
||||||
|
|
||||||
# The model used to generate the response.
|
|
||||||
if response_obj.get("model"):
|
|
||||||
span.set_attribute(
|
|
||||||
SpanAttributes.LLM_RESPONSE_MODEL, response_obj.get("model")
|
|
||||||
)
|
|
||||||
|
|
||||||
usage = response_obj.get("usage")
|
|
||||||
if usage:
|
|
||||||
span.set_attribute(
|
|
||||||
SpanAttributes.LLM_USAGE_TOTAL_TOKENS,
|
|
||||||
usage.get("total_tokens"),
|
|
||||||
)
|
|
||||||
|
|
||||||
# The number of tokens used in the LLM response (completion).
|
|
||||||
span.set_attribute(
|
|
||||||
SpanAttributes.LLM_USAGE_COMPLETION_TOKENS,
|
|
||||||
usage.get("completion_tokens"),
|
|
||||||
)
|
|
||||||
|
|
||||||
# The number of tokens used in the LLM prompt.
|
|
||||||
span.set_attribute(
|
|
||||||
SpanAttributes.LLM_USAGE_PROMPT_TOKENS,
|
|
||||||
usage.get("prompt_tokens"),
|
|
||||||
)
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
verbose_logger.error(
|
verbose_logger.error(
|
||||||
"OpenTelemetry logging error in set_attributes %s", str(e)
|
"OpenTelemetry logging error in set_attributes %s", str(e)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue