LLM 엔지니어링13장 · REST API 와 FastAPI9 / 22← 이전목차다음 →MetaContents

13장. REST API 와 FastAPI

예측 API 의 짜임

약국에서 처방전을 내면 약사는 처방전을 확인하고, 약을 짓고, 복용법을 적어 줍니다. 예측 API 도 요청을 검사하고, 모델이 읽는 표로 바꾸고, 예측하고, 결과를 쓰기 좋은 꼴로 돌려줍니다.

요청을 받아, 입력을 검사하고, 표로 바꾸고, 모델로 예측하고, 확률과 판을 담아 응답하는 다섯 단계 흐름도

1번에서 주문 JSON 을 받고, 2번에서 Pydantic 이 검사합니다. 3번에서 검사한 값을 학습 때와 같은 열 이름의 pandas 표 한 줄로 바꿉니다. 4번에서 모델이 지연 확률을 계산하고, 5번에서 확률, 기준값으로 정한 예상, 모델의 판을 담아 돌려줍니다. 여기서 처방전 확인이 입력 검사, 약 짓기가 예측, 복용법이 응답의 꼴입니다.

이 장의 엔드포인트

엔드포인트받는 것돌려주는 것
GET /health없음상태와 모델의 판. 서버가 살아 있는지 감시할 때
GET /model없음판, 특성, 기준값, 시험 성능
POST /predict주문 하나지연 확률, 지연 예상, 기준값, 판
POST /predict/batch주문 최대 500개건수와 주문마다의 결과

응답의 꼴

Python
prob, threshold = 0.6143, 0.5
# 확률은 그대로, 판단은 기준값으로, 어떤 모델의 답인지는 판으로
response = {"지연확률": round(prob, 3), "지연예상": prob >= threshold, "기준값": threshold, "판": "delay-lr-1"}
print(response)

코드에 나오는 함수

코드쉬운 뜻
prob, threshold = 0.6143, 0.5설명용 확률과 기준값(threshold, 문턱)이다
round(prob, 3)확률을 소수 셋째 자리까지 반올림한다
prob >= threshold확률이 기준값 이상이면 True, 아니면 False 다
"판": "delay-lr-1"어떤 모델이 낸 답인지 알리는 모델의 판(version) 이름이다

이 코드가 뜻하는 것

일기예보는 "비 올 확률 60%"와 함께 "우산을 챙기세요" 같은 한마디를 덧붙이고, 몇 시에 발표한 예보인지도 알려 줍니다. 여기서 비 올 확률이 지연확률, 우산을 챙기라는 한마디가 지연예상, 우산을 챙기는 문턱이 기준값, 발표 시각이 모델의 판입니다. 다만 예보는 듣는 사람이 문턱을 고를 수 없지만, 이 API 는 확률을 함께 주므로 부르는 쪽이 자기 기준값을 따로 쓸 수 있습니다.

줄하는 일쉽게 말하면
prob, threshold = ...모델이 낸 확률과 정해 둔 기준값비 올 확률과 우산 문턱
"지연확률": round(prob, 3)확률은 그대로 담는다확률 숫자
"지연예상": prob >= threshold기준값으로 판단한 결과를 담는다우산을 챙길까
"기준값", "판"판단의 기준과 모델 이름을 함께 담는다예보의 기준과 발표 시각

실행하면 {'지연확률': 0.614, '지연예상': True, '기준값': 0.5, '판': 'delay-lr-1'} 이 나옵니다. 0.614 가 0.5 이상이라 지연예상이 True 입니다. 같은 확률이라도 기준값이 0.7 인 쪽은 지연이 아니라고 판단하게 됩니다.

주의할 점

  • 확률과 판단을 함께 돌려주면, 부르는 쪽이 자기 기준값을 따로 쓸 수 있습니다. 1장에서 본 것처럼 기준값은 업무에 따라 다릅니다.
  • 여러 건을 부를 때는 한 건씩 여러 번보다 묶음(batch) 한 번이 빠릅니다. 네트워크 왕복과 모델 호출이 한 번이 되기 때문입니다(실습 4).
← 이전 절13장 · Pydantic 으로 입력 검사다음 절 →13장 · 인증: 누구인가