Skip to content

Commit

Permalink
feat: warn if LangfuseTracer initialized without tracing enabled (#1231)
Browse files Browse the repository at this point in the history
* feat: warn if LangfuseTracer initialized without tracing enabled

* test: warn when lagnfuse tracer init with tracing disabled
  • Loading branch information
isfuku authored Dec 10, 2024
1 parent 9283065 commit d3677be
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
from haystack import logging
from haystack.components.generators.openai_utils import _convert_message_to_openai_format
from haystack.dataclasses import ChatMessage
from haystack.tracing import Span, Tracer, tracer
from haystack.tracing import Span, Tracer
from haystack.tracing import tracer as proxy_tracer
from haystack.tracing import utils as tracing_utils

import langfuse
Expand Down Expand Up @@ -78,7 +79,7 @@ def set_content_tag(self, key: str, value: Any) -> None:
:param key: The content tag key.
:param value: The content tag value.
"""
if not tracer.is_content_tracing_enabled:
if not proxy_tracer.is_content_tracing_enabled:
return
if key.endswith(".input"):
if "messages" in value:
Expand Down Expand Up @@ -126,6 +127,12 @@ def __init__(self, tracer: "langfuse.Langfuse", name: str = "Haystack", public:
be publicly accessible to anyone with the tracing URL. If set to `False`, the tracing data will be private
and only accessible to the Langfuse account owner.
"""
if not proxy_tracer.is_content_tracing_enabled:
logger.warning(
"Traces will not be logged to Langfuse because Haystack tracing is disabled. "
"To enable, set the HAYSTACK_CONTENT_TRACING_ENABLED environment variable to true "
"before importing Haystack."
)
self._tracer = tracer
self._context: List[LangfuseSpan] = []
self._name = name
Expand Down
16 changes: 16 additions & 0 deletions integrations/langfuse/tests/test_tracer.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import datetime
import logging
import sys
from unittest.mock import MagicMock, Mock, patch

from haystack.dataclasses import ChatMessage
Expand Down Expand Up @@ -149,3 +151,17 @@ def test_context_is_empty_after_tracing(self):
pass

assert tracer._context == []

def test_init_with_tracing_disabled(self, monkeypatch, caplog):
# Clear haystack modules because ProxyTracer is initialized whenever haystack is imported
modules_to_clear = [name for name in sys.modules if name.startswith('haystack')]
for name in modules_to_clear:
sys.modules.pop(name, None)

# Re-import LangfuseTracer and instantiate it with tracing disabled
with caplog.at_level(logging.WARNING):
monkeypatch.setenv("HAYSTACK_CONTENT_TRACING_ENABLED", "false")
from haystack_integrations.tracing.langfuse import LangfuseTracer

LangfuseTracer(tracer=MockTracer(), name="Haystack", public=False)
assert "tracing is disabled" in caplog.text

0 comments on commit d3677be

Please sign in to comment.