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

화면
개요
- 기간
- 2026.08 – 2026.09 (6주)
- 팀
- 5명 · 프론트엔드 2, 백엔드 1, AI 1, 인프라 1
- 역할
- AI 파트 리드
풀고 싶었던 문제
주식 앱의 시세·뉴스·공시는 누구에게나 같은 정보라, 내 포트폴리오에 어떤 의미인지는 직접 찾아봐야 함. 보유 종목과 거래 내역을 기준으로 개인화된 정보를 제공하되, LLM이 숫자를 지어내거나 투자를 권유하지 않아야 함.
해결 방법
- 01숫자는 계산 엔진이 산출수익률·비중·손익은 계산 엔진이 구하고, AI는 값이 들어갈 자리만 표시해 문장 작성
- 02답변 전송 전 검사숫자, 출처, 매수·매도 권유 여부 등 10가지 검사. 걸리면 다시 생성하고, 다시 걸리면 내보내지 않음
- 03AI는 계좌 조회만 가능계좌 데이터는 백엔드에서만 수정하고, AI는 조회용 내부 API만 사용
- 04답변에 출처 표시뉴스와 공시를 매일 수집해 두고, 답변에 쓴 자료를 각주로 첨부
담당 업무
AI 서버(FastAPI) 설계·구현 총괄. 브리핑·채팅·종목 분석·포트폴리오 진단 기능과 이를 받치는 출력 검사, 자료 수집·검색 담당
- 01숫자 치환 구조LLM은 허용된 키만 쓰고 서버가 계산 엔진 값으로 치환. 계산되지 않은 숫자가 답변에 들어갈 경로 차단LLM은 허용된 키로 {{return_005930}}처럼 쓰고 서버가 계산 엔진 값(+2.48%)으로 치환 · 응답은 텍스트·수치 segments로 분리
- 02출력 검사 10종숫자·출처·금지 표현 등을 검사해 위반 시 사유를 붙여 재생성, 재실패 시 차단원시 숫자 · 엔진 값 불일치 · 인용 무결성 · 금지 표현 · 스키마 등
- 03도구 기반 채팅 에이전트질문에 맞는 조회 도구(계좌·수익률·시세·뉴스·공시)를 골라 호출하고, 조회 결과만으로 답변 작성도구 선택 → 서술 2단계 · 도구 7종 병렬 호출, 최대 3턴·12호출 · 작업 큐(Postgres SKIP LOCKED)
- 04뉴스·공시 수집과 검색뉴스·공시·시세 정기 수집, 답변과 데일리 브리핑의 근거 자료 검색네이버 뉴스 · DART 공시 → 청크 · 임베딩(text-embedding-3-small) → pgvector + 어휘 검색, RRF 융합
- 05TDD 기반 개발검사 규칙·숫자 치환·도구 호출을 테스트로 먼저 정의한 뒤 구현. 고정 포트폴리오 골든 테스트로 계산 결과 회귀 확인pytest · 골든 테스트 · 테스트 708개
운영하며 고친 것
- 01답이 "확인되지 않았습니다"로만 나오던 문제계좌 기록을 읽는 경로에 따라 숫자가 AI에게 넘어가지 않던 근본 원인을 찾아 수정
- 02채팅 답이 느리던 문제모델 교체, 자료 선택 단계의 추론 비활성화, 여러 자료 동시 조회로 대기 시간 단축
- 03멀쩡한 답을 검사가 막던 문제운영에서 막힌 사유를 집계해 가장 많던 원인(각주 위치 때문에 문장을 잘못 나누던 것) 수정
- 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
관련 글
아직 관련 글이 없습니다.