브리프유 브리프유 로그인
자청의 유튜브 추출기

유튜브 영상의 자막과 AI요약을 추출해보세요

AI 채팅

BETA

현직자가 공개! 서울대병원 AI 엔지니어의 실무 RAG와 Agentic AI 비법 💡

게시일: 작성자: 자청의 유튜브 추출기

AI 엔지니어 실무, 중학생 눈높이로 정리해 드림!

안녕하세요! AI 엔지니어 동역입니다. 오늘은 실제 AI 엔지니어가 어떻게 일하는지, 그리고 여러분이 취업 준비할 때 뭘 중요하게 봐야 하는지 알려드릴게요. 단순히 프롬프트 잘 짜는 것보다 더 중요한 게 뭔지, 그리고 여러분의 포트폴리오를 돋보이게 만들 비법까지!

🚀 오늘 배울 세 가지 핵심

  1. 안정적인 API의 중요성: 왜 모든 게 API에서 시작될까요?
  2. 운영 기본기의 중요성: 트렌드가 바뀌어도 변하지 않는 건 뭘까요? (포트폴리오 차별화 포인트!)
  3. 실무 산출물 설명법: 계약, 로깅, 도커 같은 걸 어떻게 설명해야 할까요?

👨‍💻 발표자 소개

  • AI 엔지니어 5년차
  • 데이터셋 구축부터 모델 서빙까지 전체 사이클 경험
  • 의료/제약 분야 경험 (데이터 많고 보안 철저!)
  • 최신 AI 기술 실무 적용 리딩
  • 커리어 히스토리: AI 스타트업 인턴 -> 정직원 -> 서울대병원 연구/개발 -> 대형 제약회사 엔진 파트 리드

💡 발표의 최종 목표

"아, 이게 실무에서 통하는 그림이구나!" 라는 걸 여러분이 딱 잡고 가는 거예요. 전공자가 아니어도 괜찮아요!


1. AI 서비스, 어떻게 돌아갈까? (핵심 파이프라인)

우리가 만드는 AI 서비스는 이렇게 돌아가요.

  1. 클라이언트 요청: 여러분이 앱이나 웹사이트에서 AI한테 뭔가 물어봐요.
  2. API 라우팅 & 검증: 요청이 오면 API가 "이거 맞나?" 하고 확인하고 어디로 보내야 할지 정해요.
  3. LLM 추론 로직: AI 모델이 여러분의 질문을 이해하고 답을 만들어요.
  4. JSON 응답 반환: AI가 만든 답을 여러분이 이해할 수 있는 형태로 돌려줘요.

✨ 면접 꿀팁: "그냥 모델 썼어요" 대신 "오픈AI 호환 API 엔드포인트로 추론 서버를 제공했어요" 라고 말하면 훨씬 실무적으로 들려요! 여기에 도커로 패키징하고, 포스트맨/스웨거로 테스트하고, 레이턴시 측정까지 했다고 덧붙이면 금상첨화!

🚀 필수 준비물 & 선택 사항

  • 필수 (기초만 있어도 OK!):
    • HTTP의 GET/POST 개념
    • JSON 구조 이해
    • 이 정도만 알아도 입력받고, 처리하고, 응답 주는 서비스 구조는 따라올 수 있어요!
  • 선택 (없어도 실습 지장 없음!):
    • 커맨드라인 (터미널)
    • 도커: 왜 도커로 패키징하면 포트폴리오가 강해지는지, API로 감싸면 인터페이스가 어떻게 생기는지 맥락만 잡으면 돼요!

가장 중요한 건 코드를 따라 치는 게 아니라 '왜' 해야 하는지 이해하는 거예요! 스키마 설계, 로그 구조화, 환경 변수 분리 같은 것들이 결과물의 품질을 높여준답니다.


2. 요즘 AI 트렌드와 변하지 않는 기본기

요즘 AI는 스스로 계획 세우고, 도구도 쓰고, 일까지 끝내는 에이전트 AI로 발전하고 있어요. 마치 사람처럼요!

  • 에이전트: AI의 '뇌' 역할
  • 컨텍스트 (롱 컨텍스트, RAG 등): AI의 '연료' 역할

하지만 이렇게 똑똑해질수록 더 중요해지는 게 있어요. 바로 언제든 안정적으로 호출 가능한 '추론 API'예요. 외부에서 AI를 어떻게 부르든 안정적이어야 서비스가 계속 돌아가니까요.

💡 롱 컨텍스트 vs RAG (Retrieval-Augmented Generation)

  • 롱 컨텍스트: 문서를 통째로 넣어서 요약하거나 전체 맥락 이해에 유리해요. 하지만 비용과 지연 시간이 늘어나는 단점이 있어요.
  • RAG: 필요한 정보만 쏙쏙 골라 넣어서 비용과 속도 면에서 효율적이에요. 최신 데이터 반영도 쉽고요. 하지만 검색이 실패하면 성능이 확 떨어질 수 있어요.

