메인 콘텐츠로 건너뛰기
이 노트북은 대화형 노트북입니다. 로컬에서 실행하거나 다음 링크를 사용할 수 있습니다:

서드파티 시스템에서 트레이스 가져오기

이 노트북에서는 CSV 파일의 과거 대화 트레이스를 W&B Weave로 가져와, Weave로 계측된 애플리케이션 외부에서 생성된 데이터를 분석하고, 모델 동작을 비교하며, 평가를 실행하는 방법을 보여줍니다. 경우에 따라서는 GenAI 애플리케이션의 실시간 트레이스를 획득하기 위해 Python 또는 JavaScript 코드를 Weave 인테그레이션으로 계측할 수 없습니다. 이런 트레이스는 나중에 CSV 또는 JSON 형식으로 제공되는 경우가 많습니다. 이 노트북에서는 저수준 Weave Python API를 사용하여 CSV 파일에서 데이터를 추출하고 이를 Weave로 가져와 분석하고 평가합니다. 이 쿡북에서 가정하는 샘플 데이터셋은 다음과 같은 구조를 가지고 있습니다:
이 notebook에서 import 방식을 어떻게 결정했는지 이해하려면, Weave 트레이스에는 1 대 다(1:Many)이면서 연속적인 부모-자식 관계가 있다는 점을 알아두어야 합니다. 즉, 하나의 부모가 여러 자식을 가질 수 있으며, 그 부모 자체도 또 다른 부모의 자식이 될 수 있습니다. 이 notebook에서는 완전한 대화 로깅을 제공하기 위해 부모 식별자로 conversation_id를, 자식 식별자로 turn_index를 사용합니다. 다음 섹션의 변수는 사용자의 데이터셋, 파일 경로, W&B 프로젝트에 맞게 반드시 수정해야 합니다.

환경 설정

필요한 패키지를 모두 설치하고 임포트하세요. 환경 변수에 WANDB_API_KEY를 설정해 wandb.login()으로 로그인할 수 있도록 하세요(이 값은 Colab에 시크릿으로 제공하세요). Colab에 업로드할 파일 이름을 name_of_file에 설정하고, 사용할 W&B 프로젝트를 name_of_wandb_project에 설정하세요.
name_of_wandb_project는 트레이스를 기록할 팀을 지정하기 위해 [TEAM_NAME]/[PROJECT_NAME] 형식으로도 설정할 수 있습니다.
그런 다음 weave.init()를 호출해 Weave 클라이언트를 가져오세요.

데이터 로드

환경이 준비되면 Weave에서 기대하는 부모-자식 구조에 맞게 CSV 데이터를 로드하고 형태를 정리할 수 있습니다. 데이터를 pandas 데이터프레임으로 로드한 다음, 부모와 자식이 올바른 순서로 정렬되도록 conversation_idturn_index를 기준으로 정렬하세요. 그러면 대화 턴이 conversation_data 아래 배열로 포함된 2개 열의 pandas 데이터프레임이 생성됩니다.

트레이스를 Weave에 기록하기

데이터를 대화와 턴 형태로 구성했다면, 다음 단계는 해당 레코드를 부모 Call과 자식 Call로 Weave에 기록하는 것입니다. pandas 데이터프레임을 순회합니다:
  • conversation_id마다 부모 Call을 생성합니다.
  • turn_index 순으로 정렬된 자식 Call을 생성하기 위해 턴 배열을 순회합니다.
하위 수준 Python API의 중요한 개념:
  • Weave Call은 Weave 트레이스와 동일합니다. 이 Call에는 부모가 있거나 연결된 자식이 있을 수 있습니다.
  • Weave Call에는 feedback 및 메타데이터처럼 다른 항목도 연결할 수 있습니다. 이 예제에서는 inputs와 output만 연결하지만, 데이터가 이를 제공하면 임포트할 때 이러한 항목도 추가할 수 있습니다.
  • Weave Call에는 createdfinished가 있습니다. 이는 실시간으로 추적되도록 설계되었기 때문입니다. 하지만 여기서는 사후 임포트이므로, 오브젝트를 정의하고 서로 연결한 다음 생성과 종료를 한 번에 처리합니다.
  • Call의 op 값은 Weave가 같은 형태의 Call을 분류하는 방식입니다. 이 예제에서는 모든 부모 Call의 유형이 Conversation이고, 모든 자식 Call의 유형이 Turn입니다. 필요에 따라 이를 수정할 수 있습니다.
  • Call에는 inputsoutput이 있을 수 있습니다. inputs는 생성 시 정의되고, output은 Call이 종료될 때 정의됩니다.

결과: Weave에 로깅된 트레이스

이제 CSV 데이터가 Weave로 임포트되었습니다. 이제 Weave UI에서 대화와 각 턴을 살펴볼 수 있으며, 앞에서 정의한 ConversationTurn 오퍼레이션 아래에 그룹화되어 표시됩니다. 트레이스:
Weave UI에 임포트된 대화 트레이스
오퍼레이션:
Weave UI의 Conversation 및 Turn 오퍼레이션

선택 사항: 평가 실행을 위해 트레이스 내보내기

트레이스가 Weave에 있고 대화가 어떤 형태인지 파악했다면, 이를 다른 프로세스로 내보내 Weave Evaluations를 실행할 수 있습니다.
Weave 프로젝트에서 트레이스 내보내기
이렇게 하려면 쿼리 API를 통해 W&B에서 모든 대화를 가져온 다음, 이를 바탕으로 데이터셋을 만드세요.

결과

내보낸 데이터셋이 이제 다시 Weave에 게시되었으며, 평가의 입력으로 사용할 수 있습니다.
평가에 사용할 수 있도록 Weave UI에 게시된 데이터셋
평가에 대해 더 자세히 알아보려면 새로 생성한 데이터셋으로 RAG 애플리케이션을 평가하는 방법을 소개하는 퀵스타트를 확인하세요.