메인 콘텐츠로 건너뛰기

Ops

Op는 버전 관리되고 추적되는 함수입니다. 함수에 @weave.op()(Python) 데코레이터를 적용하거나 weave.op()(TypeScript)으로 감싸면, Weave가 해당 함수의 코드, 입력, 출력, 실행 메타데이터를 자동으로 캡처합니다. Ops는 트레이싱, evaluation scorer, 그리고 추적되는 모든 계산의 구성 요소입니다.
    @weave.op
    async def my_function(){
      ...  }

Calls

Call은 Op의 로깅된 실행 기록입니다. Op가 실행될 때마다 Weave는 다음을 캡처하는 Call을 생성합니다.
  • 입력 인수
  • 출력 값
  • 타이밍 및 지연 시간
  • 부모-자식 관계(중첩된 Call의 경우)
  • 발생한 모든 오류
Calls는 Weave UI에서 Traces로 표시되며, 디버깅, 분석, 평가를 위한 데이터를 제공합니다. 전체 Call 객체 구조와 속성은 Call 스키마 레퍼런스를 참조하세요. Calls는 OpenTelemetry 데이터 모델의 스팬(span)과 유사합니다. Call은 다음과 같은 특성을 가질 수 있습니다.
  • Trace에 속할 수 있습니다(같은 실행 컨텍스트에 있는 Call의 집합)
  • 부모 및 자식 Calls를 가질 수 있으며, 트리 구조를 형성합니다

트레이스

트레이스는 동일한 실행 컨텍스트를 공유하는 Call의 전체 트리입니다. 각 트레이스에는 전체 Call 트리를 가져오는 데 사용할 수 있는 ID(trace_id)가 포함됩니다. Call의 id만 사용해 Call 정보를 가져오면 지정된 Call에 대한 데이터만 반환되며, 해당 Call의 하위 Call 데이터는 반환되지 않습니다.

스레드

스레드는 단일 세션 또는 대화와 관련된 트레이스의 컬렉션입니다. 스레드를 사용하면 개별 Call이 아니라 [전체 대화] 전체를 대상으로 분석하거나 스코어링할 수 있습니다. 다음 다이어그램은 스레드, 트레이스, Call 간의 관계를 보여줍니다:
Thread: "session-abc"
  ├── Turn 1 (trace_id: aaa) → user says "Hi"
  │     ├── LLM call
  │     └── format response
  ├── Turn 2 (trace_id: bbb) → user says "What is the capitol of Paris?"
  │     ├── RAG retrieval
  │     ├── LLM call
  │     └── format response
  └── Turn 3 (trace_id: ccc) → user says "Thanks"
        └── LLM call