✨ 실무 핵심: 비용과 지연 시간 제약 안에서 '좋은 컨텍스트'를 어떻게 넣느냐가 중요해요. 이걸 하려면 시스템 설계가 필수! 단순히 검색만 붙이는 게 아니라, 데이터를 어떻게 조립해서 모델에 넣을지 설계해야 해요.

컨텍스트 넣는 파이프라인:
1. 검색: 벡터 DB나 키워드 검색
2. 처리: 검색된 문서의 맥락을 확장하거나 노이즈 줄이기
3. 조립: 프롬프트 만들고 컨텍스트 주입하기
4. 추론 (핵심!): 안정적인 추론 인터페이스가 있으면 앞단의 로직이 바뀌어도 외부 사용자는 전혀 영향을 받지 않아요. 이게 포트폴리오 확장성을 보여주는 중요한 포인트!

에이전트 시대의 핵심: 컨텍스트가 문서뿐 아니라 도구, 메모리까지 섞여요. (API 스펙, 이전 대화 내용 등) 이때 뭐가 들어갔는지 추적 못 하면 디버깅이 어려워요. 그래서 요청 ID와 입력 로그가 필수!

미래 전망: 트렌드가 바뀌어도 운영 기본기는 그대로 가야 해요.
* 안정적인 API 구조
* 추적 가능한 로깅 구조

이 두 가지가 있어야 확장이 쉬워요.


3. LLM 엔지니어는 어떤 일을 할까? (LLMOps)

LLM 엔지니어는 모델, 프로덕트, 백엔드 시스템 이 세 가지 영역의 교차점에 있어요.

  • 역할: 요구사항을 입력/출력 스펙으로 번역하고, 비용/속도 제약 안에서 최적화하고, 정량적인 지표로 평가해요.
  • 핵심: LLMOps (LLM Operations) - 실험실 데모를 넘어 프로덕션에서 계속 돌아가게 만드는 과정!

LLMOps 라이프사이클:
1. 빌드: 모델 선택, 파인튜닝, 프롬프트 엔지니어링
2. 배포: 컨테이너로 만들어 API 노출
3. 모니터링: 로그, 메트릭 수집 (레이턴시, 비용 추적)
4. 평가 & 개선: AB 테스트, 사용자 피드백 반영, 모델 재학습/프롬프트 변경

✨ 포트폴리오 팁: 단순히 "모델을 썼다"가 아니라, 최소 두세 번의 배포와 지표를 남겨서 보여주는 것이 좋아요. 성능만 이야기하면 연구 느낌, 운영을 이야기하면 실무 느낌!

LLMOps 필수 구성 요소 (실무 체크리스트!):
1. 버전 관리: 모델, 프롬프트 버전 관리
2. 자동 평가: 모델 자동 평가 파이프라인 구축 (벤치마크 데이터셋 활용)
3. 배포 자동화: 도커 패키징, CI/CD 파이프라인 구축
4. 모니터링: 로그, 레이턴시 대시보드 구축 (Langfuse, LangSmith 등 활용)
5. 피드백 루프: 사용자 피드백 분석 및 개선

✨ 포트폴리오 팁: 플랫폼이 아니어도 괜찮아요! Git 태그로 버전 관리, 요청 ID/로그로 추적 가능성 확보 등 작은 단위로도 실무 경험을 보여줄 수 있어요.


4. 실무에서 부딪히는 이슈와 대응법

운영하다 보면 이런 문제들을 만날 수 있어요.

  1. 레이턴시 (응답 속도): 5초 이상 지연되면 사용자가 확 떠나가요.
    • 대응: 타이머 설정, 모델 경량화 (16비트 -> 4/8비트)
  2. 비용: 요금이 폭증할 수 있어요.
    • 대응: 캐싱, 배치 처리
  3. 품질 변동: 같은 입력에도 다른 출력이 나올 수 있어요.
    • 대응: 템퍼러처 고정, 로그 분석 (하지만 어느 정도 변동은 LM 특성상 감수해야 함!)
  4. 안전 이슈: 유해/혐오 응답, 질문 우회 등.
    • 대응: 콘텐츠 필터링, 가드레일 설정
  5. 장애: 서버 다운, 500 에러 등.
    • 대응: 주기적인 헬스 체크, 재시도 로직 (리트라이), 상용 LM 대체

✨ 면접 꿀팁: 단순히 "레이턴시가 문제였어요"가 아니라, "P99 (가장 느린 1% 사용자 기준) 레이턴시를 측정해서 평균값만 보지 않고 대응했어요" 와 같이 구체적으로 말하면 실무 경험을 어필할 수 있어요.


5. 포트폴리오, 이렇게 만들어 보세요!

