이것은 인터랙티브 노트북입니다. 로컬에서 실행하거나 아래 링크를 사용할 수 있습니다:
3자 시스템에서 Traces 가져오기
때로는 GenAI 애플리케이션의 실시간 trace를 얻기 위해 Weave의 간편한 인테그레이션을 사용하여 Python 또는 Javascript 코드를 인스트루먼트(instrument)하는 것이 불가능할 수 있습니다. 이러한 trace가 나중에csv 또는 json 형식으로 제공되는 경우가 종종 있습니다.
이 쿡북에서는 CSV 파일에서 데이터를 추출하고 이를 Weave로 가져와 인사이트를 도출하고 엄격한 평가를 수행하기 위한 하위 수준의 Weave Python API를 살펴봅니다.
이 쿡북에서 가정하는 샘플 데이터셋의 구조는 다음과 같습니다:
conversation_id를 부모 식별자로, turn_index를 자식 식별자로 사용합니다.
필요에 따라 변수를 수정해야 합니다.
환경 설정
필요한 모든 패키지를 설치하고 임포트합니다.wandb.login()으로 쉽게 로그인할 수 있도록 WANDB_API_KEY를 환경 변수에 설정합니다 (Colab에서는 보안 비밀로 제공되어야 합니다).
Colab에 업로드할 파일 이름을 name_of_file에 설정하고, 이를 로그할 W&B 프로젝트를 name_of_wandb_project에 설정합니다.
참고: name_of_wandb_project는 trace를 기록할 팀을 지정하기 위해 {team_name}/{project_name} 형식을 사용할 수도 있습니다.
그런 다음 weave.init()을 호출하여 weave 클라이언트를 가져옵니다.
데이터 로딩
데이터를 Pandas 데이터프레임으로 로드하고, 부모와 자식이 올바르게 정렬되도록conversation_id와 turn_index를 기준으로 정렬합니다.
결과적으로 conversation_data 아래에 대화 턴(turns)이 배열로 포함된 두 개의 컬럼을 가진 Pandas DF가 생성됩니다.
Weave에 Traces 로그하기
이제 Pandas DF를 순회합니다:- 각
conversation_id에 대해 부모 call을 생성합니다. - 턴 배열을 순회하여
turn_index별로 정렬된 자식 call을 생성합니다.
- Weave call은 Weave trace와 동일하며, 이 call은 연결된 부모 또는 자식을 가질 수 있습니다.
- Weave call은 피드백, 메타데이터 등 다른 항목들과 연결될 수 있습니다. 여기서는 입력과 출력만 연결하지만, 데이터가 제공된다면 이러한 항목들을 추가할 수도 있습니다.
- Weave call은 실시간 추적을 위해 설계되었으므로
created및finished상태를 가집니다. 여기서는 사후에 가져오는 것이므로, 오브젝트가 정의되고 서로 연결되면 생성하고 종료합니다. - call의
op값은 Weave가 동일한 구성의 call을 분류하는 방식입니다. 이 예제에서 모든 부모 call은Conversation타입이고, 모든 자식 call은Turn타입입니다. 필요에 따라 이를 수정할 수 있습니다. - call은
inputs와output을 가질 수 있습니다.inputs는 생성 시 정의되고output은 call이 종료될 때 정의됩니다.
결과: Weave에 Traces가 로그됨
Traces:

보너스: 엄격한 평가를 실행하기 위해 trace 내보내기!
trace가 Weave에 저장되고 대화가 어떻게 진행되는지 파악했다면, 나중에 이를 다른 프로세스로 내보내 Weave Evaluations를 실행할 수 있습니다.
결과
