메인 콘텐츠로 건너뛰기
Weave 데이터셋을 사용하면 LLM 애플리케이션 평가를 위한 예제를 체계화하고, 수집하고, 추적하고, 버전 관리하여 쉽게 비교할 수 있습니다. Dataset은 프로그래밍 방식과 UI에서 모두 생성하고 사용할 수 있습니다. 이 페이지에서는 다음을 다룹니다:
  • Python과 TypeScript에서 기본적인 Dataset 작업과 시작하는 방법
  • Weave calls 같은 객체로부터 Python과 TypeScript에서 Dataset을 생성하는 방법
  • UI에서 Dataset에 대해 사용할 수 있는 작업

Dataset 퀵스타트

다음 코드 예시는 Python과 TypeScript를 사용하여 기본적인 Dataset 작업을 수행하는 방법을 보여줍니다. SDK를 사용하면 다음을 수행할 수 있습니다:
  • Dataset 생성
  • Dataset 게시
  • Dataset 조회
  • Dataset에서 특정 예제에 접근
탭을 선택하여 Python 및 TypeScript별 코드를 확인하세요.
import weave
from weave import Dataset
# Weave 초기화
weave.init('intro-example')

# 데이터셋 생성
dataset = Dataset(
    name='grammar',
    rows=[
        {'id': '0', 'sentence': "He no likes ice cream.", 'correction': "He doesn't like ice cream."},
        {'id': '1', 'sentence': "She goed to the store.", 'correction': "She went to the store."},
        {'id': '2', 'sentence': "They plays video games all day.", 'correction': "They play video games all day."}
    ]
)

# 데이터셋 게시
weave.publish(dataset)

# 데이터셋 조회
dataset_ref = weave.ref('grammar').get()

# 특정 예제에 접근
example_label = dataset_ref.rows[2]['sentence']

다른 객체에서 Dataset 만들기

Python에서는 Datasetcalls 같은 일반적인 Weave 객체나 pandas.DataFrame과 같은 Python 객체로부터도 생성할 수 있습니다. 이 기능은 특정 예시들로부터 예제 Dataset을 만들고 싶을 때 유용합니다.

Weave call

하나 이상의 Weave call로부터 Dataset을 생성하려면, call 객체를 가져온 뒤 from_calls 메서드에 리스트로 전달하면 됩니다.
@weave.op
def model(task: str) -> str:
    return f"Now working on {task}"

res1, call1 = model.call(task="fetch")
res2, call2 = model.call(task="parse")

dataset = Dataset.from_calls([call1, call2])
# 이제 이 데이터셋을 사용해 모델을 평가하는 등으로 활용할 수 있습니다.

Pandas DataFrame

Pandas DataFrame 객체로부터 Dataset을 생성하려면 from_pandas 메서드를 사용합니다.Dataset을 다시 변환하려면 to_pandas를 사용합니다.
import pandas as pd

df = pd.DataFrame([
    {'id': '0', 'sentence': "He no likes ice cream.", 'correction': "He doesn't like ice cream."},
    {'id': '1', 'sentence': "She goed to the store.", 'correction': "She went to the store."},
    {'id': '2', 'sentence': "They plays video games all day.", 'correction': "They play video games all day."}
])
dataset = Dataset.from_pandas(df)
df2 = dataset.to_pandas()

assert df.equals(df2)

Hugging Face Datasets

Hugging Face datasets.Dataset 또는 datasets.DatasetDict 객체로부터 Dataset을 생성하려면, 먼저 필요한 의존성이 설치되어 있는지 확인합니다:
pip install weave[huggingface]
그런 다음 from_hf 메서드를 사용합니다. 여러 개의 split(예: ‘train’, ‘test’, ‘validation’)을 가진 DatasetDict를 전달하면, Weave는 자동으로 ‘train’ split을 사용하고 경고를 출력합니다. ‘train’ split이 없으면 오류를 발생시킵니다. 특정 split을 직접 제공할 수도 있습니다(예: hf_dataset_dict['test']).weave.Dataset을 Hugging Face Dataset로 다시 변환하려면 to_hf 메서드를 사용합니다.
# datasets가 설치되어 있는지 확인: pip install datasets
from datasets import Dataset as HFDataset, DatasetDict

