mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-26 19:24:27 +00:00
* Adding VertexAI Claude 3.7 Sonnet (#8774) Co-authored-by: Emerson Gomes <emerson.gomes@thalesgroup.com> * build(model_prices_and_context_window.json): add anthropic 3-7 models on vertex ai and bedrock * Support video_url (#8743) * Support video_url Support VLMs that works with video. Example implemenation in vllm: https://github.com/vllm-project/vllm/pull/10020 * llms openai.py: Add ChatCompletionVideoObject Add data structures to support `video_url` in chat completion * test test_completion.py: add test for video_url * Arize Phoenix - ensure correct endpoint/protocol are used; and default to phoenix cloud (#8750) * minor fixes to default to http and to ensure that the correct endpoint is used * Update test_arize_phoenix.py * prioritize http over grpc --------- Co-authored-by: Emerson Gomes <emerson.gomes@gmail.com> Co-authored-by: Emerson Gomes <emerson.gomes@thalesgroup.com> Co-authored-by: Pang Wu <104795337+pang-wu@users.noreply.github.com> Co-authored-by: Nate Mar <67926244+nate-mar@users.noreply.github.com>
73 lines
2.7 KiB
Python
73 lines
2.7 KiB
Python
import os
|
|
from typing import TYPE_CHECKING, Any
|
|
from litellm.integrations.arize import _utils
|
|
from litellm._logging import verbose_logger
|
|
from litellm.types.integrations.arize_phoenix import ArizePhoenixConfig
|
|
|
|
if TYPE_CHECKING:
|
|
from .opentelemetry import OpenTelemetryConfig as _OpenTelemetryConfig
|
|
from litellm.types.integrations.arize import Protocol as _Protocol
|
|
from opentelemetry.trace import Span as _Span
|
|
|
|
Protocol = _Protocol
|
|
OpenTelemetryConfig = _OpenTelemetryConfig
|
|
Span = _Span
|
|
else:
|
|
Protocol = Any
|
|
OpenTelemetryConfig = Any
|
|
Span = Any
|
|
|
|
|
|
ARIZE_HOSTED_PHOENIX_ENDPOINT = "https://app.phoenix.arize.com/v1/traces"
|
|
|
|
class ArizePhoenixLogger:
|
|
@staticmethod
|
|
def set_arize_phoenix_attributes(span: Span, kwargs, response_obj):
|
|
_utils.set_attributes(span, kwargs, response_obj)
|
|
return
|
|
|
|
@staticmethod
|
|
def get_arize_phoenix_config() -> ArizePhoenixConfig:
|
|
"""
|
|
Retrieves the Arize Phoenix configuration based on environment variables.
|
|
|
|
Returns:
|
|
ArizePhoenixConfig: A Pydantic model containing Arize Phoenix configuration.
|
|
"""
|
|
api_key = os.environ.get("PHOENIX_API_KEY", None)
|
|
grpc_endpoint = os.environ.get("PHOENIX_COLLECTOR_ENDPOINT", None)
|
|
http_endpoint = os.environ.get("PHOENIX_COLLECTOR_HTTP_ENDPOINT", None)
|
|
|
|
endpoint = None
|
|
protocol: Protocol = "otlp_http"
|
|
|
|
if http_endpoint:
|
|
endpoint = http_endpoint
|
|
protocol = "otlp_http"
|
|
elif grpc_endpoint:
|
|
endpoint = grpc_endpoint
|
|
protocol = "otlp_grpc"
|
|
else:
|
|
endpoint = ARIZE_HOSTED_PHOENIX_ENDPOINT
|
|
protocol = "otlp_http"
|
|
verbose_logger.debug(
|
|
f"No PHOENIX_COLLECTOR_ENDPOINT or PHOENIX_COLLECTOR_HTTP_ENDPOINT found, using default endpoint with http: {ARIZE_HOSTED_PHOENIX_ENDPOINT}"
|
|
)
|
|
|
|
otlp_auth_headers = None
|
|
# If the endpoint is the Arize hosted Phoenix endpoint, use the api_key as the auth header as currently it is uses
|
|
# a slightly different auth header format than self hosted phoenix
|
|
if endpoint == ARIZE_HOSTED_PHOENIX_ENDPOINT:
|
|
if api_key is None:
|
|
raise ValueError("PHOENIX_API_KEY must be set when the Arize hosted Phoenix endpoint is used.")
|
|
otlp_auth_headers = f"api_key={api_key}"
|
|
elif api_key is not None:
|
|
# api_key/auth is optional for self hosted phoenix
|
|
otlp_auth_headers = f"Authorization=Bearer {api_key}"
|
|
|
|
return ArizePhoenixConfig(
|
|
otlp_auth_headers=otlp_auth_headers,
|
|
protocol=protocol,
|
|
endpoint=endpoint
|
|
)
|
|
|