본문으로 건너뛰기

"Project" 태그 — 3개 게시물

프로젝트 관련 글

모든 태그 보기

How we vibe code at a FAANG.

· 약 9분
김성연
AI Research Engineer, Brain Crew

TL;DR

FAANG 기업의 AI 보조 코딩 사례는 "AI가 코드를 대신 짠다"가 아니라 "설계-테스트-리뷰-문서화의 반복 작업을 AI가 떠받쳐 엔지니어가 핵심 결정에 집중"하는 구조다. TDD 기반으로 테스트를 먼저 AI에게 작성시키고, 구현은 그 다음 단계로 진행하며, 설계 문서와 리뷰 프로세스로 품질을 보장한다. AI Engineer에게 중요한 것은 모델 개발보다 "어느 공수를 AI로 줄일지" 전략적 판단이며, 2026년 이후 비용 압박 속에서 FastAPI 기반 백엔드 개발 시 설계·테스트·관측성·운영 준비에 AI를 집중 투입하는 것이 현실적 접근이다.

Key Takeaways

  • TDD + AI 조합이 핵심: 테스트를 먼저 AI에게 작성시키고 구현은 그 다음. 테스트가 계약(contract)이 되어 AI 생성 코드의 안전망 역할을 하며, 실제로 ~30% 개발 속도 향상을 달성
  • 설계 문서가 AI 활용의 전제: FAANG 프로세스는 설계 문서 → 설계 리뷰 → 세부 문서화 → 개발 순서로 진행. AI는 설계 초안·누락 탐지·운영 체크리스트 생성에 활용하되, 최종 시스템 경계·장애 시나리오·비용 정책은 사람이 결정
  • "공수 높은 지점"만 AI로 공략: API 스키마 생성, 테스트 케이스 작성, PR 체크리스트 기반 리뷰, 운영 문서 초안은 AI ROI가 높음. 반면 보안·데이터 거버넌스·아이들포턴시·장애 정책은 사람이 직접 설계해야 함
  • BackgroundTasks vs 작업 큐 구분이 프로덕션 안정성 좌우: FastAPI 백엔드에서 수 초 이상 걸리는 AI 작업은 큐(Celery/RQ/Arq)로 분리하고 상태 추적·재시도·관측성 확보. AI는 작업 분류 기준표 생성과 메트릭 설계 초안에 활용
  • 2026년 현실: 모델 개발보다 도구 통합이 생존 전략: 대규모 GPU 인프라 없이는 모델 경쟁력 유지 어려움. Claude/Cursor/Codex 같은 외부 도구를 기존 프로세스에 녹이는 것이 실무 AI Engineer의 핵심 역량으로 전환 중

상세 내용

FAANG에서 실제로 작동하는 AI 보조 코딩 프로세스

10년 이상 경력의 FAANG AI 소프트웨어 엔지니어가 공유한 프로덕션 AI 코딩 방식은 단순히 "AI가 코드를 빨리 짠다"가 아니다. 7단계로 구조화된 개발 프로세스 속에서 AI가 개발 속도를 30% 향상시키면서도 품질을 유지하는 비결은 다음과 같다.

1. 기술 설계 문서(Technical Design Document)가 모든 것의 시작

모든 개발은 제안서 형태의 설계 문서로 시작한다. 이해관계자 동의를 얻은 후 전체 아키텍처, 타 팀 연동 구조를 포함한 본격적인 시스템 설계로 확장된다. 실질적인 업무의 대부분이 이 단계에서 발생하며, AI는 다음 역할로 활용된다:

  • 설계 문서 초안 생성 및 누락 항목 자동 탐지
  • 시스템 경계, 데이터 흐름, API 계약 초안 작성
  • 리스크 항목(타임아웃, 재시도, fallback, 보안) 체크리스트 제안

하지만 최종 설계 승인과 시스템 경계 정의(PII, 권한 모델, 비용 정책)는 반드시 사람이 결정해야 한다. AI는 "그럴듯한 구현"을 제안하지만 조직의 제약 맥락을 자동으로 보장하지 못한다.

2. 설계 리뷰: "초기에 고통을 집중적으로 치르는" 단계

시니어 엔지니어들이 설계 문서를 가차 없이 비판한다. 이 과정은 고통스럽지만 나중에 발생할 더 큰 문제를 미리 제거하는 핵심 단계다. 설계가 빈약한 상태에서 AI로 코드를 먼저 밀어붙이면 속도는 잠깐 빨라져도 운영 단계에서 폭발한다.

