Spaces:
Configuration error
Configuration error
""" | |
Test the DataDogLLMObsLogger | |
""" | |
import io | |
import os | |
import sys | |
sys.path.insert(0, os.path.abspath("../..")) | |
import asyncio | |
import gzip | |
import json | |
import logging | |
import time | |
from unittest.mock import AsyncMock, patch | |
import pytest | |
import litellm | |
from litellm import completion | |
from litellm._logging import verbose_logger | |
from litellm.integrations.datadog.datadog_llm_obs import DataDogLLMObsLogger | |
from datetime import datetime, timedelta | |
from litellm.types.integrations.datadog_llm_obs import * | |
from litellm.types.utils import ( | |
StandardLoggingPayload, | |
StandardLoggingModelInformation, | |
StandardLoggingMetadata, | |
StandardLoggingHiddenParams, | |
) | |
verbose_logger.setLevel(logging.DEBUG) | |
def create_standard_logging_payload() -> StandardLoggingPayload: | |
return StandardLoggingPayload( | |
id="test_id", | |
call_type="completion", | |
response_cost=0.1, | |
response_cost_failure_debug_info=None, | |
status="success", | |
total_tokens=30, | |
prompt_tokens=20, | |
completion_tokens=10, | |
startTime=1234567890.0, | |
endTime=1234567891.0, | |
completionStartTime=1234567890.5, | |
model_map_information=StandardLoggingModelInformation( | |
model_map_key="gpt-3.5-turbo", model_map_value=None | |
), | |
model="gpt-3.5-turbo", | |
model_id="model-123", | |
model_group="openai-gpt", | |
api_base="https://api.openai.com", | |
metadata=StandardLoggingMetadata( | |
user_api_key_hash="test_hash", | |
user_api_key_org_id=None, | |
user_api_key_alias="test_alias", | |
user_api_key_team_id="test_team", | |
user_api_key_user_id="test_user", | |
user_api_key_team_alias="test_team_alias", | |
spend_logs_metadata=None, | |
requester_ip_address="127.0.0.1", | |
requester_metadata=None, | |
), | |
cache_hit=False, | |
cache_key=None, | |
saved_cache_cost=0.0, | |
request_tags=[], | |
end_user=None, | |
requester_ip_address="127.0.0.1", | |
messages=[{"role": "user", "content": "Hello, world!"}], | |
response={"choices": [{"message": {"content": "Hi there!"}}]}, | |
error_str=None, | |
model_parameters={"stream": True}, | |
hidden_params=StandardLoggingHiddenParams( | |
model_id="model-123", | |
cache_key=None, | |
api_base="https://api.openai.com", | |
response_cost="0.1", | |
additional_headers=None, | |
), | |
) | |
async def test_datadog_llm_obs_logging(): | |
datadog_llm_obs_logger = DataDogLLMObsLogger() | |
litellm.callbacks = [datadog_llm_obs_logger] | |
litellm.set_verbose = True | |
for _ in range(2): | |
response = await litellm.acompletion( | |
model="gpt-4o", | |
messages=[{"role": "user", "content": "Hello testing dd llm obs!"}], | |
mock_response="hi", | |
) | |
print(response) | |
await asyncio.sleep(6) | |
async def test_create_llm_obs_payload(): | |
datadog_llm_obs_logger = DataDogLLMObsLogger() | |
standard_logging_payload = create_standard_logging_payload() | |
payload = datadog_llm_obs_logger.create_llm_obs_payload( | |
kwargs={ | |
"model": "gpt-4", | |
"messages": [{"role": "user", "content": "Hello"}], | |
"standard_logging_object": standard_logging_payload, | |
}, | |
response_obj=litellm.ModelResponse( | |
id="test_id", | |
choices=[{"message": {"content": "Hi there!"}}], | |
created=12, | |
model="gpt-4", | |
), | |
start_time=datetime.now(), | |
end_time=datetime.now() + timedelta(seconds=1), | |
) | |
print("dd created payload", payload) | |
assert payload["name"] == "litellm_llm_call" | |
assert payload["meta"]["kind"] == "llm" | |
assert payload["meta"]["input"]["messages"] == [ | |
{"role": "user", "content": "Hello, world!"} | |
] | |
assert payload["meta"]["output"]["messages"][0]["content"] == "Hi there!" | |
assert payload["metrics"]["input_tokens"] == 20 | |
assert payload["metrics"]["output_tokens"] == 10 | |
assert payload["metrics"]["total_tokens"] == 30 | |