LLM을 이용한 영양 상담 서비스

Overview 크라우드웍스에서 초기 6개월 동안 프로젝트 를 수행하면서 개발자와 비개발자들이 프롬프트 엔지니어링과 서비스 개발에 걸쳐 가지고 있던 요구 사항을 종합하고 AWS 생태계 내에서 지속 가능한 해결책을 도출하려고 노력했습니다. 3단계로 나누어진 프로젝트에서 첫 번째 단계로 Queue consumer service와 프롬프트 운영 프로세스를 Python으로 개발했습니다. 3단계 전체에서 CloudFormation을 기반으로 하는 AWS CDK 와 Copilot CLI 를 조합한 ECS 서비스 2개를 중심으로 다양한 AWS 리소스를 생성했습니다. Technology CloudFormation Stacks Copilot CLI + AWS CDK ...

November 8, 2024 · 3 min · Sehyun Hwang

LLM을 이용한 기업용 챗봇 서비스

Overview 💬 사내 문서에 대한 Q&A 챗봇 개발 네이버 클라우드에서 고객사의 문서 데이터를 취급하기 위한 인프라 및 보안 설계 챗봇 형태의 PoC 서비스 아키텍처 설계 무정형의 HWP를 HTML 형태로 변환해 LLM에 적합한 형태로 정형화하고 검수하는 Frontend 개발 Architecture sequenceDiagram autonumber actor frontend as 💻 Frontend participant auth as Auth λ participant backend as 🗄️ Backend frontend ->> auth: 📩 ID, PW auth ->> frontend: 🔐 Token frontend ->> backend: 🔐 Token backend ->> auth: 🔐 Token auth ->> backend: ✅❌ Pass/Fail backend ->> frontend: 💯 Response Technology 인프라 Minio 라는 S3-compatable object storage에 원본 문서와 Chunking document를 적재 네이버 클라우드 VM 초기 구성, 목적 별로 할당 및 관리 VPN을 통해서만 VPC 내부에 접근할 수 있도록 구성 챗봇 형태의 PoC 서비스 구성 React frontend가 Fast API chat server, Self-hosted Sentry 등에 접근할 수 있는 Nginx 개발 업데이트가 잦은 Fast API 서버에 의존하지 않도록 JWT 서비스를 Naver Cloud Function 를 이용해 별도로 분리 채팅 API 사용 시나리오 관리 HTML 정형화 Frontend 개발 기술 스택 Lit : 대량의 검수 대상 HTML element에 Virtual DOM 없이 직접 접근하고 Boiler plating 없이 빠르게 개발하기 위해서 선택 pREST : 백엔드의 지원 없이 HTML 데이터를 DB에 적재하기 위해 선택 DB 문서 파싱 규칙은 Indexed DB에 적재해 개인이 관리 문서 파싱 결과는 Postgres에 적재해 RAG 시스템과 연동 html 트리를 탐색하며 html element마다 세상에 id를 부여하는 해싱 알고리즘 개발 문서 파싱 규칙을 UI를 통해 작성하고 규칙의 적용 결과를 바로 확인할 수 있음 textContent 에 대한 Regex matching, CSS selector, DOM tree 내의 위치 등을 고려 Minio와 연동된 Batch 기능 개발 Lessons 새로운 회사에서 일을 시작하며 직접 고객사와 소통하지 않고 PM과 협업했습니다. Lit framework를 이용해서 복잡한 상태 관리를 해보았다. AWS 이외의 클라우드로 네이버 클라우드를 처음으로 경험해보았으나, 불안정하고 완성도가 떨어지는 모습에 더는 경험해보고 싶지 않았습니다. 언어 모델과 RAG 시스템의 특성을 서서히 이해해가고 있습니다. 성능에 대한 사람들의 높은 기대치에는 절대 대중들이 예상하는 만큼 쉽게 도달할 수 없어 보이고, 언어 모델 이외의 전문 지식과 소프트웨어 기술에 대한 중요성을 매일 느끼며 겸손을 배우고 있습니다.

April 30, 2024 · 2 min · Sehyun Hwang

LLM 기반 작명 서비스

서비스 링크: https://naimy.ai/ Overview 한글 브랜드 이름에 특화된 브랜드 이름 작명 서비스 naimy.ai . 작명에 이어 작명된 이름을 도메인 API, 특허청 API, 소셜 네트워킹 서비스 크롤링 등의 외부 서비스 연동을 통해서 적절성을 분석할 수 있습니다. 크게 Postgres RDS를 사용하는 Lambda backend와 React frontend로 이루어진 애플리케이션으로, 외부 서비스 연동을 고려한 AWS 아키텍처를 설계하고 특허청을 제외한 외부 서비스 연동 개발을 진행했습니다. 작명 옵션 선택지 변경, Database connection pool 디버깅, AWS 계정 마이그레이션 등 사이트 운영 이슈 대응 Architecture ...

February 29, 2024 · 2 min · Sehyun Hwang