3. 개발 준비: 서브시스템 문서화와 백로그 정리

설계 리뷰 통과 후 초기 몇 주는 실제 코드보다 각 서브시스템에 대한 추가 문서화에 투자한다. PM, TPM과 함께 작업을 작은 티켓으로 쪼개고 우선순위를 확정하는 단계에서도 AI는 작업 분류 기준표와 스프린트 계획 초안 생성에 활용 가능하다.

4. TDD 기반 개발: AI가 진짜 힘을 발휘하는 구간

**핵심은 TDD(Test Driven Development)**다. 프로세스는 다음과 같다:

  1. 먼저 AI 코딩 에이전트에게 테스트 코드를 작성시킨다(정상/경계/오류 케이스)
  2. 사람이 테스트를 리뷰한다(이게 핵심)
  3. 테스트를 통과하는 기능 구현을 AI와 함께 진행
  4. 테스트는 계약(contract)이 되고, 계약이 있으면 구현은 안전하게 바꿀 수 있다

이 단계에서 AI는 개발 속도를 극적으로 높이는 가속기(Force Multiplier) 역할을 한다. 일반적인 TDD는 테스트 작성이 귀찮아서 무너지지만, AI가 테스트를 먼저 생성하면 가장 큰 생산성 레버리지가 발생한다.

5. 코드 리뷰: 체크리스트 기반 AI 보조

프로덕션 브랜치 머지를 위해 최소 두 명의 개발자 승인이 필요하다. AI는 자유형 코멘트가 아닌 체크리스트 기반으로 리뷰를 보조하는 것이 안전하다:

  • 타임아웃/재시도/서킷 브레이커 일관성
  • 아이들포턴시(idempotency) 키 설계
  • PII/비밀키 로그 노출 여부
  • BackgroundTasks 남용(장기 작업은 큐로 분리)
  • 관측성: request_id, token_usage, latency 기록
  • rate limit / concurrency limit 고려

6. 스테이징 테스트와 프로덕션 배포

스테이징에서 시나리오 테스트를 통과하면 프로덕션으로 배포한다. 이 구조적 프로세스 속에서 AI를 활용해 제안부터 프로덕션까지 ~30% 속도 향상을 달성했다.

AI Engineer로서의 현실적 고찰: 2026년의 전략적 선택

모델 개발에서 도구 통합으로의 패러다임 전환

과거에는 모델 아키텍처 설계부터 학습, 추론 환경 구성, 서비스 적용까지 전 과정을 직접 수행하는 것이 자연스러웠다. 하지만 2025년 말 현재, 산업 흐름은 달라졌다:

  • Claude Code, Codex, Cursor 같은 도구들은 해외 대형 기업이 우수한 인력과 막대한 컴퓨팅 자원을 투입해 만든 멀티 에이전트 아키텍처 + MCP(Model Context Protocol) 기반 프로덕션 생태계
  • 모델 학습이나 대규모 추론 영역의 경쟁력은 대규모 GPU 인프라를 보유한 일부 대기업으로 한정되고 있음
  • 대부분 기업은 외부 AI 도구를 적극 활용하며, 기존 개발 프로세스에 어떻게 녹일지가 전사적 관심사로 확장

개인적으로는 모델 직접 개발이나 Vertical AI 기반 서비스 구축 욕심이 있지만, 2026년 이후 기업은 명확한 수익성과 비즈니스 가치를 기대할 것이다. 온프레미스/클라우드(AWS, GCP, Azure) 모두 학습·서빙 비용 부담이 크고, 이해관계자 설득은 더욱 어려워질 가능성이 높다.

FastAPI 기반 AI 백엔드: "공수 높은 지점"만 AI로 확실히 줄이기

AI 보조 코딩을 현실적으로 활용하려면 AI가 생산성을 올리는 구간과 리스크를 키우는 구간을 분리해야 한다. 목표는 "더 많은 기능"이 아니라 같은 기능을 더 적은 공수로, 더 안정적으로 만드는 것이다.

