개요
- Python
- TypeScript
이 가이드의 예시에서는 어노테이션을 사용합니다. 어노테이션은 미디어 로깅을 가장 간단하게 시작할 수 있는 방법이므로 권장합니다. 고급 설정은 Content API 섹션을 참조하세요.Weave에 미디어를 로깅하려면 op의 입력 또는 반환 유형에
Annotated[bytes, Content]나 Annotated[str, Content] 같은 타입 어노테이션을 추가하세요. 경로 인수에 Annotated[str, Content] 어노테이션을 지정하면 Weave가 자동으로 미디어를 열고 감지하여 트레이스 안에 표시합니다.바이트를 Weave에 업로드하지 않고 자체 클라우드 버킷에 이미 저장된 미디어를 렌더링하려면 자체 버킷의 미디어 참조(BYOB)를 참조하세요.
이미지 로깅
다음 예시에서는 이미지를 생성하고 Weights & Biases UI에 로깅하는 방법을 보여줍니다.
- Python
- TypeScript
함수에 Weave는 이미지를 로깅한 뒤, 해당 이미지를 확인할 수 있는 트레이스 링크를 반환합니다.Weave는 크기가 조정된 이미지를 로깅하고, 해당 이미지를 확인할 수 있는 트레이스 링크를 반환합니다.
Annotated[bytes, Content] 유형을 어노테이션하거나 파일 경로에 Annotated[str, Content]를 어노테이션하여 이미지를 로깅하세요.다음 예시는 간단한 이미지를 그린 다음 Content 어노테이션을 사용해 Weave에 로깅합니다.고급 예시: DALL-E로 이미지를 생성하고 Weave에 로깅하기
다음 예시에서는 고양이 이미지를 생성한 뒤 Weave에 로깅합니다.고급 예시: 로깅 전에 큰 이미지 크기 조정하기
UI 렌더링 비용과 저장소 사용량을 줄이려면 이미지를 로깅하기 전에 크기를 조정하세요. 이미지 크기를 조정하려면@weave.op에서 postprocess_output을 사용하세요.비디오 로깅
다음 예시는 비디오를 생성하고 Weights & Biases UI에 로깅하는 방법을 보여 줍니다.
- Python
- TypeScript
함수에 Weave는 비디오를 로깅한 뒤, 해당 비디오를 확인할 수 있는 트레이스 링크를 반환합니다.Weave는 입력 비디오와 모델의 분석 결과를 모두 로깅하므로, 트레이스에서 둘을 함께 검토할 수 있습니다.
Annotated[bytes, Content] 유형 어노테이션을 지정하여 비디오를 로깅하세요. Weave는 mp4 비디오를 자동으로 처리합니다. 다음은 최소 예시입니다.고급 예시: 비디오 분석 프로젝트에서 비디오 로깅
다음 예시는 비디오 이해 프로젝트에서 비디오를 로깅하는 방법을 보여 줍니다.문서 로깅하기
다음 예시는 문서를 생성하여 Weights & Biases UI에 로깅합니다.
- Python
- TypeScript
함수에 Weave는 원본 PDF와 생성된 답변을 모두 로깅하므로, 각 응답의 근거가 된 문서를 감사할 수 있습니다.
Annotated[bytes, Content] 유형으로 어노테이션을 지정하거나, Annotated[str, Content[Literal['text']]]로 문서 유형을 지정하여 문서를 로깅하세요.Weave는 pdf, csv, md, text, json, xml 파일 유형을 자동으로 처리합니다. Annotated[str, Content]를 사용하면 파일 경로로도 로깅할 수 있습니다.다음 예시는 입력으로 받은 PDF 및 CSV 파일의 사본을 저장하고, 함수가 반환한 파일 내용도 함께 저장하는 방법을 보여줍니다.고급 예시: RAG 시스템에서 문서 로깅하기
이 예제는 RAG(Retrieval-Augmented Generation) 시스템에서 문서를 로깅하는 방법을 보여줍니다.오디오 로깅
다음 예시에서는 Weave에 오디오를 로깅하는 방법을 보여줍니다.
- Python
- TypeScript
함수에 이 오디오는 Weave에 로깅되며 UI에 오디오 플레이어와 함께 자동으로 표시됩니다. 오디오 플레이어에서 원본 오디오 파형을 확인하고 다운로드할 수 있습니다.
다음 예시는 OpenAI API의 스트리밍 응답을 사용해 오디오를 로깅하는 방법을 보여줍니다.
Annotated[bytes, Content] 유형 어노테이션을 지정하거나 Annotated[str, Content[Literal['mp3']]]로 오디오 유형을 지정하여 Weave에 오디오를 로깅하세요.Weave는 mp3, wav, flac, ogg, m4a 파일 유형을 자동으로 처리합니다. Annotated[str, Content]를 사용하면 파일 경로로도 로깅할 수 있습니다.다음 코드 스니펫은 사인파를 생성해 녹음한 다음, 그 오디오를 Weave에 로깅합니다.고급 예제: AI 생성 오디오를 만들고 로깅하기
이 예제는Content 어노테이션을 사용해 AI 생성 오디오를 만들고 로깅합니다.
HTML 로깅하기
다음 예시는 HTML을 생성하여 Weights & Biases UI에 로깅하는 방법을 보여줍니다.
- Python
- TypeScript
함수에
Annotated[bytes, Content[Literal['html']]] 어노테이션을 지정하여 대화형 HTML을 로깅하세요.다음 예시는 최소한의 HTML 페이지를 생성하여 Weave에 로깅합니다.고급 예시: Serverless Inference로 독립형 HTML 페이지를 생성하고 Weave에 로깅하기
이 예제는 Serverless Inference로 독립형 HTML 페이지를 생성한 뒤 Weave에 로깅합니다.file_name.html 셀을 클릭하면 전체 화면으로 볼 수 있으며, 원본 .html 파일을 다운로드할 수도 있습니다.
Contents API
Content API는 Weave에서 미디어 객체를 처리합니다. 앞에서 살펴본 어노테이션 기반 예시보다 더 세밀하게 제어해야 할 때 사용하세요. 예를 들어 base64 데이터, 맞춤형 바이트 버퍼, 텍스트에서 콘텐츠를 임포트하거나 맞춤형 메타데이터를 첨부해야 하는 경우에 적합합니다. Content API를 사용하면 base64 데이터, 파일 경로, 원시 바이트, 텍스트 형태로 콘텐츠를 Weave에 임포트할 수 있습니다.Content API는 Python에서만 사용 가능합니다.
사용
Content API는 크게 타입 어노테이션과 직접 초기화의 두 가지 방식으로 사용할 수 있습니다. 타입 어노테이션을 사용하면 적절한 생성자가 자동으로 감지됩니다. 반면 직접 초기화를 사용하면 더 세밀하게 제어할 수 있으며, 코드에서 Content API의 런타임 기능을 활용할 수 있습니다.타입 어노테이션
Weave Content API는 주로 타입 어노테이션을 통해 사용하도록 설계되었습니다. 타입 어노테이션은 트레이스된 입력과 출력을 콘텐츠 블롭으로 처리하여 저장하도록 Weave에 지시하는 역할을 합니다.직접 초기화
다음과 같은 기능을 활용하려면:- 기본 애플리케이션(예: PDF 뷰어)으로 파일 열기
- 모델을 JSON으로 덤프하여 자체 블롭 저장소(예: S3)에 업로드하기
Content블롭에 연결할 맞춤형 메타데이터(예: 콘텐츠 생성에 사용된 모델) 전달하기
Content.from_path- 파일 경로에서 생성합니다.Content.from_bytes- 원시 바이트에서 생성합니다.Content.from_text- 텍스트 문자열에서 생성합니다.Content.from_base64- base64로 인코딩된 데이터에서 생성합니다.
맞춤형 MIME 유형
Weave는 대부분의 바이너리 MIME 유형을 감지할 수 있지만, 맞춤형 MIME 유형이나 Markdown 같은 텍스트 문서는 자동으로 감지되지 않을 수 있습니다. 이 경우 파일의 MIME 유형 또는 확장자를 직접 지정해야 합니다.타입 어노테이션으로 맞춤형 MIME 유형 지정하기
직접 초기화로 맞춤형 MIME 유형 지정하기
Content 속성
클래스 속성과 메서드의 전체 목록은 Content 레퍼런스 문서를 참조하세요.속성
유틸리티 메서드
save(dest: str | Path) -> None: 콘텐츠를 파일에 저장합니다.open() -> bool: 시스템 기본 애플리케이션으로 파일을 엽니다(콘텐츠가 저장되었거나 경로에서 로드된 상태여야 합니다).as_string() -> str: 데이터를 문자열로 표시합니다(바이트는 encoding 속성에 지정된 인코딩으로 디코딩됩니다).
초기화 메서드
파일 경로로content 객체를 생성합니다:
content 객체를 생성합니다:
content 객체를 생성합니다:
content 객체를 생성합니다.