본문으로 건너뛰기

플랫폼 하나를 끝까지 만드는 기술

주력은 AI를 제품 안에 넣는 일입니다. 그 아래로 자동화와 생성, 계측, 데이터, 앱과 서버가 붙습니다. 줄마다 실제로 쓰는 도구 이름을 같이 뒀습니다.

고객사 안에서 도는 AI 에이전트

공개 모델을 고객사 GPU 위에 직접 올립니다. 대화가 밖으로 나가면 안 되는 곳, 호출마다 요금이 쌓이면 곤란한 곳이 그렇습니다. 지금 대학 한 곳의 커스텀 에이전트를 그렇게 만들고 있습니다.

32B 급 모델을 4비트로 양자화해 한 장짜리 GPU에 얹습니다. 품질을 재 보고 떨어지는 만큼만 크기를 되돌립니다. 도메인 문서가 쌓인 곳은 어댑터만 얹어 그 말투와 용어에 맞춥니다.

에이전트는 대화가 끝나도 기억이 남아야 씁니다. 지난 대화에서 무엇을 정했는지, 이 사람이 누구인지를 벡터로 두고 다음 대화에서 다시 꺼냅니다. 오래된 것과 방금 것의 가중치를 다르게 둡니다.

문서는 넣기 전에 자릅니다. 어디서 자르느냐가 답의 품질을 정합니다. 조각마다 어느 문서 몇 페이지에서 왔는지를 같이 저장해, 답과 근거가 항상 짝으로 나옵니다.

찾는 것은 두 번 거릅니다. 먼저 벡터로 수십 개를 빠르게 추리고, 질문과 문단을 같이 읽는 모델로 서너 개만 남깁니다. 모델에 넣을 수 있는 양이 정해져 있어서, 스무 번째로 밀린 정답은 없는 것과 같습니다.

vLLM · Qwen3-32B AWQ 4bit · BGE-M3 · BGE-reranker · LangGraph

근거 조항까지 붙는 답변

문서를 임베딩해 두고, 질문에 맞는 답과 그 답이 나온 약관 조항을 같이 돌려줍니다. 조항 번호와 원문 문단, 몇 페이지에서 왔는지가 응답에 같이 실립니다.

근거로 쓸 문단이 임계에 못 미치면 답을 만들지 않습니다.

보험 쪽에서는 가입 조건을 나이·건강·직업·가입금액·흡연 다섯 가지 규칙으로 걸러 냅니다. 담보 사이 유사도는 임베딩으로 계산합니다.

ChromaDB · OpenAI text-embedding-3-small · Anthropic Claude · FastAPI

API 없는 플랫폼의 브라우저 자동화

공개된 API가 없는 플랫폼은 화면을 직접 다룹니다. 로그인하고, 눌러야 할 것을 누르고, 결과를 받아 옵니다. API가 있으면 그쪽을 씁니다.

같은 작업을 두 번 돌려도 결과가 같게 만들고, 어디서 멈췄는지 남깁니다. 자사 제품 하나는 이 방식으로 사람 없이 돕니다. 생성과 처리, 발행이 정해진 시각에 돌고 실패하면 알림이 옵니다.

Playwright · Docker Compose · PostgreSQL · launchd

갈아 끼우는 생성 프로바이더

텍스트와 이미지에서 영상·음원을 만드는 파이프라인은 자사 제품에서 돌리고 있습니다. 생성 프로바이더 여러 개를 같은 프로토콜 뒤에 두고, 하나가 실패하면 다음으로 넘깁니다.

내려갈 경로가 미리 정해져 있고, 최하단은 GPU 없이도 완주합니다. 음원 쪽은 생성 서비스를 브라우저로 직접 몰아 무인으로 돌립니다.

Replicate · ComfyUI · Stability · FFmpeg

무엇을 눌렀는지와 얼마를 썼는지

앱과 웹에서 어디로 들어와 무엇을 눌렀는지 모읍니다. 이벤트와 화면 재생 두 갈래로 쌓고, 한국어와 영문으로 다르게 들어오는 이벤트 이름은 하나로 맞춰 둡니다. 이름이 어긋나면 조인이 조용히 0건이 됩니다.

광고비와 그 행동을 같은 기준으로 잇는 것이 이 자리의 핵심입니다. 광고 대시보드는 얼마 썼는지만 알고, 분석 도구는 무엇을 했는지만 압니다. 둘을 이어야 채널별로 무엇이 남았는지가 나옵니다.

그 결과로 광고 키워드를 고르고, 플랫폼과 말투를 지정해 문구 초안을 뽑습니다. 광고주끼리 겹치는 키워드와 채널은 그래프로 두고 이어서 추천합니다.

ClickHouse · rrweb · Kotlin WebFlux · Redis

PostgreSQL에서 시작하는 데이터 배치

진실은 PostgreSQL에 둡니다. 관계를 타고 들어가는 질의가 조인으로 감당이 안 되는 자리에 Neo4j를 얹고, 분석 질의가 운영 화면을 느리게 만드는 자리에 ClickHouse를 얹습니다.

그래프 쪽은 원본을 옮겨 담지 않고 운영 데이터에서 다시 그려 넣습니다. 쓰기는 PostgreSQL 한 곳에서만 일어납니다.

PostgreSQL · pgvector · Neo4j · ClickHouse · Flyway

앱에서 배포까지 같은 사람

웹은 Next.js와 React, 서버는 Kotlin과 Python, 데스크톱은 Electron으로 만듭니다. 컨테이너로 묶어 올리는 것까지 한 사람이 이어서 합니다.

한 대로 끝나는 곳은 한 대에 올리고, 트래픽이 늘거나 GPU를 나눠 써야 하는 곳은 쿠버네티스 위에 올립니다. 규모에 안 맞는 도구를 먼저 얹지 않습니다.

앱과 서버 사이, 서버와 인프라 사이는 같은 사람이 봅니다. 그 경계에서 새는 것이 오픈 뒤에 가장 오래 갑니다.

넘겨드릴 때는 리포지토리 하나와 실행 문서, 마이그레이션 이력이 같이 갑니다. 경보마다 무엇을 먼저 볼지가 적혀 있고, 백업은 되살려 본 뒤에 됐다고 칩니다.

Next.js · Kotlin · Python · Kubernetes · Docker

AI를 세우는 조건

AI 기능은 비용 상한과 호출 타임아웃을 먼저 정하고 붙입니다. 상한에 닿으면 새 호출이 막히고, 그 전에 80% 선에서 경보가 먼저 울립니다.

에이전트는 꺼진 채로 배포하고, 켜고 끄는 것은 사람이 합니다.

왜 이걸로 했는지

계약 전에 물으시면 답이 나옵니다. 답이 안 나오는 자리가 나중에 값이 되는 자리입니다.

무엇을 맡아서 만들었는지는 만든 것에 줄마다 적어 뒀습니다.

만든 것

여럿 중에 어디를 긋는지

어디까지 맡기실지부터 정합니다

이메일로 보내기
info@divine-company.co.kr
전화
070-8955-2815
주소
서울특별시 성북구 북악산로 713, 3-307