Spaces:
Sleeping
Sleeping
""" | |
arize AI is OTEL compatible | |
this file has Arize ai specific helper functions | |
""" | |
import os | |
from datetime import datetime | |
from typing import TYPE_CHECKING, Any, Optional, Union | |
from litellm.integrations.arize import _utils | |
from litellm.integrations.opentelemetry import OpenTelemetry | |
from litellm.types.integrations.arize import ArizeConfig | |
from litellm.types.services import ServiceLoggerPayload | |
if TYPE_CHECKING: | |
from opentelemetry.trace import Span as _Span | |
from litellm.types.integrations.arize import Protocol as _Protocol | |
Protocol = _Protocol | |
Span = Union[_Span, Any] | |
else: | |
Protocol = Any | |
Span = Any | |
class ArizeLogger(OpenTelemetry): | |
def set_attributes(self, span: Span, kwargs, response_obj: Optional[Any]): | |
ArizeLogger.set_arize_attributes(span, kwargs, response_obj) | |
return | |
def set_arize_attributes(span: Span, kwargs, response_obj): | |
_utils.set_attributes(span, kwargs, response_obj) | |
return | |
def get_arize_config() -> ArizeConfig: | |
""" | |
Helper function to get Arize configuration. | |
Returns: | |
ArizeConfig: A Pydantic model containing Arize configuration. | |
Raises: | |
ValueError: If required environment variables are not set. | |
""" | |
space_key = os.environ.get("ARIZE_SPACE_KEY") | |
api_key = os.environ.get("ARIZE_API_KEY") | |
grpc_endpoint = os.environ.get("ARIZE_ENDPOINT") | |
http_endpoint = os.environ.get("ARIZE_HTTP_ENDPOINT") | |
endpoint = None | |
protocol: Protocol = "otlp_grpc" | |
if grpc_endpoint: | |
protocol = "otlp_grpc" | |
endpoint = grpc_endpoint | |
elif http_endpoint: | |
protocol = "otlp_http" | |
endpoint = http_endpoint | |
else: | |
protocol = "otlp_grpc" | |
endpoint = "https://otlp.arize.com/v1" | |
return ArizeConfig( | |
space_key=space_key, | |
api_key=api_key, | |
protocol=protocol, | |
endpoint=endpoint, | |
) | |
async def async_service_success_hook( | |
self, | |
payload: ServiceLoggerPayload, | |
parent_otel_span: Optional[Span] = None, | |
start_time: Optional[Union[datetime, float]] = None, | |
end_time: Optional[Union[datetime, float]] = None, | |
event_metadata: Optional[dict] = None, | |
): | |
"""Arize is used mainly for LLM I/O tracing, sending router+caching metrics adds bloat to arize logs""" | |
pass | |
async def async_service_failure_hook( | |
self, | |
payload: ServiceLoggerPayload, | |
error: Optional[str] = "", | |
parent_otel_span: Optional[Span] = None, | |
start_time: Optional[Union[datetime, float]] = None, | |
end_time: Optional[Union[float, datetime]] = None, | |
event_metadata: Optional[dict] = None, | |
): | |
"""Arize is used mainly for LLM I/O tracing, sending router+caching metrics adds bloat to arize logs""" | |
pass | |
def create_litellm_proxy_request_started_span( | |
self, | |
start_time: datetime, | |
headers: dict, | |
): | |
"""Arize is used mainly for LLM I/O tracing, sending Proxy Server Request adds bloat to arize logs""" | |
pass | |