FastAPI + AI 백엔드에서 공수가 큰 영역

  1. 요구사항 → API 계약 → Pydantic 스키마 정의
  2. 예외/에러 정책 표준화(에러코드, retry 가능 여부)
  3. 비동기/장기 작업 처리(BackgroundTasks vs 작업 큐), 상태 추적
  4. 관측성(로그/메트릭/트레이스), 비용(토큰/시간) 계측
  5. 회귀 방지용 테스트 설계와 유지
  6. PR 리뷰에서 놓치기 쉬운 보안·성능·경계조건 체크리스트
  7. 문서화(OpenAPI, 운영 런북, 배포 체크리스트)

FastAPI는 타입힌트 기반으로 빠르게 API를 만들고 자동 문서를 제공하지만, AI 백엔드는 모델 호출/비용/장기작업/데이터 거버넌스가 추가되면서 공수 곡선이 급격히 올라간다.

AI에게 맡기면 ROI가 큰 작업 vs 사람이 잡아야 하는 작업

AI 활용 추천 영역:

  • 설계 문서 초안 생성 및 누락 항목 탐지
  • API 스키마(Pydantic v2) 초안, 예제 요청/응답 생성
  • 테스트 케이스 생성(정상/경계/오류), 목킹 전략 초안
  • OpenAPI 기반 SDK/클라이언트 사용 예시, 운영 문서 초안
  • PR 체크리스트 기반 자동 리뷰
  • 로그 필드 스펙/메트릭 이름 규칙/대시보드 지표 제안

사람이 반드시 결정해야 하는 영역:

  • 시스템 경계 정의: 어떤 데이터를 어디까지 신뢰하는지, PII/비밀키/권한 모델
  • 장애 시나리오: 타임아웃, 서킷 브레이커, 재시도 정책, 아이들포턴시
  • 비용 정책: 토큰 제한, rate limit, 캐시 정책, 모델 fallback
  • 데이터/프롬프트 안전: 프롬프트 인젝션, 로그 마스킹, 정책 위반 처리
  • 최종 설계 승인과 운영 책임

설계 문서를 AI로 "빨리, 제대로" 만들기

설계 문서는 시간을 많이 먹지만, 이 단계가 빈약하면 이후가 더 크게 터진다. AI를 초안 작성자 + 리스크 리뷰어 역할로 사용한다.

권장 목차(최소):

  • 문제 정의 / 범위(Out of scope 포함)
  • API 계약(엔드포인트, 스키마, 상태코드)
  • 모델 호출 전략(타임아웃, 재시도, fallback, 비용 상한)
  • 장기 작업 설계(큐/워커/상태 저장)
  • 데이터/보안(PII, 로그 마스킹, 권한)
  • 관측성(메트릭/로그/트레이스, 비용 지표)
  • 테스트 전략(단위/통합/부하/회귀)
  • 롤아웃/롤백/마이그레이션

이 목차로 AI에게 초안을 생성시키고, 다시 같은 문서를 넣어 "누락/모순/운영 리스크"를 지적하게 하면 설계 품질이 빠르게 올라간다.

Pydantic v2 스키마: AI로 가속, 성능 체크는 사람

2025년 기준 FastAPI는 Pydantic 기반이 표준이며, Pydantic v2는 성능/스키마 생성에서 변화가 크다.

AI 활용 패턴:

  • Request/Response 모델, 에러 모델, pagination 모델 초안 생성
  • OpenAPI 문서 품질을 올리는 예제 페이로드 생성
  • 입력 검증 로직(validator) 초안

사람 체크 포인트:

  • validator가 과하게 무거워져 핫패스에서 지연 발생 여부
  • 내부 도메인 객체와 외부 API 스키마 레이어 분리 확인

BackgroundTasks vs 작업 큐: 프로덕션 안정성의 핵심

FastAPI에는 응답 반환 후 실행되는 BackgroundTasks가 있지만, AI 백엔드의 "진짜 장기 작업"(이미지/영상 처리, 외부 API 체인 호출)을 웹 프로세스 내부에서 버티면 운영이 불안정해진다.

권장 기준:

  • 수백 ms12초: BackgroundTasks 가능(로그 집계, 간단한 비동기 알림)
  • 수 초~수 분, 실패 가능성 높음: 작업 큐(Celery/RQ/Arq)로 분리, 상태 추적/재시도/아이들포턴시 필수

AI 활용 지점:

  • 작업 분류 기준표로 자동 분류
  • 작업 ID, 상태 테이블, 재시도 정책, 아이들포턴시 키 설계 초안
  • 운영 대시보드 메트릭/로그 필드 제안

