Spaces:
Configuration error
Configuration error
import asyncio | |
import os | |
import random | |
import sys | |
from datetime import datetime, timedelta | |
from typing import Optional | |
sys.path.insert(0, os.path.abspath("../..")) | |
import pytest | |
import litellm | |
from litellm_enterprise.enterprise_callbacks.pagerduty.pagerduty import ( | |
PagerDutyAlerting, | |
AlertingConfig, | |
) | |
from litellm.proxy._types import UserAPIKeyAuth | |
async def test_pagerduty_alerting(): | |
pagerduty = PagerDutyAlerting( | |
alerting_args=AlertingConfig( | |
failure_threshold=1, failure_threshold_window_seconds=10 | |
) | |
) | |
litellm.callbacks = [pagerduty] | |
try: | |
await litellm.acompletion( | |
model="gpt-3.5-turbo", | |
messages=[{"role": "user", "content": "hi"}], | |
mock_response="litellm.RateLimitError", | |
) | |
except litellm.RateLimitError: | |
pass | |
await asyncio.sleep(2) | |
async def test_pagerduty_alerting_high_failure_rate(): | |
pagerduty = PagerDutyAlerting( | |
alerting_args=AlertingConfig( | |
failure_threshold=3, failure_threshold_window_seconds=600 | |
) | |
) | |
litellm.callbacks = [pagerduty] | |
try: | |
await litellm.acompletion( | |
model="gpt-3.5-turbo", | |
messages=[{"role": "user", "content": "hi"}], | |
mock_response="litellm.RateLimitError", | |
) | |
except litellm.RateLimitError: | |
pass | |
await asyncio.sleep(2) | |
# make 3 more fails | |
for _ in range(3): | |
try: | |
await litellm.acompletion( | |
model="gpt-3.5-turbo", | |
messages=[{"role": "user", "content": "hi"}], | |
mock_response="litellm.RateLimitError", | |
) | |
except litellm.RateLimitError: | |
pass | |
await asyncio.sleep(2) | |
async def test_pagerduty_hanging_request_alerting(): | |
pagerduty = PagerDutyAlerting( | |
alerting_args=AlertingConfig(hanging_threshold_seconds=0.0000001) | |
) | |
litellm.callbacks = [pagerduty] | |
await pagerduty.async_pre_call_hook( | |
cache=None, | |
user_api_key_dict=UserAPIKeyAuth( | |
api_key="test", | |
key_alias="test-pagerduty", | |
team_alias="test-team", | |
org_id="test-org", | |
user_id="test-user", | |
end_user_id="test-end-user", | |
), | |
data={"model": "gpt-4o", "messages": [{"role": "user", "content": "hi"}]}, | |
call_type="completion", | |
) | |
await litellm.acompletion( | |
model="gpt-4o", | |
messages=[{"role": "user", "content": "hi"}], | |
) | |
await asyncio.sleep(1) | |