객체
객체는 버전이 관리되는 직렬화 가능한 데이터입니다. Weave는 객체가 변경되면 자동으로 버전을 관리하고 변경 불가능한 이력을 생성합니다. 객체에는 다음이 포함됩니다:- 데이터셋: 평가를 위한 예시 컬렉션
- 모델: LLM 로직을 위한 설정 및 매개변수
- 프롬프트: 버전이 관리되는 프롬프트 템플릿
객체 게시
Weave의 직렬화 계층은 객체를 저장하고 버전 관리합니다.- Python
- TypeScript
객체 다시 조회하기
객체를 게시한 후에는 레퍼런스를 사용하여 저장된 객체를 가져올 수 있습니다.- Python
- TypeScript
weave.publish()는 Ref를 반환합니다. 모든 Ref에서 .get()을 호출하여 객체를 다시 가져올 수 있습니다.ref를 직접 생성한 다음 객체를 가져올 수도 있습니다.객체 삭제
더 이상 특정 객체 버전이 필요하지 않다면 ref를 사용하여 제거할 수 있습니다.- Python
- TypeScript
객체의 버전을 삭제하려면 객체의 ref에서 삭제된 객체에 액세스하면 오류가 반환됩니다. 삭제된 객체를 참조하는 객체를 해결하면 삭제된 객체 대신
.delete()를 호출하세요.DeletedRef가 반환됩니다.객체 ref 구성
Ref는 저장된 객체와 버전을 고유하게 파악하는 데 사용됩니다. 다음 섹션에서는 URI 구조와 ref를 구성하는 방법을 설명합니다. Weave에서 완전 수식된 객체 ref URI는 다음과 같습니다:[YOUR-TEAM-NAME]: Weights & Biases entity (사용자 이름 또는 팀 이름)[YOUR-PROJECT-NAME]: Weights & Biases 프로젝트[OBJECT-NAME]: 객체 이름[OBJECT-VERSION]: 버전 해시,v0또는v1과 같은 문자열, 또는:latest와 같은 별칭입니다. 모든 객체에는:latest별칭이 있습니다. 직접 별칭을 만들려면 태그와 별칭으로 객체 버전 정리하기를 참조하세요.
weave.ref([NAME]): 객체의:latest버전을 가져옵니다.weave.init(...)호출이 필요합니다.weave.ref([NAME]:[VERSION]): 객체의 지정된 버전을 가져옵니다.weave.init(...)호출이 필요합니다.weave.ref([FULLY-QUALIFIED-REF-URI]): 지정된 완전 수식된 객체 ref URI에 있는 객체를 가져옵니다.weave.init()호출이 필요하지 않습니다.
태그와 별칭으로 객체 버전 정리하기
태그와 별칭을 사용하면Dataset, Model, Prompt를 비롯해 weave.publish로 게시한 모든 Weave 객체의 특정 버전에 레이블을 지정할 수 있습니다. 이러한 레이블은 모든 ObjectRef에서 작동하므로 객체 유형에 관계없이 동일한 API를 사용할 수 있습니다.
- 별칭: 단일 버전을 가리키는 고유한 이름입니다. 별칭은 언제든지 다른 버전으로 옮길 수 있으므로
production이나staging처럼 고정된 이름으로 참조할 때 유용합니다. 모든 객체에는 최신 버전을 가리키는:latest별칭이 자동으로 부여됩니다. - 태그: 버전에 연결되는 설명용 레이블입니다. 하나의 버전에 여러 태그를 지정할 수 있고, 동일한 태그를 여러 버전에 지정할 수도 있습니다.
reviewed,passed-eval처럼 버전을 분류하고 필터링할 때 태그를 사용하세요.
이름 지정 규칙
객체 이름, 태그, 별칭은 다음 규칙을 따라야 합니다. Weave는 이 규칙을 위반하는 태그나 별칭을 거부합니다.
Python SDK는 객체를 게시하기 전에 이름이 다음 규칙에 맞는지 검사하고 필요하면 이름을 변환합니다.
- 문자, 숫자, 밑줄, 마침표 이외의 문자가 연속된 부분을 각각 하이픈 하나로 바꿉니다.
- 마침표, 밑줄, 하이픈이 두 개 이상 연속된 부분을 각각 하이픈 하나로 바꿉니다.
- 이름의 앞뒤에 있는 하이픈과 밑줄을 제거합니다.
- 그래도 이름이 128자를 초과하면 앞의 128자만 남기고 경고를 로깅합니다.
weave.publish()에서 ValueError가 발생합니다. weave.publish()가 반환하는 ref에는 변환된 이름이 담겨 있으므로, 객체를 다시 조회할 때는 이 이름을 사용하세요.
TypeScript SDK는 client.publish()에 전달한 이름을 변환하지 않습니다. 이름이 객체 이름 규칙을 위반하면 요청이 실패합니다.
Op 이름 및 Call 표시 이름 제한은 이름 길이 제한을 참조하세요.