FastAPI 의존성(Depends) 및 request lifecycle은 버전별 동작 변화/엣지케이스가 있으므로 공식 문서와 이슈 추적이 필수다.

TDD를 "AI 코딩 에이전트 최적화"로 전환

일반 TDD는 테스트 작성이 귀찮아서 무너지지만, AI 등장으로 테스트 작성이 가장 큰 생산성 레버리지가 됐다.

권장 루틴:

  1. 설계 문서에서 API 계약/상태코드 확정
  2. AI에게 테스트 먼저 작성(정상/경계/모델 실패·타임아웃/권한·PII 마스킹)
  3. 사람이 테스트 리뷰(핵심)
  4. 구현은 AI + 사람 협업
  5. 스테이징에서 시나리오 테스트

테스트는 곧 계약이고, 계약이 있으면 구현은 안전하게 변경 가능하다.

PR 리뷰 공수를 체크리스트 기반 AI로 효율화

코드리뷰는 공수가 크지만 품질의 핵심이다. AI를 자유형 코멘트가 아닌 체크리스트 기반으로 활용한다.

AI 리뷰 체크리스트 예시(AI 백엔드 특화):

  • 타임아웃/재시도/서킷 브레이커 일관성
  • 외부 호출 아이들포턴시 고려
  • 입력 검증(Pydantic validator) 비용
  • 로그 PII/비밀키 노출 여부
  • 예외 처리(사용자 vs 내부 메시지 분리)
  • BackgroundTasks 남용(장기 작업은 큐로)
  • 관측성: request_id, model, token_usage, latency 기록
  • rate limit / concurrency limit 고려

이 템플릿으로 PR마다 "위반 항목만 지적"하게 하면 속도와 품질을 동시에 확보한다.

개발 도구 체인도 공수 절감의 일부: uv, Python 3.13

AI로 코드 생성이 빨라져도 로컬/CI가 느리면 전체 생산성이 죽는다. 2025년 말 기준:

  • uv: Rust 기반 툴 체인으로 빠른 설치/실행 경험 제공
  • Python 3.13: 2024년 10월 릴리스, 공식 "What's New" 참고 필수

"AI가 만든 코드"를 빠르게 검증하려면:

  • 의존성 설치/테스트/린트가 빠른 도구 체인
  • 단위 vs 통합 테스트 분리로 실행 시간 단축
  • 스테이징 자동 시나리오 테스트

결론: "AI로 가장 비싼 공수"만 정확히 깎아라

FastAPI 기반 AI 백엔드에서 AI를 잘 쓰는 팀의 공통점:

  • 설계 문서를 AI로 빨리 만들지만, 최종 책임은 사람이 진다
  • 구현보다 테스트/리뷰/운영문서에서 AI 레버리지가 더 크다
  • BackgroundTasks 남용 대신, 장기 작업은 큐로 분리하고 상태/관측성을 확보한다
  • 프레임워크 엣지케이스는 이슈/공식 문서로 확인한다

최종 정리:

  • "AI가 코드를 짜서 빨라졌다"가 아니라
  • "설계-테스트-리뷰-운영 준비의 반복 작업을 AI가 떠받쳐서, 사람이 중요한 결정을 더 많이 하게 됐다"

이것이 2025년 말 기준, AI Engineer로서의 현실적 결론이다.

References

Project Github Setting Guideline

· 약 7분
최재훈
LEAD (AI Research Engineer), Brain Crew

TL;DR

AI/ML 프로젝트에서 긴급 이슈 발생 시 VM에 직접 접속해 코드를 수정하거나, 작업 이력 추적이 미흡한 문제를 해결하기 위한 GitHub 프로젝트 설정 가이드입니다. main/dev 브랜치 이원화, branch protection rule, squash merge, PR template 설정을 통해 코드 변경 이력을 체계적으로 관리하고, 팀 협업 시 코드 품질을 시스템적으로 보장할 수 있는 워크플로우를 구축합니다.