# HF Dataset 예시
hf_rows = [
    {'id': '0', 'sentence': "He no likes ice cream.", 'correction': "He doesn't like ice cream."},
    {'id': '1', 'sentence': "She goed to the store.", 'correction': "She went to the store."},
]
hf_ds = HFDataset.from_list(hf_rows)
weave_ds_from_hf = Dataset.from_hf(hf_ds)

# HF Dataset로 다시 변환
converted_hf_ds = weave_ds_from_hf.to_hf()

# HF DatasetDict 예시 ('train' split을 기본으로 사용)
hf_dict = DatasetDict({
    'train': HFDataset.from_list(hf_rows),
    'test': HFDataset.from_list([{'id': '2', 'sentence': "Test sentence", 'correction': "Test correction"}])
})
# 이 코드는 경고를 출력하고 'train' split을 사용합니다
weave_ds_from_dict = Dataset.from_hf(hf_dict)

# 특정 split을 제공하는 경우
weave_ds_from_test_split = Dataset.from_hf(hf_dict['test'])

UI에서 Dataset 생성, 편집 및 삭제

UI에서 Dataset을 생성, 편집, 삭제할 수 있습니다.

Dataset 만들기

  1. 편집하려는 Weave 프로젝트로 이동합니다.
  2. 사이드바에서 Traces를 선택합니다.
  3. Dataset을 만들고 싶은 호출을 하나 이상 선택합니다.
  4. 오른쪽 상단 메뉴에서 Add selected rows to a dataset 아이콘(휴지통 아이콘 옆에 있음)을 클릭합니다.
  5. Choose a dataset 드롭다운에서 Create new를 선택합니다. Dataset name 필드가 표시됩니다.
  6. Dataset name 필드에 데이터셋 이름을 입력합니다. 그러면 Configure dataset fields 옵션이 표시됩니다.
    데이터셋 이름은 영문자 또는 숫자로 시작해야 하며, 영문자, 숫자, 하이픈, 밑줄만 포함할 수 있습니다.
  7. (선택 사항) Configure dataset fields에서 데이터셋에 포함할 호출의 필드를 선택합니다.
    • 선택한 각 필드에 대해 열 이름을 사용자 지정할 수 있습니다.
    • Dataset에 포함할 필드의 부분 집합을 선택하거나, 모든 필드를 선택 해제할 수 있습니다.
  8. 데이터셋 필드를 구성했으면 Next를 클릭합니다. 새 Dataset의 미리 보기가 표시됩니다.
  9. (선택 사항) Dataset 내에서 편집 가능한 필드를 클릭하여 항목을 수정합니다.
  10. Create dataset을 클릭합니다. 새 데이터셋이 생성됩니다.
  11. 확인 팝업에서 View the dataset을 클릭하여 새 Dataset을 확인합니다. 또는 Datasets 탭으로 이동합니다.

Dataset 편집하기

  1. 편집하려는 Dataset이 포함된 Weave 프로젝트로 이동합니다.
  2. 사이드바에서 Datasets를 선택합니다. 사용 가능한 Dataset들이 표시됩니다. Dataset UI
  3. Object 열에서 편집하려는 Dataset의 이름과 버전을 클릭합니다. 이름, 버전, 작성자, Dataset 행 등 Dataset 정보를 보여주는 팝업 모달이 표시됩니다. Dataset 정보 보기
  4. 모달 오른쪽 상단에서 Edit dataset 버튼(연필 아이콘)을 클릭합니다. 모달 하단에 + Add row 버튼이 표시됩니다. Dataset UI - 행 추가 아이콘
  5. + Add row를 클릭합니다. 기존 Dataset 행의 맨 위에 초록색 행이 표시되며, Dataset에 새 행을 추가할 수 있음을 나타냅니다. Dataset UI
  6. 새 행에 데이터를 추가하려면 해당 행에서 원하는 열을 클릭합니다. Dataset 행의 기본 id 열은 Weave가 생성 시 자동으로 할당하므로 편집할 수 없습니다. 서식을 지정할 수 있도록 Text, Code, Diff 옵션이 있는 편집 모달이 나타납니다. Dataset UI - 열에 데이터 추가 및 서식 지정.
  7. 새 행에 데이터를 추가하려는 각 열에 대해 6단계를 반복합니다. Dataset UI - 모든 열에 데이터 추가.
  8. Dataset에 추가하려는 각 행에 대해 5단계를 반복합니다.
  9. 편집을 마쳤으면 모달 오른쪽 상단의 Publish를 클릭하여 Dataset을 게시합니다. 변경 사항을 게시하지 않으려면 Cancel을 클릭합니다. Dataset UI - 게시 또는 취소. 게시가 완료되면, 업데이트된 행이 포함된 새로운 버전의 Dataset을 UI에서 확인할 수 있습니다. Dataset UI - 게시된 메타데이터. Dataset UI - 게시된 행.

