Skip to main content
트레이스는 애플리케이션이 입력에서 출력까지 진행하는 일련의 단계입니다. 이러한 개별 단계는 각각 하나의 실행(run)으로 표현됩니다. LangSmith를 사용하여 이러한 실행 단계를 시각화할 수 있습니다. 사용하려면 애플리케이션에 대한 트레이싱을 활성화하세요. 이를 통해 다음 작업을 수행할 수 있습니다:

사전 요구사항

시작하기 전에 다음이 필요합니다:

트레이싱 활성화

애플리케이션에 대한 트레이싱을 활성화하려면 다음 환경 변수를 설정하세요:
export LANGSMITH_TRACING=true
export LANGSMITH_API_KEY=<your-api-key>
기본적으로 트레이스는 default라는 이름의 프로젝트에 기록됩니다. 사용자 정의 프로젝트 이름을 구성하려면 프로젝트에 기록을 참조하세요. 자세한 내용은 LangGraph로 트레이스를 참조하세요.

선택적 트레이싱

LangSmith의 tracing_context 컨텍스트 매니저를 사용하여 특정 호출이나 애플리케이션의 일부만 트레이싱하도록 선택할 수 있습니다:
import langsmith as ls

# 이것은 트레이싱됩니다
with ls.tracing_context(enabled=True):
    agent.invoke({"messages": [{"role": "user", "content": "Send a test email to [email protected]"}]})

# 이것은 트레이싱되지 않습니다 (LANGSMITH_TRACING이 설정되지 않은 경우)
agent.invoke({"messages": [{"role": "user", "content": "Send another email"}]})

프로젝트에 로깅

전체 애플리케이션에 대한 사용자 정의 프로젝트 이름을 LANGSMITH_PROJECT 환경 변수를 설정하여 지정할 수 있습니다:
export LANGSMITH_PROJECT=my-agent-project
특정 작업에 대해 프로그래밍 방식으로 프로젝트 이름을 설정할 수 있습니다:
import langsmith as ls

with ls.tracing_context(project_name="email-agent-test", enabled=True):
    response = agent.invoke({
        "messages": [{"role": "user", "content": "Send a welcome email"}]
    })

트레이스에 메타데이터 추가

사용자 정의 메타데이터와 태그로 트레이스에 주석을 달 수 있습니다:
response = agent.invoke(
    {"messages": [{"role": "user", "content": "Send a welcome email"}]},
    config={
        "tags": ["production", "email-assistant", "v1.0"],
        "metadata": {
            "user_id": "user_123",
            "session_id": "session_456",
            "environment": "production"
        }
    }
)
tracing_context는 세밀한 제어를 위해 태그와 메타데이터도 허용합니다:
with ls.tracing_context(
    project_name="email-agent-test",
    enabled=True,
    tags=["production", "email-assistant", "v1.0"],
    metadata={"user_id": "user_123", "session_id": "session_456", "environment": "production"}):
    response = agent.invoke(
        {"messages": [{"role": "user", "content": "Send a welcome email"}]}
    )
이 사용자 정의 메타데이터와 태그는 LangSmith의 트레이스에 첨부됩니다.
트레이스를 사용하여 에이전트를 디버그하고, 평가하고, 모니터링하는 방법에 대해 자세히 알아보려면 LangSmith 문서를 참조하세요.

익명화를 사용하여 트레이스에 민감한 데이터 로깅 방지

민감한 데이터가 LangSmith에 기록되는 것을 방지하기 위해 마스킹할 수 있습니다. 익명화를 생성하고 구성을 사용하여 그래프에 적용할 수 있습니다. 이 예제는 LangSmith로 전송되는 트레이스에서 주민등록번호 형식 XXX-XX-XXXX와 일치하는 모든 내용을 삭제합니다.
Python
from langchain_core.tracers.langchain import LangChainTracer
from langgraph.graph import StateGraph, MessagesState
from langsmith import Client
from langsmith.anonymizer import create_anonymizer

anonymizer = create_anonymizer([
    # Matches SSNs
    { "pattern": r"\b\d{3}-?\d{2}-?\d{4}\b", "replace": "<ssn>" }
])

tracer_client = Client(anonymizer=anonymizer)
tracer = LangChainTracer(client=tracer_client)
# Define the graph
graph = (
    StateGraph(MessagesState)
    ...
    .compile()
    .with_config({'callbacks': [tracer]})
)

Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I