litellm/tests
Alex Strick van Linschoten 75ae43e667
feat(langfuse-otel): Add comprehensive metadata support to Langfuse OpenTelemetry integration (#12956)
* feat(langfuse-otel): Add comprehensive metadata support to Langfuse OpenTelemetry integration

This commit brings the langfuse_otel integration to feature parity with the vanilla Langfuse integration by adding support for all metadata fields.

Changes:
- Extended LangfuseSpanAttributes enum with all supported metadata fields:
  - Generation-level: generation_name, generation_id, parent_observation_id, version, mask_input/output
  - Trace-level: trace_user_id, session_id, tags, trace_name, trace_id, trace_metadata, trace_version, trace_release, existing_trace_id, update_trace_keys
  - Debug: debug_langfuse

- Implemented metadata extraction and mapping in langfuse_otel.py:
  - Added _extract_langfuse_metadata() helper to extract metadata from kwargs
  - Support for header-based metadata (langfuse_* headers) via proxy
  - Enhanced _set_langfuse_specific_attributes() to map all metadata to OTEL attributes
  - JSON serialization for complex types (lists, dicts) for OTEL compatibility

- Updated documentation:
  - Added 'Metadata Support' section explaining all fields are now supported
  - Provided usage example showing how to pass metadata
  - Clarified that traces are viewed in Langfuse UI (not generic OTEL backends)
  - Added opentelemetry-exporter-otlp to required dependencies

This allows users to pass metadata like:
metadata={
    'generation_name': 'my-generation',
    'trace_id': 'trace-123',
    'session_id': 'session-456',
    'tags': ['prod', 'v1'],
    'trace_metadata': {'user_type': 'premium'}
}

All metadata is exported as OpenTelemetry span attributes with 'langfuse.*' prefix for easy filtering and analysis in the Langfuse UI.

* Fix ruff linting error

* test(langfuse-otel): Fix failing test and add comprehensive metadata tests

- Fix test_set_langfuse_environment_attribute to use positional arguments
  instead of keyword arguments when asserting safe_set_attribute calls
- Add test_extract_langfuse_metadata_basic to verify metadata extraction
  from litellm_params
- Add test_extract_langfuse_metadata_with_header_enrichment to test
  integration with header-based metadata using a stubbed LangFuseLogger
- Add test_set_langfuse_specific_attributes_full_mapping to comprehensively
  test all metadata field mappings and JSON serialization of complex types

These tests ensure full coverage of the langfuse_otel metadata features
added in commit ab1dbe355 and fix the CI test failure.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-07-28 16:53:36 -07:00
..
basic_proxy_startup_tests
batches_tests openai.ConflictError 2025-07-12 17:07:21 -07:00
code_coverage_tests [Feat] Backend Router - Add Auto-Router powered by semantic-router (#12955) 2025-07-24 18:32:56 -07:00
documentation_tests
enterprise [Prometheus] Move Prometheus to enterprise folder (#12659) 2025-07-18 11:54:47 -07:00
guardrails_tests feat: Add Pillar Security guardrail integration (#12791) 2025-07-22 23:17:33 -07:00
image_gen_tests [Feat] Add Recraft API - Image Edits Support (#12874) 2025-07-22 15:03:08 -07:00
litellm_utils_tests [Bug Fix] Always include tool calls in output of trim_messages (#11517) 2025-07-17 16:01:59 -07:00
litellm-proxy-extras
llm_responses_api_testing test_basic_openai_responses_api_streaming 2025-07-19 15:30:03 -07:00
llm_translation VertexAI - camelcase optional params for image generation + Anthropic - streaming, always ensure assistant role set on only first chunk (#12889) 2025-07-27 10:09:43 -07:00
load_tests test: test_embedding_performance 2025-05-14 21:31:07 -07:00
local_testing VertexAI - camelcase optional params for image generation + Anthropic - streaming, always ensure assistant role set on only first chunk (#12889) 2025-07-27 10:09:43 -07:00
logging_callback_tests add fix for redaction (#13005) 2025-07-25 17:48:48 -07:00
mcp_tests [MCP Gateway] Litellm mcp multi header propagation (#13003) 2025-07-26 11:45:14 -07:00
multi_instance_e2e_tests
old_proxy_tests/tests
openai_endpoints_tests Batches - support batch retrieve with target model Query Param + Anthropic - completion bridge, yield content_block_stop chunk (#12228) 2025-07-01 22:13:48 -07:00
otel_tests test_bedrock_guardrail_triggered 2025-07-09 17:05:06 -07:00
pass_through_tests test_anthropic_basic_completion_with_headers ci/cd fix 2025-07-12 11:08:03 -07:00
pass_through_unit_tests test fix - test_anthropic_messages_passthrough.py 2025-06-30 21:56:31 -07:00
proxy_admin_ui_tests Fix e2e test (#12549) 2025-07-12 10:42:57 -07:00
proxy_security_tests
proxy_unit_tests test: fix test 2025-07-27 09:52:22 -07:00
router_unit_tests [Feat] Edit Auto Router Settings on UI (#12966) 2025-07-24 21:25:48 -07:00
scim_tests
spend_tracking_tests
store_model_in_db_tests [MCP Gateway] add Litellm mcp alias for prefixing (#12994) 2025-07-25 17:57:52 -07:00
test_litellm feat(langfuse-otel): Add comprehensive metadata support to Langfuse OpenTelemetry integration (#12956) 2025-07-28 16:53:36 -07:00
unified_google_tests [Bug Fix] Using gemini-cli with Vertex Anthropic Models (#12246) 2025-07-03 12:29:27 -07:00
vector_store_tests [Feat] UI Vector Stores - Allow adding Vertex RAG Engine, OpenAI, Azure (#12752) 2025-07-18 18:25:26 -07:00
windows_tests [Bug Fix] UnicodeDecodeError: 'charmap' on Windows during litellm import (#10542) 2025-05-03 21:31:05 -07:00
__init__.py [Feat] Add github co-pilot as a new LLM API provider (#12325) 2025-07-04 13:12:16 -07:00
gettysburg.wav
large_text.py
openai_batch_completions.jsonl
README.MD
test_budget_management.py Update enduser spend and budget reset date based on budget duration (#8460) 2025-06-08 08:39:14 -07:00
test_callbacks_on_proxy.py
test_config.py
test_debug_warning.py
test_end_users.py
test_entrypoint.py
test_fallbacks.py Ollama Chat - parse tool calls on streaming (#11171) 2025-05-27 16:14:49 -07:00
test_health.py
test_keys.py test: temporarily skip test due to change testing model change - need to update test for new model 2025-05-09 09:02:08 -07:00
test_logging.conf
test_models.py Add model access groups on UI (#11719) 2025-06-13 21:20:25 -07:00
test_openai_endpoints.py test_proxy_all_models 2025-07-23 07:11:35 -07:00
test_organizations.py UI - fix adding vertex models with reusable credentials + fix pagination on keys table + fix showing org budgets on table (#10528) 2025-05-03 08:16:53 -07:00
test_passthrough_endpoints.py
test_ratelimit.py
test_resource_cleanup.py Fix: Properly close aiohttp client sessions to prevent resource leaks (#12251) 2025-07-09 09:25:17 -07:00
test_spend_logs.py
test_team_logging.py
test_team_members.py
test_team.py build: publish new litellm-proxy-extras file 2025-05-27 17:44:23 -07:00
test_users.py test: fix imports 2025-05-26 22:06:53 -07:00

In total litellm runs 1000+ tests

[02/20/2025] Update:

To make it easier to contribute and map what behavior is tested,

we've started mapping the litellm directory in tests/litellm

This folder can only run mock tests.