Key Takeaways

  • Branch 이원화 전략: main(프로덕션), dev(개발), feat(기능) 브랜치 구조로 안정성과 개발 속도를 동시에 확보
  • Protection Rule 필수 설정: main/dev 브랜치에 직접 push를 막고 PR을 강제함으로써 코드 리뷰와 이력 추적 보장
  • Squash Merge 활용: 여러 개의 작은 커밋을 하나로 합쳐 깔끔한 커밋 히스토리 유지, 롤백과 디버깅 용이
  • PR Template 표준화: 작업 내용, 변경 사항, 테스트 결과를 일관된 형식으로 문서화하여 팀 간 커뮤니케이션 효율 향상
  • VM 직접 작업 금지 원칙: 긴급 상황에서도 Git 워크플로우를 따라 변경 이력을 남기는 것이 장기적으로 유지보수성 향상

상세 내용

배경: 기존 프로젝트 작업 방식의 문제점

AI/ML 프로젝트 환경에서는 모델 학습과 서빙을 위해 VM(Virtual Machine)을 자주 사용합니다. 그러나 다음과 같은 문제가 반복적으로 발생합니다:

  • 긴급 이슈 대응 시 직접 수정: 서비스 장애나 모델 성능 문제 발생 시, VM에 SSH로 접속해 코드를 직접 수정하는 경우가 빈번합니다. 이는 Git 이력에 남지 않아 "누가, 언제, 왜" 수정했는지 추적이 불가능합니다.
  • 작업 내역 추적 미흡: 개인별 작업이 commit history로 제대로 관리되지 않고, unit test 없이 코드가 배포되어 회귀 버그(regression bug) 발생 위험이 높습니다.

이러한 문제는 특히 여러 Research Engineer가 협업하는 환경에서 코드 충돌, 재현 불가능한 실험, 롤백 어려움 등으로 이어집니다. 이 가이드는 시스템적으로 이런 문제를 방지하기 위한 GitHub 설정 방법을 제시합니다.

VM 및 SSH 설정 (준비 중)

Azure 또는 AWS, GCP 등 클라우드 환경에서 VM을 생성하고, 로컬 개발 환경에서 SSH를 통해 안전하게 접속하는 방법은 향후 업데이트 예정입니다. 핵심은 개발자가 VM에 직접 코드를 수정하지 않고, 로컬에서 작업 후 Git을 통해 배포하는 흐름을 구축하는 것입니다.

Branch 이원화 전략

Branch Structure

브랜치 구조:

  • main: 프로덕션 배포용 브랜치. 항상 안정적인 상태를 유지해야 합니다.
  • dev: 개발 통합 브랜치. 모든 feature 브랜치는 여기서 분기하고 병합됩니다.
  • feat/feature-name: 개별 기능 개발용 브랜치. dev를 base로 생성합니다.

워크플로우:

  1. dev 브랜치에서 feat/new-model-architecture 같은 feature 브랜치 생성
  2. 로컬에서 작업 후 commit & push
  3. dev로 PR(Pull Request) 생성
  4. 코드 리뷰 및 테스트 통과 후 merge
  5. dev에서 충분히 테스트된 코드만 main으로 merge

이 구조는 실험적인 모델 개발(feat)과 안정적인 서비스 운영(main)을 분리하여, Research Engineer가 자유롭게 실험하면서도 프로덕션 안정성을 유지할 수 있게 합니다.

Branch Protection Rule 설정

Protection Rule Settings 1

Protection Rule Settings 2

Branch protection rule은 main, dev 브랜치에 반드시 설정해야 합니다. 이는 VM에 직접 접속해 코드를 수정하는 습관을 시스템적으로 차단합니다.

권장 설정:

  • Require a pull request before merging: 직접 push를 막고 반드시 PR을 통해서만 병합 가능하게 합니다.
  • Require approvals: 최소 1명 이상의 리뷰어 승인을 필수로 설정합니다. 페어 프로그래밍처럼 코드 품질을 검증할 수 있습니다.
  • Require status checks to pass: CI/CD 파이프라인(unit test, linting 등)을 통과해야만 merge 가능하게 합니다.
  • Require conversation resolution before merging: PR 코멘트가 모두 해결되어야 병합됩니다.
  • Include administrators: 관리자도 이 규칙을 따르도록 강제하여 예외 없는 프로세스를 보장합니다.

이 설정으로 긴급 상황에서도 "일단 VM에 들어가서 고친다"는 접근이 불가능해지고, 반드시 Git 워크플로우를 따르게 됩니다.

Pull Request 설정

Squash Merge 전략

Squash Merge Setting

