lifecarelog
백엔드

FastAPI로 AI 요약 기능 붙이기: 실전 코드와 배포 체크리스트

FastAPI에 AI 요약 엔드포인트를 붙이는 최소 코드와 배포 전 점검 항목 5가지를 1인 개발자 경험으로 정리했어요.

4분 읽기

서비스에 AI 요약 기능을 넣고 싶은데 어디서부터 손대야 할지 막막했던 적 없나요? 저도 AI 정신건강 앱 플랜티(plan-t)를 개발하면서 같은 고민을 했어요. 직접 만들어 보니 핵심은 모델 선택이 아니라, LLM API를 감싸는 백엔드를 얼마나 안전하게 설계하느냐였어요.

최소 구조: 파일 1개, 엔드포인트 1개

LLM 호출 자체는 외부 API에 맡기고, FastAPI는 입력 검증과 보호막 역할만 해요.

입력 검증LLM API 호출에러 처리응답 반환
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, Field
import httpx, os
 
app = FastAPI()
 
class SummaryIn(BaseModel):
    text: str = Field(min_length=50, max_length=8000)
 
@app.post("/summarize")
async def summarize(body: SummaryIn):
    async with httpx.AsyncClient(timeout=30) as client:
        r = await client.post(
            "https://api.example.com/v1/messages",  # 사용하는 LLM API 주소로 교체
            headers={"Authorization": f"Bearer {os.environ['LLM_API_KEY']}"},
            json={
                "model": "<사용할-모델-ID>",
                "max_tokens": 512,
                "messages": [
                    {"role": "user", "content": f"다음 글을 3문장으로 요약해줘.\n{body.text}"}
                ],
            },
        )
    if r.status_code != 200:
        raise HTTPException(502, "요약 서비스가 잠시 응답하지 않아요. 잠시 후 다시 시도해 주세요.")
    return {"summary": r.json()}

돌려 보니 max_length=8000 입력 제한이 비용 사고를 막는 첫 번째 방어선이었어요. 요약 요청에 소설 한 권이 들어오는 일, 생각보다 흔해요.

배포 전 체크리스트 5가지

  • API 키는 환경변수
  • 입력 길이 서버 강제
  • max_tokens 캡
  • 타임아웃 30초
  • 요청 횟수 제한
  1. API 키는 코드가 아니라 배포 환경의 환경변수에 넣어요.
  2. 입력 길이와 max_tokens는 서버에서 강제해요. 클라이언트가 보내는 값은 믿지 않아요.
  3. 사용자당 요청 횟수 제한을 걸어요. 없으면 반복 호출 하나로 요금이 그대로 쌓여요.
  4. 타임아웃 30초와 502 에러 처리를 넣어요. LLM API가 느려질 때 내 서버까지 같이 멈추면 안 되니까요.
  5. 로그에 요약 원문을 저장하지 않아요. 사용자 글에는 민감한 내용이 섞일 수 있어요.

적용해 봤더니 1번과 2번만 챙겨도 사고 대부분이 걸러졌어요. 테스트해 보면 타임아웃 없는 코드가 부하 상황에서 제일 먼저 무너져요.

작게 시작해도 충분해요

위 코드는 붙이는 데 10분 정도 걸렸어요. 혼자 운영하면서 배운 건, 완벽한 설계보다 보호막 갖춘 작은 엔드포인트 하나가 먼저라는 사실이에요. 저도 이런 작은 도구들을 하나씩 쌓아 라이프케어로그 시리즈를 운영하고 있어요. 오늘 만든 엔드포인트 하나가 다음 기능의 발판이 될 수 있어요.

#FastAPI#AI요약#배포체크리스트

라이프케어로그 서비스가 궁금하신가요?

AI 기반 건강·일정·재활 관리 앱을 직접 써보세요.

서비스 살펴보기

관련 글

댓글

아직 댓글이 없어요. 첫 댓글을 남겨주세요.