0Pricing
Learn AI with Python · 강의

요청과 응답을 위한 Pydantic 스키마

BaseModel, 필드 검증, 타입 힌트, response_model, 검증 오류 처리를 다룹니다.

요청과 응답을 위한 Pydantic 스키마은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

스키마를 사용하는 이유

원시 딕셔너리는 오류가 발생하기 쉽습니다. Pydantic 모델은 요청과 응답의 정확한 형태를 정의하고, 형식을 자동으로 검증하며, API를 문서화합니다. FastAPI는 이를 기본적으로 지원합니다.

BaseModel

Pydantic 스키마는 BaseModel을 상속합니다. 형식이 지정된 각 속성은 검증되는 필드가 되며, 잘못된 형식은 코드가 실행되기 전에 거부됩니다.

from pydantic import BaseModel

class PredictRequest(BaseModel):
    features: list[float]

요청 스키마

클라이언트가 보내야 하는 내용을 정의합니다. 여기서 features는 실수 목록이어야 하며, 모델 버전이나 요청 ID 같은 필드를 더 추가할 수도 있습니다.

class PredictRequest(BaseModel):
    features: list[float]
    model_version: str = "latest"

응답 스키마

API가 반환하는 내용을 정의하면 클라이언트에 안정적이고 문서화된 계약을 제공할 수 있습니다.

class PredictResponse(BaseModel):
    prediction: float
    probability: float

종단점에서 스키마 사용하기

요청 모델로 매개변수의 형식을 지정하면 FastAPI가 JSON 본문을 자동으로 구문 분석하고 검증하여 형식이 지정된 객체로 변환합니다.

from fastapi import FastAPI
app = FastAPI()

@app.post("/predict")
def predict(req: PredictRequest):
    pred = model.predict([req.features])[0]
    return {"prediction": pred, "probability": 0.92}

response_model 매개변수

경로 데코레이터에 response_model을 전달합니다. FastAPI는 출력이 스키마와 일치하는지 검증하고 필터링하여 추가 필드를 제거하며, /docs에 응답을 문서화합니다.

@app.post("/predict", response_model=PredictResponse)
def predict(req: PredictRequest) -> PredictResponse:
    return PredictResponse(prediction=1.0, probability=0.92)

특성 벡터에 list[float] 사용하기

특성의 형식을 list[float]으로 지정하면 추론 전에 Pydantic이 문자열이나 혼합 형식을 거부합니다. 이를 통해 모델 코드 깊숙한 곳이 아니라 경계에서 잘못된 입력을 포착할 수 있습니다.

오류에 HTTPException 사용하기

형식 검증은 통과했지만 업무 규칙을 위반한 경우(특성 개수가 잘못되었거나 알 수 없는 모델인 경우) 상태 코드와 메시지를 포함한 HTTPException을 발생시키세요.

from fastapi import HTTPException

@app.post("/predict")
def predict(req: PredictRequest):
    if len(req.features) != 4:
        raise HTTPException(status_code=422,
            detail="Expected exactly 4 features")
    return {"prediction": model.predict([req.features])[0]}

필드 검증기

field_validator는 필드에 대한 사용자 지정 규칙을 적용합니다. 예를 들어 종단점 로직이 실행되기도 전에 비어 있는 특성 목록을 거부할 수 있습니다.

from pydantic import BaseModel, field_validator

class PredictRequest(BaseModel):
    features: list[float]

    @field_validator("features")
    @classmethod
    def not_empty(cls, v):
        if not v:
            raise ValueError("features cannot be empty")
        return v

필드 제약 조건

최소 길이나 숫자 범위 같은 선언적 제약 조건에는 Field를 사용하세요. 이러한 제약 조건은 자동 생성된 문서에도 표시됩니다.

from pydantic import BaseModel, Field

class PredictRequest(BaseModel):
    features: list[float] = Field(min_length=1)

자동으로 반환되는 422 응답

요청이 Pydantic 검증에 실패하면 FastAPI가 추가 코드 없이 상세한 오류 본문과 함께 422 Unprocessable Entity를 자동으로 반환합니다. 이는 FastAPI가 제공하는 가장 큰 생산성 향상 요소 중 하나입니다.

빠른 확인

Pydantic 스키마 지식을 테스트해 보세요.

복습

요청과 응답에 사용할 BaseModel 스키마를 정의하고, 특성에 list[float]을 사용했으며, response_model을 적용하고, 업무 오류에는 HTTPException을 발생시켰습니다. 또한 필드 검증기를 추가했습니다. FastAPI는 잘못된 입력에 대해 422를 자동으로 반환합니다. 다음 주제는 모델을 불러오고 제공하는 방법입니다.

자주 묻는 질문

“요청과 응답을 위한 Pydantic 스키마” 강의는 무료인가요?

네 — “요청과 응답을 위한 Pydantic 스키마” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

“요청과 응답을 위한 Pydantic 스키마”에서 뭘 배우나요?

BaseModel, 필드 검증, 타입 힌트, response_model, 검증 오류 처리를 다룹니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“요청과 응답을 위한 Pydantic 스키마” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 머신러닝 엔지니어를 위한 FastAPI 기초
  2. 요청과 응답을 위한 Pydantic 스키마
  3. 머신러닝 모델 로드 및 제공
  4. 모델 API를 Docker 컨테이너로 만들기
← Learn AI with Python(으)로 돌아가기