@weave.op() 데코레이터(Python)를 사용하거나 weave.op()으로 래핑(TypeScript)하여 이러한 중첩 함수와 부모-자식 관계를 추적할 수 있습니다.
애플리케이션의 전체 실행 흐름을 캡처하려면 함수와 하위 함수에 최대한 세분화하여 데코레이터를 적용하세요. 그러면 애플리케이션의 동작을 더 잘 파악하고 원하는 방향으로 개선할 수 있습니다.
중첩 함수 트레이스
이 섹션에서는 함수와 그 안에 중첩된 하위 함수를 트레이스하는 예시를 단계별로 살펴봅니다. 다음 코드는 퀵스타트 예시를 확장한 것으로, LLM이 반환한 항목의 개수를 세고 이를 상위 수준 함수로 래핑하는 로직을 추가합니다. 또한weave.op()를 사용하여 모든 함수와 각 함수의 호출 순서, 부모-자식 관계를 트레이스합니다.
- Python
- TypeScript
extract_dinos, count_dinos)의 입력과 출력은 물론, 자동으로 로깅된 OpenAI 트레이스도 표시됩니다.
메타데이터 추적
이제 Weave가 중첩 함수를 트레이스하므로, 사용자나 환경 같은 run 관련 컨텍스트를 추가해 트레이스를 더 풍부하게 만들 수 있습니다. 메타데이터를 추적하려면weave.attributes 컨텍스트 관리자를 사용하고, 호출 시점에 추적할 메타데이터를 딕셔너리로 전달하세요.
이전 예시를 이어서 살펴보겠습니다.
- Python
- TypeScript
사용자 ID나 코드의 실행 환경(개발, 스테이징, 프로덕션) 같은 메타데이터는 런타임에 추적하세요.system 프롬프트 같은 시스템 설정을 추적하려면 Weave Models를 사용하세요.
다음 단계
- App Versioning 튜토리얼을 따라 즉석에서 수행한 프롬프트, 모델, 애플리케이션 변경 사항을 캡처하고 버전별로 관리하며 체계적으로 정리해 보세요.