프로젝트는 보통 이렇게 흘러가요.

  1. 요구사항 정의: "자소서 입력하면 AI가 문법/내용 다듬어줬으면 좋겠다"
  2. 기술 스펙으로 번역: 입력/출력 정의, 최대 길이 제한, 개인 정보 보호 등 구체화
  3. API 계약 설계: 클라이언트와 서버가 합의하는 약속 (JSON 형식, 응답 필드 등)
    • 핵심: API 스키마가 유지되면 모델이 바뀌어도 클라이언트 코드는 수정할 필요 없어요! (서비스 지속성!)
  4. 구현: Python 코드 작성
  5. 배포: Docker 이미지 제작, 컨테이너 형태로 배포
  6. 운영: 로그/메트릭 수집, 관측 가능한 형태로 만들기

✨ 포트폴리오 팁: 최소 2번~5번까지 (설계부터 운영까지) 경험을 보여주는 게 좋아요.

API 계약의 중요성:
* 요청: {"text": "내용", "max_length": 500}
* 응답: {"output": "다듬어진 내용", "request_id": "고유ID", "latency_ms": 100}
* 이렇게 계약을 잘 해두면, 내부 로직이 바뀌어도 클라이언트 코드는 그대로 쓸 수 있어요!

추적 가능한 구조와 로그:
* 요청 ID: 어떤 요청이 들어왔는지, 에러가 났는지 추적하는 열쇠!
* 레이턴시: 평균뿐 아니라 P99까지 봐야 제대로 된 대응 가능.
* 구조화된 JSON 로그: 로그 분석 툴에서 쉽게 분석 가능.

✨ 실습 미니 팁:
* 함수 인터페이스 명확화: 입력/출력 계약 정의
* 레이턴시 측정: 얼마나 걸리는지 정확히 계산
* 로그 남기기: 어떤 일이 일어났는지 기록 (JSON 형식 추천!)

이 세 가지가 합쳐지면 로컬 함수가 서비스로 나갈 준비 완료!


6. 로컬 함수를 서비스로 만드는 과정 (실습 예시)

  1. 로컬 함수 정의: 내 노트북에서만 돌아가는 함수 만들기
  2. HTTP API 정의: FastAPI로 외부 요청 받는 엔드포인트 만들기
  3. Docker 컨테이너 패키징: 어디서든 똑같이 실행되도록 의존성 묶기

✨ 포트폴리오 강화: 모델 붙이기에서 끝나지 말고, HTTP API 제공, Docker 패키징, 관측까지 하면 훨씬 강력해져요!

실습 예시 (OpenAI 호환 API):
* 헬스 엔드포인트: 서버 상태 확인
* 인퍼런스 엔드포인트: LLM 추론 요청 처리
* OpenAI 호환 엔드포인트: 다른 프레임워크와 쉽게 연동 가능 (V1/models, V1/completions)
* 백엔드 모델: Ollama (로컬 LLM 실행) 또는 Mock (테스트용) 사용

✨ 요구사항 명세서:
* 비즈니스 요구사항을 개발 언어로 번역하는 과정이에요.
* 프로젝트 폴더에 Markdown 파일로 관리하면 코딩 에이전트가 맥락을 더 잘 이해할 수 있어요.

✨ API 스키마 문서 (Swagger/OpenAPI):
* API가 어떻게 생겼는지, 어떤 요청/응답을 주고받는지 명확하게 보여줘요.
* FastAPI를 사용하면 자동으로 생성되어 테스트하기 편리해요.

✨ 프로젝트 구조:
* app 폴더: 비즈니스 로직 (FastAPI 라우터, 스키마, 모델 클라이언트 등)
* docker 폴더: Dockerfile, docker-compose.yml
* tests 폴더: API 테스트 코드

✨ 실습 준비:
* Python 3.10+
* Poetry (의존성 관리 도구)
* Docker (선택 사항이지만 강력 추천!)

✨ 실습 과정:
1. 의존성 설치: poetry install
2. 환경 변수 설정: .env.example 파일을 복사하여 .env 파일 만들기 (Mock 또는 Ollama 설정)
3. 서버 실행: poetry run uvicorn app.main:app --reload
4. API 테스트: Postman, curl 등으로 헬스, 인퍼런스 엔드포인트 테스트
5. Docker Compose 실행: docker-compose up -d (Ollama, 백엔드, Open WebUI 동시 실행)
6. Open WebUI 접속: 로컬에서 채팅 인터페이스 확인

✨ 핵심: 요구사항을 계약으로 바꾸고, 그 계약을 코드로 구현하며, 추적 가능한 로그를 남기는 것이 실무에서 가장 중요해요!


오늘 내용은 여기까지입니다! 이 내용을 바탕으로 여러분의 포트폴리오를 더욱 탄탄하게 만들어나가시길 바랍니다. 궁금한 점은 언제든지 질문해주세요!

최근 검색 기록