메인 콘텐츠로 건너뛰기

Documentation Index

Fetch the complete documentation index at: https://wb-21fd5541-docs-2658.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

이 레퍼런스에서는 W&B Weave의 Call 객체 스키마를 설명합니다. Call를 쿼리하는 방법은 Call 쿼리 및 내보내기를 참조하세요.

Call 속성

아래 표는 Weave에서 Call의 주요 속성을 보여줍니다. 전체 구현은 다음을 참조하세요:
속성유형설명
idstring (uuid)Call의 고유 식별자
project_idstring (선택)연결된 프로젝트 식별자
op_namestring오퍼레이션 이름(레퍼런스일 수 있음)
display_namestring (선택)Call의 사용자 친화적인 이름
trace_idstring (uuid)이 Call이 속한 트레이스의 식별자
parent_idstring (uuid)부모 Call의 식별자
started_atdatetimeCall이 시작된 타임스탬프
attributesDict[str, Any]Call에 대한 사용자 정의 메타데이터 (실행 중에는 읽기 전용)
inputsDict[str, Any]Call의 입력 파라미터
ended_atdatetime (선택)Call이 종료된 타임스탬프
exceptionstring (선택)Call이 실패한 경우의 오류 메시지
outputAny (선택)Call의 출력
summaryOptional[SummaryMap]실행 후 요약 정보입니다. 실행 중에 이 값을 수정하여 커스텀 메트릭을 기록할 수 있습니다.
wb_user_idOptional[str]연결된 W&B 사용자 ID
wb_run_idOptional[str]연결된 W&B run ID
deleted_atdatetime (선택)해당하는 경우 Call이 삭제된 타임스탬프

속성 세부 정보

CallSchema 속성은 Call을 추적하고 관리하는 데 도움이 됩니다.
  • id, trace_id, parent_id 속성은 시스템 내에서 Call을 정리하고 서로 연관시키는 데 도움이 됩니다.
  • 시간 정보(started_at, ended_at)는 성능 분석에 활용됩니다.
  • attributesinputs 속성은 Call의 컨텍스트를 제공합니다. attributes는 Call이 시작되면 고정되므로, 호출 전에 weave.attributes() 컨텍스트 관리자를 사용하여 설정하세요. outputsummary는 출력을 캡처합니다.
  • wb_user_idwb_run_id를 사용해 Call을 W&B 사용자 및 run에 연결하세요.
이러한 속성을 함께 사용하면 프로젝트 전반에서 Call을 세부적으로 추적하고 분석할 수 있습니다.

Call summary 사용

summary 속성은 Call 실행 중에 값을 쓸 수 있는 딕셔너리입니다. Call이 완료되면 Weave는 사용자가 쓴 값과 자체적으로 계산한 데이터를 깊게 병합(deep merge)하여 결과를 저장합니다. 이 딕셔너리에는 두 개의 영역이 있습니다.
  • 맞춤형 키: call.summary["accuracy"] = 0.95처럼 call.summary에 직접 쓰는 모든 항목입니다. 이 값들은 summary dict의 최상위 레벨에 위치합니다.
  • summary["weave"]: Weave가 Call 완료 시 자동으로 채우는 예약 네임스페이스입니다. 이 키에는 직접 쓰지 마세요.
Weave는 모델 응답의 원시 LLM token 수를 summary["usage"]에도 캡처합니다(모델 이름을 키로 사용). 이는 공급자로부터 그대로 전달된 소스 데이터이며, Weave가 계산한 값이 아닙니다. summary["weave"] 안의 costs 필드는 Weave가 이 사용 데이터와 token 가격을 바탕으로 계산한 값입니다. summary["weave"] 안의 Weave 계산 필드:
Field설명
status실행 상태: SUCCESS, ERROR, RUNNING, 또는 DESCENDANT_ERROR입니다(Call은 성공했지만 하위 Call에서 오류가 발생한 경우).
latency_msstarted_atended_at 사이의 시간(밀리초)입니다. statusRUNNING이면 null입니다.
costssummary["usage"]와 token 가격 데이터를 바탕으로 계산한 모델별 비용 내역입니다. 비용 추적을 참조하세요.
trace_name내부 Op 레퍼런스 URI에서 파싱한 사람이 읽기 쉬운 Op 이름입니다. 표시 및 필터링에 사용됩니다.

Call 실행 중에 작성하기

summary 딕셔너리를 사용하면 Call 실행 중에 맞춤형 데이터 값을 추가할 수 있습니다.
Python에서는 weave.get_current_call()을 사용해 실행 중 어느 시점에서나 call.summary에 값을 부여할 수 있습니다.
import weave

@weave.op()
def my_op(x):
    result = do_work(x)
    call = weave.get_current_call()
    # summary에 맞춤형 데이터 값을 추가합니다.
    call.summary["accuracy"] = 0.95
    call.summary["num_retries"] = 2
    return result

summary 데이터 조회

getCall로 ID를 사용해 단일 Call을 조회하거나, getCalls로 여러 Call을 조회할 수 있습니다. 두 경우 모두 summary는 동일한 병합된 딕셔너리입니다.
import weave
client = weave.init("my-team/my-project")

# ID로 단일 Call을 조회합니다.
call = client.get_call("<call-id>")
weave_summary = (call.summary or {}).get("weave", {})

print(weave_summary.get("status"))       # TraceStatus enum: SUCCESS, ERROR, RUNNING 또는 DESCENDANT_ERROR.
print(weave_summary.get("latency_ms"))   # Call이 아직 실행 중이면 null입니다.
print(weave_summary.get("costs"))        # 모델별 비용 세부 내역.
print(call.summary.get("usage"))         # LLM 공급자가 제공한 원시 token 수입니다.
print(call.summary.get("accuracy"))      # 사용자의 맞춤형 필드입니다.

# 서버 측 필터링을 사용해 여러 Call을 순회합니다.
for call in client.get_calls(filter={"op_names": ["weave:///my-team/my-project/op/my_op:*"]}):
    s = call.summary or {}
    weave_s = s.get("weave", {})
    print(call.id, weave_s.get("status"), weave_s.get("latency_ms"), s.get("accuracy"))