Spaces:
Configuration error
Configuration error
File size: 3,856 Bytes
447ebeb |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
import asyncio
import logging
import pytest
from dotenv import load_dotenv
import litellm
from litellm._logging import verbose_logger, verbose_proxy_logger
from litellm.integrations.arize.arize_phoenix import ArizePhoenixConfig, ArizePhoenixLogger
load_dotenv()
@pytest.mark.asyncio()
async def test_async_otel_callback():
litellm.set_verbose = True
verbose_proxy_logger.setLevel(logging.DEBUG)
verbose_logger.setLevel(logging.DEBUG)
litellm.success_callback = ["arize_phoenix"]
await litellm.acompletion(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "this is arize phoenix"}],
mock_response="hello",
temperature=0.1,
user="OTEL_USER",
)
await asyncio.sleep(2)
@pytest.mark.parametrize(
"env_vars, expected_headers, expected_endpoint, expected_protocol",
[
pytest.param(
{"PHOENIX_API_KEY": "test_api_key"},
"api_key=test_api_key",
"https://app.phoenix.arize.com/v1/traces",
"otlp_http",
id="default to http protocol and Arize hosted Phoenix endpoint",
),
pytest.param(
{"PHOENIX_COLLECTOR_HTTP_ENDPOINT": "", "PHOENIX_API_KEY": "test_api_key"},
"api_key=test_api_key",
"https://app.phoenix.arize.com/v1/traces",
"otlp_http",
id="empty string/unset endpoint will default to http protocol and Arize hosted Phoenix endpoint",
),
pytest.param(
{"PHOENIX_COLLECTOR_HTTP_ENDPOINT": "http://localhost:4318", "PHOENIX_COLLECTOR_ENDPOINT": "http://localhost:4317", "PHOENIX_API_KEY": "test_api_key"},
"Authorization=Bearer%20test_api_key",
"http://localhost:4318",
"otlp_http",
id="prioritize http if both endpoints are set",
),
pytest.param(
{"PHOENIX_COLLECTOR_ENDPOINT": "https://localhost:6006", "PHOENIX_API_KEY": "test_api_key"},
"Authorization=Bearer%20test_api_key",
"https://localhost:6006",
"otlp_grpc",
id="custom grpc endpoint",
),
pytest.param(
{"PHOENIX_COLLECTOR_ENDPOINT": "https://localhost:6006"},
None,
"https://localhost:6006",
"otlp_grpc",
id="custom grpc endpoint with no auth",
),
pytest.param(
{"PHOENIX_COLLECTOR_HTTP_ENDPOINT": "https://localhost:6006", "PHOENIX_API_KEY": "test_api_key"},
"Authorization=Bearer%20test_api_key",
"https://localhost:6006",
"otlp_http",
id="custom http endpoint",
),
],
)
def test_get_arize_phoenix_config(monkeypatch, env_vars, expected_headers, expected_endpoint, expected_protocol):
for key, value in env_vars.items():
monkeypatch.setenv(key, value)
config = ArizePhoenixLogger.get_arize_phoenix_config()
assert isinstance(config, ArizePhoenixConfig)
assert config.otlp_auth_headers == expected_headers
assert config.endpoint == expected_endpoint
assert config.protocol == expected_protocol
@pytest.mark.parametrize(
"env_vars",
[
pytest.param(
{"PHOENIX_COLLECTOR_ENDPOINT": "https://app.phoenix.arize.com/v1/traces"},
id="missing api_key with explicit Arize Phoenix endpoint"
),
pytest.param(
{},
id="missing api_key with no endpoint (defaults to Arize Phoenix)"
),
],
)
def test_get_arize_phoenix_config_expection_on_missing_api_key(monkeypatch, env_vars):
for key, value in env_vars.items():
monkeypatch.setenv(key, value)
with pytest.raises(ValueError, match=f"PHOENIX_API_KEY must be set when the Arize hosted Phoenix endpoint is used."):
ArizePhoenixLogger.get_arize_phoenix_config()
|