Squash Merge의 장점:

  • 개발 중 "WIP", "fix typo", "debugging" 같은 작은 커밋들이 많이 생기는데, 이를 하나의 의미 있는 커밋으로 합쳐 히스토리를 깔끔하게 유지합니다.
  • git log로 이력을 볼 때 feature 단위로 파악할 수 있어, 특정 기능을 추가한 시점을 쉽게 찾을 수 있습니다.
  • 롤백 시 해당 feature 전체를 한 번에 되돌릴 수 있습니다.

설정 방법: Repository Settings → General → Pull Requests 섹션에서 "Allow squash merging"만 체크하고 나머지는 해제합니다.

PR Template 설정

![PR Template Setting](https://prod-files-secure.s3.us-west-2.amazonaws.com/bb84b169-cb88-81fc-90c3-00032f05f905/27ed859f-3633-4899-8032-ae177e5a4bff/image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466RDIG27QE%2F20260325%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260325T065013Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEN%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLXdlc3QtMiJIMEYCIQDCMtPmGiArJrAqWROxY5AlrymYaVpHBLqqOqkNiO%2FiIgIhAJJ0avnMSZgMc9F1AUVlH8LdRwBlj56e7mxzmomgko%2FtKogECKf%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQABoMNjM3NDIzMTgzODA1Igx6cVeEQMyQcIlUD%2FIq3AOPw2Uq92YMx3q9CRuSgOHXCGV1%2BuIrAUSm5mP20fALIZrknrvevF75AMvhMMc8K6Ih3z%2F%2FcJ5zEy4aPc6dFMg8Tb5DMqioBCa0TL%2BqWizzK065eU8UCsOifDkEXsmiF9NmR5mQH9ZlKIhA98aGHDzCUsjMTUIwlO%2FKWJuo1hmlGtbTyll6WXi9j4w5uLmvBHehfWB68znBZR3UiEAyR8N40Ro3Nh%2FRVEL8nOmL2G%2BYHzpp6GU8D518u3hm4QKYOr7%2BxglBdf4A6qcrCGu3sCjPGM%2FYS854m%2BiXsjSy5dnn03HjRB%2F1IWDBCTcI70QTILNJtYMnwPSpZbi48Q3dJuyhYgOEM%2F7Ed64fscVzcV

LangSmith를 활용한 PoC Monitoring & Evaluation

· 약 4분
최재훈
LEAD (AI Research Engineer), Brain Crew

TL;DR

LangSmith는 LLM 애플리케이션의 PoC 단계에서 필수적인 모니터링과 평가를 지원하는 도구입니다. Chat UI 기반 서비스 배포 시, 실시간으로 프롬프트 성능을 추적하고 데이터셋 기반 평가를 수행할 수 있습니다. 이 가이드라인은 AI Research Engineer가 PoC 서비스의 품질을 체계적으로 관리하고 개선하기 위한 모니터링과 평가 프로세스를 제공합니다.

Key Takeaways

  • PoC 단계에서의 체계적 추적: LangSmith를 통해 Chat UI 기반 서비스의 모든 LLM 호출과 응답을 실시간으로 추적하여 초기 단계부터 품질을 관리할 수 있습니다.
  • Monitoring과 Evaluation의 분리: 실시간 모니터링으로 프로덕션 이슈를 즉시 파악하고, 오프라인 평가로 체계적인 성능 개선을 수행하는 이원화된 접근이 필요합니다.
  • 데이터 기반 의사결정: 실제 사용자 인터랙션 데이터를 수집하고 평가 데이터셋으로 전환하여 프롬프트 엔지니어링과 모델 선택에 활용할 수 있습니다.
  • Chat UI 특화 메트릭: 대화형 인터페이스의 특성상 응답 시간(latency), 토큰 사용량, 대화 흐름의 연속성 등 특화된 메트릭 추적이 중요합니다.

상세 내용

LangSmith 개요

LangSmith는 LangChain 생태계에서 제공하는 LLM 애플리케이션 개발 및 운영을 위한 통합 플랫폼입니다. 특히 PoC(Proof of Concept) 단계에서 빠르게 프로토타입을 검증하고 개선해야 하는 Research Engineer에게 유용한 도구로, 복잡한 인프라 구축 없이도 전문적인 모니터링과 평가 환경을 제공합니다.

Monitoring: 실시간 추적과 디버깅

Monitoring의 목적

PoC 서비스 배포 시 Monitoring은 다음과 같은 목적을 달성합니다:

  • 실시간 LLM 호출 추적 및 로깅
  • 예상치 못한 에러나 품질 저하 즉시 감지
  • 사용자 피드백과 실제 응답 연결
  • 비용 및 리소스 사용량 모니터링

Chat UI 환경에서의 Monitoring 구현

Chat UI 기반 서비스는 일반적으로 다음과 같은 특성을 가집니다:

  • 멀티턴 대화로 인한 컨텍스트 누적
  • 실시간 스트리밍 응답 요구
  • 사용자 경험에 민감한 레이턴시

LangSmith는 이러한 특성을 고려하여 각 대화 세션을 trace로 묶어 추적하고, 개별 LLM 호출을 span으로 기록합니다. 이를 통해 대화 전체의 흐름과 각 단계별 성능을 동시에 파악할 수 있습니다.

핵심 모니터링 메트릭

  • Latency: 첫 토큰까지의 시간(TTFT)과 전체 응답 시간
  • Token Usage: 입력/출력 토큰 수와 비용 환산
  • Error Rate: 실패한 요청의 비율과 에러 타입
  • Feedback Scores: 사용자 평가(thumbs up/down) 수집

Evaluation: 체계적 성능 평가

Evaluation의 필요성

Monitoring이 '무엇이 일어났는가'를 추적한다면, Evaluation은 '얼마나 잘 작동하는가'를 측정합니다. PoC 단계에서 Evaluation은:

  • 프롬프트 버전 간 성능 비교
  • 다양한 LLM 모델 벤치마킹
  • 레그레션(regression) 방지
  • 프로덕션 준비도 판단 기준 제공

데이터셋 구축

효과적인 Evaluation을 위해서는 품질 좋은 데이터셋이 필수적입니다:

  1. Monitoring 데이터 활용: 실제 사용자 쿼리 중 대표적인 케이스 선별
  2. Edge Case 추가: 예외 상황, 어려운 질문, 모호한 요청 등 포함
  3. Ground Truth 정의: 기대되는 올바른 응답 또는 평가 기준 명시
  4. 지속적 업데이트: 새로운 사용 패턴과 실패 케이스 반영

평가 메트릭 설정

Chat UI 서비스의 특성에 맞는 평가 메트릭 예시:

  • 정확성(Correctness): LLM-as-a-Judge를 활용한 응답 품질 평가
  • 관련성(Relevance): 사용자 질문과 응답의 연관성
  • 완전성(Completeness): 필요한 정보를 모두 포함하는지 여부
  • 일관성(Consistency): 동일 질문에 대한 응답의 안정성
  • 안전성(Safety): 유해 콘텐츠 생성 여부

반복적 개선 프로세스

LangSmith를 활용한 전형적인 개선 사이클:

  1. Baseline 설정: 초기 프롬프트/모델로 평가 실행
  2. 문제 영역 식별: 낮은 점수를 받은 케이스 분석
  3. 가설 수립: 프롬프트 수정 또는 모델 변경 방안 도출
  4. 실험 실행: 새 버전으로 동일 데이터셋 재평가
  5. 비교 분석: 버전 간 메트릭 비교로 개선 여부 확인
  6. 배포 결정: 충분한 개선 확인 시 PoC 환경에 적용

PoC 단계 Best Practices

1. 초기부터 추적 설정

개발 시작부터 LangSmith 통합을 구축하면 초기 실험 데이터도 유용한 학습 자료가 됩니다.

2. 사용자 피드백 수집 자동화

Chat UI에 간단한 평가 버튼을 추가하여 실시간 피드백을 LangSmith로 전송합니다.

3. 주간 평가 루틴 수립

일주일마다 누적된 데이터를 분석하고 평가 데이터셋을 업데이트하는 루틴을 만듭니다.

4. 비용 모니터링 중요성

PoC 단계에서 비용 효율성을 고려하지 않으면 프로덕션 전환 시 장애물이 됩니다.

한계와 고려사항

  • LangSmith는 LangChain 생태계와 가장 잘 통합되지만, 다른 프레임워크 사용 시 추가 작업이 필요할 수 있습니다.
  • 민감한 사용자 데이터는 로깅 전 익명화 또는 필터링 처리가 필요합니다.
  • PoC 단계의 트래픽 규모와 프로덕션 규모 차이를 고려한 확장성 검토가 필요합니다.

References