섹션 7-1: Packaging the AI/ LLM Application (24~27)

쌀과자AI·2025년 8월 26일

📘 강의 내용 요약 (섹션 7: Packaging the AI/LLM Application)

1. FastAPI 기본 이해

  • FastAPI는 Python 기반의 현대적이고 고성능의 웹 프레임워크로, API 개발에 널리 사용됨 .
  • Python 타입 힌트를 활용해 간결하고 생산성 높은 개발이 가능.
  • 주요 HTTP 메서드:
    • GET: 서버에서 데이터 조회
    • POST: 데이터 생성 및 제출
    • PUT: 리소스 업데이트/생성
    • DELETE: 리소스 삭제 .
  • FastAPI 실행 시, 자동으로 Swagger UI 기반의 문서(/docs) 제공 → API 테스트 및 문서화를 쉽게 수행.

2. AI 애플리케이션 패키징

  • 실습에서 OpenAI Assistant API를 FastAPI 애플리케이션에 통합.
  • 구성 요소:
    • main.py: FastAPI 서버 및 엔드포인트 정의
    • config.py: API Key 및 Assistant ID 관리 (코드와 분리 → 보안성 및 유지보수성 향상)
    • requirements.txt: 의존성 관리 (openai, fastapi, uvicorn)
    • Dockerfile: 컨테이너 환경 구성
  • POST /response 엔드포인트:
    • 입력(JSON body의 text)을 받아 OpenAI Assistant와 연결
    • 스레드(thread) 생성 → 메시지 전달 → 응답(run) 생성 및 결과 반환 .
  • 입력 데이터 유효성 검증: Pydantic(BaseModel) 활용 → 잘못된 데이터 타입 방지 .

3. Postman을 활용한 API 테스트

  • Postman 확장 프로그램을 이용하여 FastAPI 엔드포인트 테스트 .
  • 요청 설정:
  • 요청 시 FastAPI → OpenAI API → 응답 반환 확인 가능.

4. 배포를 위한 준비

  • requirements.txt 작성 → pip install -r requirements.txt 로 환경 설정 자동화 .
  • Dockerfile 작성 → 컨테이너 기반 실행 및 배포 가능.
  • FastAPI 서버 실행:
    • 개발 환경: uvicorn main:app --reload
    • 운영 환경: uvicorn.run(app, host="0.0.0.0", port=80) .

5. 핵심 포인트 (강조)

  • FastAPI는 AI 애플리케이션을 API 형태로 제공하기 위한 핵심 프레임워크.
  • Config 분리로 보안성과 유연성 확보 (API Key/Assistant ID 등).
  • Pydantic으로 입력 데이터 타입 검증 → 안정적인 서비스 운영 보장.
  • Postman 활용으로 API 요청/응답 검증 가능.
  • requirements.txt + Dockerfile → 재현 가능한 환경과 배포 자동화 기반 마련.

📑 문제 세트: Packaging the AI/LLM Application

🔹 난이도 하 (기본 이해)

문제 1. FastAPI 프레임워크의 주요 특징으로 옳은 것을 모두 고르시오.

ㄱ. Python 타입 힌트를 활용할 수 있다.

ㄴ. 자동으로 Swagger UI 기반 문서를 제공한다.

ㄷ. RESTful API를 만들 수 없다.

ㄹ. 실험용뿐 아니라 운영 환경에서도 활용 가능하다.

① ㄱ, ㄴ

② ㄴ, ㄷ

③ ㄱ, ㄴ, ㄹ

④ ㄱ, ㄷ, ㄹ

정답:

📖 해설: FastAPI는 Python 타입 힌트를 기반으로 동작하며, 자동 문서화(/docs 제공), RESTful API 구축, 운영 환경 활용이 모두 가능하다 .


문제 2. FastAPI에서 가장 흔히 사용하는 HTTP 메서드에 해당하지 않는 것은?

① GET

② POST

③ UPDATE

④ DELETE

정답:

📖 해설: HTTP 메서드는 GET/POST/PUT/DELETE가 일반적이며, UPDATE는 존재하지 않는다 .


🔹 난이도 중 (실습 응용)

문제 3. 강의 실습에서 OpenAI Assistant와 연결할 때 config.py 파일을 만든 이유로 가장 적절한 것은?

① FastAPI 실행 속도를 높이기 위해서

② API Key와 Assistant ID를 코드와 분리해 보안 및 유지보수성을 확보하기 위해

③ requirements.txt를 자동 생성하기 위해

④ Dockerfile 실행을 단순화하기 위해

정답:

📖 해설: API Key 및 Assistant ID를 별도 설정 파일(config.py)로 분리하면 보안성, 유지보수성, 배포 전략(blue-green, shadow deployment)에 유리하다 .


문제 4. FastAPI에서 사용자 입력을 검증하기 위해 사용한 Python 라이브러리는 무엇인가?

① NumPy

② Pydantic

③ Pandas

④ Requests

정답:

📖 해설: 강의에서는 Pydantic의 BaseModel을 상속받아 입력 데이터(text)가 문자열인지 검증했다 .


문제 5. Postman으로 FastAPI의 /response 엔드포인트를 테스트하려고 한다. 올바른 요청 Body(JSON)는 무엇인가?

① { "message": "Hello" }

② { "text": "Who is the hero of the story?" }

③ { "prompt": "Hello" }

④ { "query": "test" }

정답:

📖 해설: /response는 text 필드로 사용자 입력을 받도록 정의되었으며, 이 값이 프롬프트로 전달된다 .


🔹 난이도 상 (심화 이해)

문제 6. 다음 중 requirements.txt에 반드시 포함된 라이브러리가 아닌 것은?

① openai

② fastapi

③ uvicorn

④ scikit-learn

정답:

📖 해설: 실습에서는 openai, fastapi==0.109.0, uvicorn[standard]를 사용했으며, scikit-learn은 포함되지 않았다 .


문제 7. FastAPI + OpenAI Assistant 통합 과정에서 스레드(thread)를 생성하는 이유로 가장 적절한 것은?

① API Key 인증을 단순화하기 위해

② 여러 사용자의 대화 상태를 분리하여 관리하기 위해

③ FastAPI 서버의 속도를 높이기 위해

④ requirements.txt 의존성 설치를 위해

정답:

📖 해설: OpenAI Assistant API에서는 스레드를 통해 대화 맥락을 유지하며 사용자별 세션을 관리한다 .


문제 8. 운영 환경에서 uvicorn main:app --reload 대신 uvicorn.run(app, host="0.0.0.0", port=80)을 사용하는 이유로 옳은 것은?

① reload 기능이 운영 환경에서는 필요하지 않기 때문에

② 보안을 위해 port 80만 허용되기 때문에

③ Windows에서는 --reload 옵션을 사용할 수 없기 때문에

④ Postman과의 호환성을 위해

정답:

📖 해설: 운영 환경에서는 코드가 자동으로 재시작되는 --reload 옵션이 불필요하며, 대신 명시적으로 host와 port를 설정하여 안정적인 실행을 보장한다 .

profile
AI에 관심이 많은 23살 대학생입니다.

0개의 댓글