레오의 빌드로그
글프로젝트소개English

FINCH

포트폴리오 기반 나만의 AI 투자 비서

화면

개요

기간
2026.08 – 2026.09 (6주)
팀
5명 · 프론트엔드 2, 백엔드 1, AI 1, 인프라 1
역할
AI 파트 리드

풀고 싶었던 문제

주식 앱의 시세·뉴스·공시는 누구에게나 같은 정보라, 내 포트폴리오에 어떤 의미인지는 직접 찾아봐야 함. 보유 종목과 거래 내역을 기준으로 개인화된 정보를 제공하되, LLM이 숫자를 지어내거나 투자를 권유하지 않아야 함.

해결 방법

  1. 01
    숫자는 계산 엔진이 산출수익률·비중·손익은 계산 엔진이 구하고, AI는 값이 들어갈 자리만 표시해 문장 작성
  2. 02
    답변 전송 전 검사숫자, 출처, 매수·매도 권유 여부 등 10가지 검사. 걸리면 다시 생성하고, 다시 걸리면 내보내지 않음
  3. 03
    AI는 계좌 조회만 가능계좌 데이터는 백엔드에서만 수정하고, AI는 조회용 내부 API만 사용
  4. 04
    답변에 출처 표시뉴스와 공시를 매일 수집해 두고, 답변에 쓴 자료를 각주로 첨부

담당 업무

AI 서버(FastAPI) 설계·구현 총괄. 브리핑·채팅·종목 분석·포트폴리오 진단 기능과 이를 받치는 출력 검사, 자료 수집·검색 담당

  1. 01
    숫자 치환 구조LLM은 허용된 키만 쓰고 서버가 계산 엔진 값으로 치환. 계산되지 않은 숫자가 답변에 들어갈 경로 차단LLM은 허용된 키로 {{return_005930}}처럼 쓰고 서버가 계산 엔진 값(+2.48%)으로 치환 · 응답은 텍스트·수치 segments로 분리
  2. 02
    출력 검사 10종숫자·출처·금지 표현 등을 검사해 위반 시 사유를 붙여 재생성, 재실패 시 차단원시 숫자 · 엔진 값 불일치 · 인용 무결성 · 금지 표현 · 스키마 등
  3. 03
    도구 기반 채팅 에이전트질문에 맞는 조회 도구(계좌·수익률·시세·뉴스·공시)를 골라 호출하고, 조회 결과만으로 답변 작성도구 선택 → 서술 2단계 · 도구 7종 병렬 호출, 최대 3턴·12호출 · 작업 큐(Postgres SKIP LOCKED)
  4. 04
    뉴스·공시 수집과 검색뉴스·공시·시세 정기 수집, 답변과 데일리 브리핑의 근거 자료 검색네이버 뉴스 · DART 공시 → 청크 · 임베딩(text-embedding-3-small) → pgvector + 어휘 검색, RRF 융합
  5. 05
    TDD 기반 개발검사 규칙·숫자 치환·도구 호출을 테스트로 먼저 정의한 뒤 구현. 고정 포트폴리오 골든 테스트로 계산 결과 회귀 확인pytest · 골든 테스트 · 테스트 708개

운영하며 고친 것

  1. 01
    답이 "확인되지 않았습니다"로만 나오던 문제계좌 기록을 읽는 경로에 따라 숫자가 AI에게 넘어가지 않던 근본 원인을 찾아 수정
  2. 02
    채팅 답이 느리던 문제모델 교체, 자료 선택 단계의 추론 비활성화, 여러 자료 동시 조회로 대기 시간 단축
  3. 03
    멀쩡한 답을 검사가 막던 문제운영에서 막힌 사유를 집계해 가장 많던 원인(각주 위치 때문에 문장을 잘못 나누던 것) 수정
  4. 04
    실험 결과가 오염되던 문제실패한 응답이 캐시에 남아 A/B 실험 비교를 가리던 문제를 찾아, 실험 시 캐시를 건너뛰도록 변경

기술

AI
Python · FastAPI · OpenAI · PostgreSQL + pgvector
백엔드
Spring Boot 4 · PostgreSQL · Redis
프론트엔드
React 19 · TypeScript · Vite · TanStack Query · PWA
인프라
k3s · Helm · Cloudflare Tunnel

관련 글

아직 관련 글이 없습니다.