1. TypedDict의 개념
TypedDict
는 Python 3.8에서 도입된 타입 힌팅 도구로, 딕셔너리에서 키와 값의 타입을 명시적으로 정의할 수 있게 해줍니다. 이는 런타임에서는 일반 딕셔너리처럼 동작하지만, 정적 타입 검사기(예: mypy
, pyright
)에서 키-값 쌍의 타입 일치 여부를 미리 검사할 수 있는 기능을 제공합니다.
주요 특징:
- 딕셔너리에서 각 필드의 타입을 명시적으로 정의.
- 타입 검사기를 통해 타입 불일치를 미리 확인.
- 선택적 필드와 필수 필드를 구분할 수 있음.
- 코드의 가독성과 유지보수성 향상.
예시:
from typing import TypedDict, NotRequired
# Person 딕셔너리를 정의
class Person(TypedDict):
name: str
age: NotRequired[int] # 선택적 필드
person: Person = {"name": "Alice"}
2. TypedDict와 LangSmith의 관계
LangSmith는 LangChain과 LLM(대형 언어 모델)의 성능을 모니터링하고 피드백을 수집하여 모델을 개선하는 도구입니다. TypedDict와의 관계는 데이터 구조를 명확하게 정의함으로써 데이터의 타입 안전성을 제공하고, 피드백 데이터의 구조를 보다 체계적으로 관리하는 데 도움이 됩니다.
관계:
- 데이터 스키마 정의: LangSmith에서 피드백 데이터나 LLM의 입력 및 출력 데이터를 TypedDict를 사용해 타입 안전성을 확보.
- 타입 힌팅을 통한 오류 방지: 피드백이나 모델 입력 데이터에 대해 정적 타입 검사를 통해 잘못된 타입 사용을 방지할 수 있음.
예시:
from typing import TypedDict
# LLM 응답을 저장할 구조 정의
class LLMResponse(TypedDict):
query: str
response: str
model_name: str
timestamp: str
response: LLMResponse = {
"query": "What is the capital of France?",
"response": "Paris",
"model_name": "gpt-4",
"timestamp": "2024-09-05T14:30:00Z"
}
3. PDF 데이터를 기반으로 TypedDict 생성 코드 예시
아래 코드는 PDF 문서의 데이터를 추출한 후 TypedDict를 사용해 데이터를 구조화하는 방법입니다. PDF에서 데이터를 추출한 후, 이를 TypedDict로 구조화하여 타입 안전성을 보장합니다.
from typing import TypedDict, List
import pdfplumber # PDF에서 데이터를 추출하는 라이브러리
# TypedDict 정의: PDF 데이터 구조
class PDFMetadata(TypedDict):
title: str
author: str
pages: int
class PDFPage(TypedDict):
page_number: int
content: str
class PDFDocument(TypedDict):
metadata: PDFMetadata
pages: List[PDFPage]
# PDF 데이터를 읽어서 TypedDict로 변환하는 함수
def pdf_to_typeddict(file_path: str) -> PDFDocument:
with pdfplumber.open(file_path) as pdf:
# PDF 메타데이터 추출
metadata = PDFMetadata(
title=pdf.metadata.get("Title", "Unknown"),
author=pdf.metadata.get("Author", "Unknown"),
pages=len(pdf.pages)
)
# 각 페이지의 텍스트 추출
pages = [
PDFPage(page_number=i + 1, content=page.extract_text() or "")
for i, page in enumerate(pdf.pages)
]
# PDFDocument TypedDict 생성
pdf_data: PDFDocument = {
"metadata": metadata,
"pages": pages
}
return pdf_data
# 사용 예시
pdf_file = "sample.pdf"
pdf_data = pdf_to_typeddict(pdf_file)
# 출력된 PDF 데이터 확인
print(pdf_data)
설명:
- pdfplumber 라이브러리를 사용해 PDF에서 텍스트와 메타데이터를 추출.
- 추출된 데이터를 TypedDict로 구조화하여 각 필드에 타입을 명확히 정의.
- PDF의 메타데이터(제목, 저자, 페이지 수)와 페이지별 텍스트를 각각 TypedDict에 담음.
결론
- TypedDict는 딕셔너리의 타입을 명확히 정의하여, 타입 안전성과 정적 타입 검사를 제공하는 도구입니다.
- LangSmith와 함께 사용할 때, 피드백 데이터나 모델 입력 데이터를 체계적으로 관리할 수 있습니다.
- PDF 데이터를 TypedDict로 변환함으로써, 데이터를 타입 안전하게 처리할 수 있습니다.
'사용툴 분석' 카테고리의 다른 글
RabbitMQ로 우선순위 큐 실제 적용해보자 (0) | 2024.10.02 |
---|---|
메타데이터 활용한 코딩들 (0) | 2024.10.02 |
VScode에 공짜 로컬 GPT 연결하기(continue) (0) | 2024.08.02 |
개발 환경과 유용한 툴 설명 (0) | 2024.07.26 |
PsExec 이란? (0) | 2024.07.17 |