@weave.op 데코레이터를 적용하여 Weave가 함수의 입력, yield된 출력, 중첩된 Call의 전체 계층 구조를 캡처하도록 하는 방법을 설명합니다. 스트리밍 방식이거나 지연 평가되는 코드 경로의 출력을 Weights & Biases UI에서 다른 트레이스와 함께 살펴보려는 경우에 활용하세요.
- Python
- TypeScript
deeply_nested_generator, nested_generator, inner Op을 확인할 수 있습니다.
제너레이터 소비
다음 섹션에서는 Weave가 제너레이터의 출력을 기록하려면 제너레이터를 소비해야 하는 이유와 사용 가능한 소비 패턴을 설명합니다. Weave는 제너레이터를 완전히 소비한 후에만 제너레이터의 출력을 캡처합니다. 제너레이터를 순회하여 소비하세요(예를 들어list(), for 루프 또는 값이 소진될 때까지 next()를 사용하세요). 비동기 제너레이터에도 async for 또는 이에 상응하는 소비 방식을 사용할 때 동일하게 적용됩니다.
@weave.op으로 함수와 메서드를 데코레이팅하는 방법에 대한 자세한 내용은 Call 생성을 참조하세요.
yield된 값을 단일 트레이스로 누적하기
Weave가 yield된 값의 원시 시퀀스 대신 결합된 결과(예: 이어 붙인 문자열이나 목록)를 기록하도록 하려면 accumulator를 사용하세요.weave.op의 accumulator 매개변수를 사용하면 제너레이터 함수에서 yield된 값을 결합하는 방식을 사용자 지정할 수 있습니다. 예를 들어, 스트리밍되는 텍스트 토큰을 하나의 문자열로 이어 붙일 수 있습니다. accumulator는 인수 두 개를 받는 함수로, Weave가 yield된 값마다 한 번씩 호출하여 결과를 점진적으로 구성합니다.
TypeScript에서는
accumulator 매개변수를 사용할 수 없습니다.