보행자 & 번호판 인식 솔루션

Overview 넥스트랩 의 소속 팀에서 가장 장기적으로 진행한 중요 프로젝트로, CCTV 등의 카메라에서 획득한 보행자와 번호판 이미지를 대상으로 추적 and/or 번호판 인식 모듈을 서비스화하는 프로젝트 납품 사례마다 다양한 요구 사항이 있었는데, 주로 핵심 AI 모듈을 둘러싼 서비스 구조를 비즈니스 로직에 맞춰 설계하고 구현하는 업무를 맡았습니다. 크게 요청에 따라서 task를 수행하는 pull mode와 최대한 빠른 속도로 task를 수행하는 push mode으로 나눌 수 있습니다. 다련장 발사대 라는 별명의 SSH tunnel을 통한 배포 및 운영 툴을 만들어서 이 프로젝트에서 2년간 안정적으로 사용했습니다. Technology 컨테이너 단위로 역할을 지정하고 Stage와 GPU 환경을 고려한 docker-compose 개발 배포와 관련해서 Nvidia GPU를 컨테이너 내부에서 사용하기 위한 고려 사항들을 알고 있고 실무에 활용해왔습니다. (CUDA version, Container runtime, Container base image, Runtime flags…) 컨테이너 별 주요 Failure point를 고려해 Health check 구현 AI task 관리 기능 개발 pull mode 에서는 tmpfs 또는 S3-compatable 임시 저장소에 최근 사진만을 적재 push mode 에서는 대기열에 요청받은 Task들을 적재 시스템 일부분에 대한 테스트 또는 운영 지원을 위한 내부용 프론트엔드 구현 AWS CDK 를 이용해 브랜치 별로 docker compose build를 수행하는 Serverless CI 개발 Progress 납품 케이스 별로 개발 사항들을 정리했습니다. ...

February 29, 2024 · 4 min · Sehyun Hwang

X-Ray 식품 검사 시스템

Overview 하드웨어 연동과 AI 이물 검사 기능을 핵심으로 하는 식품 X-Ray 이물 검사 시스템 전면 재개발 프로젝트. LabView 윈도우 응용 프로그램을 MSA로 변경. 크게 장비를 직접 통제하는 하드웨어 스택과 검사 수행에 필요한 비즈니스 로직과 검사 이력을 관리하는 애플리케이션 스택으로 나누어 서비스를 설계했습니다. Technology 하드웨어 스택에서는 Redis message broker를 중심으로 하드웨어 연동 전용 컨테이너들을 배치하고 해당 컨테이너들에 대해 TDD를 도입해 하드웨어에 의한 Pain point를 줄였습니다. X-Ray의 눈 detector 컨테이너를 C++로 개발했습니다. bmp 표준을 준수하되 깊은 비트 심도를 나타낼 수 있는 형식을 고안하고, 다른 컨테이너가 mmap 프로토콜을 통해서 필요한 이미지 영역을overhead 없이 획득할 수 있도록 했습니다. 나머지 하드웨어 연동 컨테이너의 Redis 인터페이스 설계와 Node.js TypeScript 객체 지향 설계를 주도했습니다. 애플리케이션 스택에서는 에러 핸들링과 Canvas로 획득 이미지를 스트리밍하는 기능을 개발했습니다. docker-compose services Name Language Category Features redis - Infra Event broker nginx Nginx Infra Static server, Reverse proxy, 이미지 스트리밍 api Python Service CRUD, Auth, 이미지 처리 Microservice orchestrator Node Service 하드웨어 상태 모니터링 및 통합 조작 detector C++ H/W Detector H/W 연동, 기초적인 이미지 처리 serial Node H/W 개별 시리얼 H/W 상태 관리자 postgres SQL DB 유저, 알고리즘 파라미터, 이미지 목록 관리 influxdb Flux DB 하드웨어 사용 이력 관리 s3 Node Infra mmap, 이미지 데이터 관리 ai Python Service 이물 검출 Yolo firmware C++, Python Deployment IO controller firmware uploader Lessons 수많은 야근에도 불구하고 프로젝트의 목표가 달성 불가능한 목표로 설정된 탓에 Production에는 도달하지 못했습니다. 이 글은 프로젝트의 완성보다 제 커리어에서 가장 복잡한 문제를 MSA로 어떻게 풀려고 시도했는지를 중점으로 읽어주시길 부탁드립니다. 객체를 통해 메모리를 간접적으로 관리하는 현대적인 C++ 개발을 경험했습니다. WebAssembly, pybind 등을 통해서 일부 기능을 Native하게 구동하는 데 관심이 있었는데, 이번 프로젝트에서 쌓은 C++ 경험을 기반으로 미래에 이러한 개발을 맡을 수 있으면 좋겠습니다. Redis를 통한 하드웨어 추상화와 하드웨어에 대한 TDD가 효과적으로 작동했습니다.

December 31, 2023 · 2 min · Sehyun Hwang

Download my portfolio in PDF