메인 콘텐츠로 건너뛰기
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에서는 calls 같은 일반적인 Weave 객체나 pandas.DataFrame 같은 Python 객체로도 Dataset을 생성할 수 있습니다. 이 기능은 특정 예제들로 예시 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])
# 이제 dataset을 사용해 모델을 평가하는 등의 작업을 할 수 있습니다.

Pandas DataFrame

Pandas DataFrame 객체에서 Dataset을 만들려면 from_pandas 메서드를 사용합니다.다시 DatasetDataFrame으로 변환하려면 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을 생성, 수정 및 삭제할 수 있습니다. Weave UI에서 데이터셋을 생성하면 코드를 편집하지 않고도 귀하와 팀의 비엔지니어링 구성원이 예시, 질문 및 기타 에이전트 테스트 데이터가 포함된 공유 가능한 데이터셋을 만들고 큐레이션할 수 있습니다.

Dataset 만들기

  1. 수정하려는 Weave 프로젝트로 이동합니다.
  2. 사이드바에서 Traces를 선택합니다.
  3. Dataset을 만들 call을 하나 이상 선택합니다.
  4. 오른쪽 상단 메뉴에서 Add selected rows to a dataset 아이콘(휴지통 아이콘 옆에 있음)을 클릭합니다.
  5. Choose a dataset 드롭다운에서 Create new를 선택합니다. 그러면 Dataset name 필드가 나타납니다.
  6. Dataset name 필드에 데이터셋 이름을 입력합니다. 그러면 Configure dataset fields 옵션이 표시됩니다.
    Dataset 이름은 문자 또는 숫자로 시작해야 하며, 문자, 숫자, 하이픈(-), 밑줄(_)만 포함할 수 있습니다.
  7. (선택 사항) Configure dataset fields에서 데이터셋에 포함할 call의 필드를 선택합니다.
    • 선택한 각 필드의 열 이름을 사용자 지정할 수 있습니다.
    • 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. 객체 열에서 편집할 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. 객체 열에서 삭제하려는 Dataset의 이름과 버전을 클릭합니다. 이름, 버전, 작성자, Dataset 행 등 Dataset 정보가 표시된 팝아웃 모달이 나타납니다.
  4. 모달 오른쪽 상단에서 휴지통 아이콘을 클릭합니다. Dataset 삭제를 확인하는 팝업 모달이 나타납니다. Dataset UI - 삭제 확인 모달.
  5. 팝업 모달에서 빨간색 Delete 버튼을 클릭해 Dataset을 삭제합니다. Dataset을 삭제하지 않으려면 Cancel을 클릭합니다. 이제 Dataset이 삭제되며, Weave 대시보드의 Datasets 탭에 더 이상 표시되지 않습니다.

Dataset에 새 예제 추가

  1. 편집하려는 Weave 프로젝트로 이동합니다.
  2. 사이드바에서 Traces를 선택합니다.
  3. 새 예제를 만들 Datasets가 있는 call을 하나 이상 선택합니다.
  4. 오른쪽 상단 메뉴에서 Add selected rows to a dataset 아이콘(휴지통 아이콘 옆에 있음)을 클릭합니다. 필요하면 Show latest versions를 꺼서 사용 가능한 모든 데이터셋의 전체 버전을 표시합니다.
  5. Choose a dataset 드롭다운에서 예제를 추가할 Dataset을 선택합니다. 그러면 Configure field mapping 옵션이 표시됩니다.
  6. (선택 사항) Configure field mapping에서 call의 필드를 해당 데이터셋 열에 매핑하는 방식을 조정할 수 있습니다.
  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'}]