mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-10 03:28:53 +00:00
test(langfuse_otel): annotate new request metadata tests
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
parent
732d2c58e6
commit
4ab39e1100
1 changed files with 21 additions and 26 deletions
|
|
@ -1,5 +1,6 @@
|
|||
import json
|
||||
import os
|
||||
from typing import Final
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
|
|
@ -483,9 +484,11 @@ class TestLangfuseOtelIntegration:
|
|||
assert isinstance(config, OpenTelemetryConfig)
|
||||
# Endpoint assertion removed as side effect is gone
|
||||
|
||||
def test_request_metadata_is_emitted_under_langfuse_observation_and_trace_metadata_keys(self, monkeypatch):
|
||||
def test_request_metadata_is_emitted_under_langfuse_observation_and_trace_metadata_keys(
|
||||
self, monkeypatch: pytest.MonkeyPatch
|
||||
) -> None:
|
||||
monkeypatch.setattr(litellm, "redact_user_api_key_info", False)
|
||||
request_metadata = {
|
||||
request_metadata: Final = {
|
||||
"user_api_key_hash": "hash123",
|
||||
"user_api_key_alias": "prod-key",
|
||||
"user_api_key_user_id": "user-1",
|
||||
|
|
@ -496,22 +499,18 @@ class TestLangfuseOtelIntegration:
|
|||
"requester_ip_address": "10.0.0.1",
|
||||
"requester_metadata": {"ticket": "LIT-8283"},
|
||||
}
|
||||
kwargs = {
|
||||
kwargs: Final = {
|
||||
"litellm_params": {"metadata": {}},
|
||||
"standard_logging_object": {"metadata": request_metadata},
|
||||
}
|
||||
|
||||
with patch(
|
||||
"litellm.integrations.arize._utils.safe_set_attribute"
|
||||
) as mock_safe_set_attribute:
|
||||
with patch("litellm.integrations.arize._utils.safe_set_attribute") as mock_safe_set_attribute:
|
||||
LangfuseOtelLogger._set_langfuse_specific_attributes(MagicMock(), kwargs, None)
|
||||
|
||||
actual = {call.args[1]: call.args[2] for call in mock_safe_set_attribute.call_args_list}
|
||||
actual: Final = {call.args[1]: call.args[2] for call in mock_safe_set_attribute.call_args_list}
|
||||
|
||||
assert json.loads(actual["langfuse.observation.metadata"]) == {**request_metadata}
|
||||
assert {
|
||||
key: value for key, value in actual.items() if key.startswith("langfuse.trace.metadata.")
|
||||
} == {
|
||||
assert {key: value for key, value in actual.items() if key.startswith("langfuse.trace.metadata.")} == {
|
||||
"langfuse.trace.metadata.user_api_key_alias": "prod-key",
|
||||
"langfuse.trace.metadata.user_api_key_user_id": "user-1",
|
||||
"langfuse.trace.metadata.user_api_key_end_user_id": "end-user-1",
|
||||
|
|
@ -519,9 +518,9 @@ class TestLangfuseOtelIntegration:
|
|||
"langfuse.trace.metadata.user_api_key_team_alias": "team-a",
|
||||
}
|
||||
|
||||
def test_request_metadata_redaction_matches_vanilla_langfuse(self, monkeypatch):
|
||||
def test_request_metadata_redaction_matches_vanilla_langfuse(self, monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
monkeypatch.setattr(litellm, "redact_user_api_key_info", True)
|
||||
request_metadata = {
|
||||
request_metadata: Final = {
|
||||
"user_api_key_hash": "hash123",
|
||||
"user_api_key_alias": "prod-key",
|
||||
"user_api_key_user_id": "user-1",
|
||||
|
|
@ -532,17 +531,15 @@ class TestLangfuseOtelIntegration:
|
|||
"requester_ip_address": "10.0.0.1",
|
||||
"requester_metadata": {"ticket": "LIT-8283"},
|
||||
}
|
||||
kwargs = {
|
||||
kwargs: Final = {
|
||||
"litellm_params": {"metadata": {}},
|
||||
"standard_logging_object": {"metadata": request_metadata},
|
||||
}
|
||||
|
||||
with patch(
|
||||
"litellm.integrations.arize._utils.safe_set_attribute"
|
||||
) as mock_safe_set_attribute:
|
||||
with patch("litellm.integrations.arize._utils.safe_set_attribute") as mock_safe_set_attribute:
|
||||
LangfuseOtelLogger._set_langfuse_specific_attributes(MagicMock(), kwargs, None)
|
||||
|
||||
actual = {call.args[1]: call.args[2] for call in mock_safe_set_attribute.call_args_list}
|
||||
actual: Final = {call.args[1]: call.args[2] for call in mock_safe_set_attribute.call_args_list}
|
||||
|
||||
assert json.loads(actual["langfuse.observation.metadata"]) == {
|
||||
"spend_logs_metadata": {"env": "prod"},
|
||||
|
|
@ -551,20 +548,18 @@ class TestLangfuseOtelIntegration:
|
|||
}
|
||||
assert not [key for key in actual if key.startswith("langfuse.trace.metadata.")]
|
||||
|
||||
def test_request_metadata_keys_are_absent_without_standard_logging_object(self, monkeypatch):
|
||||
def test_request_metadata_keys_are_absent_without_standard_logging_object(
|
||||
self, monkeypatch: pytest.MonkeyPatch
|
||||
) -> None:
|
||||
monkeypatch.setattr(litellm, "redact_user_api_key_info", False)
|
||||
kwargs = {"litellm_params": {"metadata": {"trace_metadata": {"k": "v"}}}}
|
||||
kwargs: Final = {"litellm_params": {"metadata": {"trace_metadata": {"k": "v"}}}}
|
||||
|
||||
with patch(
|
||||
"litellm.integrations.arize._utils.safe_set_attribute"
|
||||
) as mock_safe_set_attribute:
|
||||
with patch("litellm.integrations.arize._utils.safe_set_attribute") as mock_safe_set_attribute:
|
||||
LangfuseOtelLogger._set_langfuse_specific_attributes(MagicMock(), kwargs, None)
|
||||
|
||||
actual = {call.args[1]: call.args[2] for call in mock_safe_set_attribute.call_args_list}
|
||||
actual: Final = {call.args[1]: call.args[2] for call in mock_safe_set_attribute.call_args_list}
|
||||
|
||||
assert [key for key in actual if key.startswith("langfuse.trace.metadata")] == [
|
||||
"langfuse.trace.metadata"
|
||||
]
|
||||
assert [key for key in actual if key.startswith("langfuse.trace.metadata")] == ["langfuse.trace.metadata"]
|
||||
assert "langfuse.observation.metadata" not in actual
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue