Add OpenTelemetry observability with local JSONL traces (#347)
Co-authored-by: 0xallam <ahmed39652003@gmail.com>
This commit is contained in:
39
tests/telemetry/test_utils.py
Normal file
39
tests/telemetry/test_utils.py
Normal file
@@ -0,0 +1,39 @@
|
||||
from strix.telemetry.utils import prune_otel_span_attributes
|
||||
|
||||
|
||||
def test_prune_otel_span_attributes_drops_high_volume_prompt_content() -> None:
|
||||
attributes = {
|
||||
"gen_ai.operation.name": "openai.chat",
|
||||
"gen_ai.request.model": "gpt-5.2",
|
||||
"gen_ai.prompt.0.role": "system",
|
||||
"gen_ai.prompt.0.content": "a" * 20_000,
|
||||
"gen_ai.completion.0.content": "b" * 10_000,
|
||||
"llm.input_messages.0.content": "c" * 5_000,
|
||||
"llm.output_messages.0.content": "d" * 5_000,
|
||||
"llm.input": "x" * 3_000,
|
||||
"llm.output": "y" * 3_000,
|
||||
}
|
||||
|
||||
pruned = prune_otel_span_attributes(attributes)
|
||||
|
||||
assert "gen_ai.prompt.0.content" not in pruned
|
||||
assert "gen_ai.completion.0.content" not in pruned
|
||||
assert "llm.input_messages.0.content" not in pruned
|
||||
assert "llm.output_messages.0.content" not in pruned
|
||||
assert "llm.input" not in pruned
|
||||
assert "llm.output" not in pruned
|
||||
assert pruned["gen_ai.operation.name"] == "openai.chat"
|
||||
assert pruned["gen_ai.prompt.0.role"] == "system"
|
||||
assert pruned["strix.filtered_attributes_count"] == 6
|
||||
|
||||
|
||||
def test_prune_otel_span_attributes_keeps_metadata_when_nothing_is_dropped() -> None:
|
||||
attributes = {
|
||||
"gen_ai.operation.name": "openai.chat",
|
||||
"gen_ai.request.model": "gpt-5.2",
|
||||
"gen_ai.prompt.0.role": "user",
|
||||
}
|
||||
|
||||
pruned = prune_otel_span_attributes(attributes)
|
||||
|
||||
assert pruned == attributes
|
||||
Reference in New Issue
Block a user