Datadog

Datadog

Haystack 파이프라인을 Datadog으로 트레이싱하는 방법을 알아봐요. DatadogTracer로 Haystack 실행을 Datadog 대시보드에서 볼 수 있어요.

출처: 문서

본문

  • 트레이서 클래스: DatadogTracer
  • 활성화 방법: tracing.enable_tracing(DatadogTracer(ddtrace.tracer)) 로 트레이서를 활성화하거나, DatadogConnector 컴포넌트를 파이프라인에 추가
  • 콘텐츠 트레이싱: HAYSTACK_CONTENT_TRACING_ENABLED 를 true 로 설정해 컴포넌트 입력·출력을 트레이싱
  • 패키지: datadog-haystack
  • API 참조: datadog

개요 (Overview)

Datadog의 트레이싱 라이브러리 ddtrace를 통해 Haystack 파이프라인을 트레이싱해요. Haystack은 파이프라인 실행에 대한 상세 정보(API 호출, 컨텍스트 데이터, 프롬프트 등)를 수집하므로, Datadog에서 파이프라인 실행의 전체 트레이스를 볼 수 있어요.

설치 (Installation)

datadog-haystack 패키지를 설치하세요:

pip install datadog-haystack

사전 조건 (Prerequisites)

트레이스를 받을 방법(예: 실행 중인 Datadog Agent)이 필요해요. ddtrace 는 기본적으로 localhost:8126 의 Datadog Agent로 트레이스를 보내요.

ddtrace 를 표준 메커니즘으로 구성하세요. 예를 들어 DD_SERVICE, DD_ENV, DD_VERSION 환경 변수를 쓰거나 ddtrace-run 명령으로 애플리케이션을 실행하면 돼요. 자세한 내용은 ddtrace 문서를 참고하세요.

사용법 (Usage)

DatadogTracer 를 직접 활성화하면 컴포넌트를 추가하지 않고도 모든 Haystack 파이프라인을 트레이싱할 수 있어요. Haystack 컴포넌트를 import 하기 전에 HAYSTACK_CONTENT_TRACING_ENABLED 환경 변수를 설정해야 해요.

import os
os.environ["HAYSTACK_CONTENT_TRACING_ENABLED"] = "true"

import ddtrace
from haystack import Pipeline, tracing
from haystack.components.builders import ChatPromptBuilder
from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.dataclasses import ChatMessage
from haystack_integrations.tracing.datadog import DatadogTracer

# Enable the Datadog tracer
tracing.enable_tracing(DatadogTracer(ddtrace.tracer))

pipe = Pipeline()
pipe.add_component("prompt_builder", ChatPromptBuilder())
pipe.add_component("llm", OpenAIChatGenerator())
pipe.connect("prompt_builder.prompt", "llm.messages")

messages = [
    ChatMessage.from_system(
        "Always respond in German even if some input data is in other languages.",
    ),
    ChatMessage.from_user("Tell me about {{location}}"),
]
response = pipe.run(
    data={
        "prompt_builder": {
            "template_variables": {"location": "Berlin"},
            "template": messages,
        },
    },
)
print(response["llm"]["replies"][0])

각 파이프라인 실행은 프롬프트, 완성(completion), 메타데이터를 포함한 전체 실행 컨텍스트를 담는 트레이스를 만들어요. 이후 Datadog 대시보드에서 트레이스를 볼 수 있어요.

대안: DatadogConnector 컴포넌트

트레이싱을 파이프라인 정의의 일부로 관리하고 싶다면(예: YAML로 직렬화되도록), 대신 DatadogConnector 컴포넌트를 추가할 수 있어요. 초기화되는 즉시 같은 Datadog 트레이싱을 활성화해요.

참고: 전체 사용 예시는 DatadogConnector 문서 페이지나 통합 페이지를 참고하세요.

더 알아보기 (Learn more)