Dataset 삭제하기

  1. 편집하려는 Dataset이 포함된 Weave 프로젝트로 이동합니다.
  2. 사이드바에서 Datasets를 선택합니다. 사용 가능한 Dataset 목록이 표시됩니다.
  3. Object 열에서 삭제하려는 Dataset의 이름과 버전을 클릭합니다. 이름, 버전, 작성자, Dataset 행 등의 정보를 보여주는 모달 창이 오른쪽에 슬라이드되어 나타납니다.
  4. 모달의 오른쪽 상단 모서리에서 휴지통 아이콘을 클릭합니다. Dataset 삭제를 확인하라는 팝업 모달이 표시됩니다. Dataset UI - Confirm deletion modal.
  5. 팝업 모달에서 빨간색 Delete 버튼을 클릭해 Dataset을 삭제합니다. Dataset을 삭제하지 않으려면 Cancel을 클릭합니다. 이제 Dataset이 삭제되며, Weave 대시보드의 Datasets 탭에서 더 이상 보이지 않습니다.

Dataset에 새 예제 추가하기

  1. 수정하려는 Weave 프로젝트로 이동합니다.
  2. 사이드바에서 Traces를 선택합니다.
  3. 새 예제를 만들고 싶은 Datasets가 연결된 호출을 하나 이상 선택합니다.
  4. 오른쪽 상단 메뉴에서 Add selected rows to a dataset 아이콘(휴지통 아이콘 옆에 있음)을 클릭합니다. 필요하면 Show latest versions 토글을 끄고, 사용 가능한 모든 데이터셋의 모든 버전을 표시할 수 있습니다.
  5. Choose a dataset 드롭다운에서 예제를 추가하려는 Dataset을 선택합니다. 그러면 Configure field mapping 옵션이 표시됩니다.
  6. (선택 사항) Configure field mapping에서 호출의 필드를 해당 데이터셋 열에 매핑하는 방식을 조정할 수 있습니다.
  7. 필드 매핑 구성을 마쳤다면 Next를 클릭합니다. 새 Dataset의 미리 보기가 표시됩니다.
  8. 비어 있는 행(초록색)에 새 예제 값을 추가합니다. id 필드는 수정할 수 없으며, Weave에서 자동으로 생성된다는 점에 유의하세요.
  9. Add to dataset을 클릭합니다. 또는 Configure field mapping 화면으로 돌아가려면 Back을 클릭합니다.
  10. 확인 팝업에서 View the dataset을 클릭해 변경 내용을 확인합니다. 또는 Datasets 탭으로 이동하여 Dataset에 대한 업데이트를 확인할 수도 있습니다.

기타 데이터셋 작업

행 선택

select 메서드를 사용해 Dataset에서 인덱스로 특정 행을 선택할 수 있습니다. 이는 데이터의 하위 집합을 만들 때 유용합니다.
import weave
from weave import Dataset

# 예제 데이터셋 생성
dataset = Dataset(rows=[
    {'col_a': 1, 'col_b': 'x'},
    {'col_a': 2, 'col_b': 'y'},
    {'col_a': 3, 'col_b': 'z'},
    {'col_a': 4, 'col_b': 'w'},
])

# 인덱스 0과 2의 행 선택
subset_dataset = dataset.select([0, 2])

# 이제 subset_dataset에는 첫 번째와 세 번째 행만 포함됩니다
# print(list(subset_dataset))
# 출력: [{'col_a': 1, 'col_b': 'x'}, {'col_a': 3, 'col_b': 'z'}]