[NAVER Cloud X PseudoLab Green Developers] 주식투자 도우미 챗봇 개발기 2

정영상·2024년 9월 24일

Stockelper

목록 보기
2/2
post-thumbnail

안녕하세요! NCloud 크레딧을 지원받아 진행하는 주식투자 도우미 챗봇 프로젝트: Stockelper 포스팅이 찾아왔습니다. 이번 포스팅에서는 1차 프로젝트가 마무리된지 약 3개월이 지난 시점에서 진행과정 및 1차 마무리에 대한 내용을 작성하고자 합니다. 기획부터 개발까지 함께하는 프로젝트이다보니 1편과 비교하여 기획에서도 많은 변화가 있었고, 크고 작은 변화를 적용하고 테스트하면서 성장할 수 있었습니다.


Stockelper 프로젝트 개요

📢 프로젝트 배경

  • 이 프로젝트는 전자공시시스템으로부터 제공받은 공시정보와 기타 금융 관련 정보들을 토대로 투자를 도와주는 챗봇을 LLM으로 제작하는 프로젝트입니다.
    • 전자공시시스템(DART)이란, 상장법인 등이 공시서류를 인터넷으로 제출하고, 투자자 등 이용자는 제출 즉시 인터넷을 통해 조회할 수 있도록 하는 종합적 기업공시 시스템인데요, DART로부터 API를 통해 해당 자료들을 제공받을 수 있습니다.
  • 또한, 주식 투자에 영향을 미치는 기업 관련 뉴스데이터들을 수집 및 요약하여 챗봇의 답변에 활용할 수 있습니다.
  • (추가내용) 본 프로젝트에서는 DART API 데이터와 뉴스데이터 이외에 한국투자증권 KIS 오픈API를 사용하여 주가정보를 활용하고, 각종 증권사리포트요약 데이터 등을 추가로 활용했습니다.

📢 프로젝트 목적

  • 주식투자를 해보긴 했으나 매번 확신을 가지고 투자하지 못하는 초보자들을 위해 챗봇을 제작하고자 합니다.
  • 우리 프로젝트에서는 투자 초보자들에게 공시정보를 통해 얻은 투자지표와 산업 트렌드, 호악재 보도 등을 통해 종합적으로 투자 여부를 판단할 수 있도록 방향을 제시하고자 합니다.
  • 투자 조언에 대한 근거는 기업의 공시정보와 관련 보도자료를 통해 종합적으로 도출됩니다.
  • 전체 프로젝트 개발은 네이버클라우드로부터 제공되는 서비스를 통해 진행되며, 서비스 이용 요금은 지원받은 크레딧을 사용하여 진행했습니다.

📢 프로젝트 기간

  • 총 3개월 약 15주 소요
    • 약 4주 간 챗봇에 대한 기획 진행 개발 기간에도 일정 등을 고려하여 기획을 수정
    • 약 6주 간 기획 내용대로 개발 및 테스트 실제 개발 기간 약 8주 소요
    • 이후 2주 간 보수 및 개선 개발 기간 연장으로 인해 따로 디벨롭은 하지 않았습니다.

📢 팀 구성 및 역할 분담

  • 최종 팀 인원 : 5명
    • LLM 파이프라인 구성 & 팀 리딩 1명
    • RAG VectorDB 데이터 수집 1명
    • 클라우드 엔지니어링 & 네트워크 1명
    • 백엔드 & 서비스 배포 1명
    • 프론트엔드 & 디자인 1명

개발 과정


개발 기록

  • 아래 링크에 프로젝트 기간 동안의 회의록과 개발 내용들이 수록되어 있습니다.
  • 매주 화요일마다 온라인 회의를 통해 한 주간 진행 상황을 공유하고 방향을 잡아나갔습니다.
  • 작업 내용은 게시글로, 일정 관리는 TODO 리스트를 만들어 카드 형태로 관리했습니다.

최종 시스템 아키텍쳐

주요 특징

  • Ncloud 서비스를 활용하였고, 총 3대의 VPC를 활용(Bastion, Backend+Frontend, LLM 서버)
  • 지원 받은 크레딧으로는 GPU 서버를 활용할 수 없었고, 외부 서버를 활용하려 했으나 네트워크 및 쿠버네티스 이슈 발생하여 문서 검색 증강 생성시 CPU 사용
  • 외부 데이터로는 뉴스 데이터, 증권가 리포트 요약 데이터, DART API, 한국투자증권 API 사용
  • LLM은 OpenAI ChatGPT 사용(4o-mini 출시 이전 gpt-3.5-turbo 사용)
  • CLOVA Studio에서 제공하는 문서 요약 서비스를 사용하여 뉴스 데이터를 요약

클라우드 리소스 및 네트워크 리소스

  • 외부 도메인 등록에 의한 Network Resources에 Global DNS, Certificate Manager 요소 추가
  • ALB Ingress Controller : Stockelper Application Deployment를 위한 Ingress Controller
  • File System : 유동적인 Pod별 Storage Management 작업을 위한 NFS Provisioning System
  • Bastion Server : 공인 ip를 통한 클러스터 외부 노출 방지, 개발 결과물 배포 테스트를 위한 Docker, NFS Provisioning Master Node 운용, Kubeconfig를 통한 K8s Cluster Controller
  • Network Resources
    • LoadBalancer : 특정 주소가 서비스에 과도하게 몰릴 경우를 대비한 LoadBalancer + 도메인 연동 작업 수행
    • VPC : Server의 ACG 설정을 통한 통신 및 보안 역할 수행
    • NAT Gateway : 외부 사설 IP의 접근을 공인 IP화 하여 연결해주는 서비스 + Subnet 네트워크 접근 시 IP 주소/포트 기반 필터링 기능 역할을 수행하는 NACL과 직접적인 상호작용
    • Global DNS : 외부 도메인 ↔ 로드밸런서 연결 및 Certificate DNS 인증
    • Certificate Manager : https 연결에 필요한 SSL 인증서 발급

VPC 네트워크

VPC

VPC캡쳐
VPC 생성 결과

Subnet

  • VPC 네트워크를 분리 → 목적에 맞게끔 대역폭 할당 관리 가능
Subnet캡쳐
Subnet 할당 결과

Network ACL

  • Subnet 네트워크 접근 시 IP 주소/포트 기반 필터링 기능 ⇒ Subnet에 대한 네트워크 보완 관리 가능한 서비스
ACL캡쳐
Network ACL 서비스

NAT(Network Address Translation) Gateway

  • 외부 사설 IP의 접근을 공인 IP화하여 연결해주는 서비스
  • NAT Gateway Subnet 생성시 자동으로 생성
NAT캡쳐상세
NAT Gateway 서비스 상세 정보

NAT캡쳐라우트
NAT Gateway 서비스 라우트 정보

Route Table

  • VPC Subnet에 Route Table 연결을 통해 네트워크 경로 제어
  • Subnet 생성시 일반 Subnet을 생성하게 될 경우 자동으로 default route table 생성
  • Route Table → 0.0.0.0/0 NATGW Inbound Route 추가를 통해 외부 인터넷 연결 설정 (Docker image pull 외 다수 작업 필요)
라우트테이블
Route Table private/public

NAT캡쳐라우트
Route Table private 상세 내용

NAT캡쳐라우트
Route Table public 상세 내용

NCloud Server ACG

  • ACG(Access Control Group)는 서버 간 네트워크의 접근을 제어하고 관리할 수 있는 IP/Port 기반 필터링 방화벽 서비스
  • ACG를 이용하면 기존 방화벽(iptables, ufw, Windows 방화벽)을 개별적으로 관리할 필요 없이 서버 그룹에 대한 ACG 규칙을 손쉽게 설정하고 관리할 수 있음
  • 네이버 클라우드 플랫폼에서 기본으로 제공하는 ACG를 사용하거나 직접 생성한 ACG에 규칙을 설정해서 사용할 수 있음
ACGINOUT
ACG Inbound/Outbound

ACG상세1
ACG 상세 규칙 1

ACG상세2
ACG 상세 규칙 2

ACG상세3
ACG 상세 규칙 3

서비스 파이프라인

서비스파이프라인
서비스 파이프라인

주요 특징

  • 사용자 쿼리 입력시 rewrite 과정을 통해 생략된 내용을 추론하도록 함
  • 사용자 쿼리 기반으로 어떤 tool을 사용할 것인지 observation -> thought를 통해 reasoning
  • 추론 결과와 tool description을 토대로 action을 생성하여 tool을 결정
  • 결정된 tool 함수를 통해 각 기능 수행
  • 기능 수행을 통한 데이터와 유저의 쿼리를 기반으로 RAG 수행 -> 답변 생성
서비스파이프라인상세
서비스 파이프라인 상세

주요 기능

  • 주식 분석
    • 한국투자증권 Open API를 활용한 주식 분석을 텍스트 형태로 제공합니다.
  • 종목 관련 뉴스 제공
    • 종목과 관련된 최신 뉴스를 종합하여 텍스트 형태로 제공하고, 원본 뉴스 페이지로 이동할 수 있는 뉴스카드를 제공합니다.
    • 종목 뉴스 수집 시 1500자가 넘어가는 경우 CLOVA Summary를 사용하여 요약한 채로 저장했습니다.
  • 재무제표 분석
    • DART Open API를 이용한 재무제표 분석 내용을 텍스트 형태로 제공합니다.
  • 투자 전략 및 방법
    • 한국은행한국거래소에서 발행한 투자 관련 문서들을 임베딩화하여 벡터DB에 저장하고 쿼리와 관련된 문서를 검색 및 활용하여 텍스트 형태로 답변을 제공합니다.
  • 증권가 분석 리포트
    • 컴퍼니 가이드의 증권가 분석 요약리포트를 활용하여 벡터DB에 저장하고 쿼리와 관련된 문서를 검색 및 활용하여 텍스트 형태로 답변을 제공합니다.

개발 결과물

  • 실제 구현한 개발 결과물입니다.

Login

로그인화면1
로그인 화면

로그인화면2
로그인 화면

로그인화면3
로그인 화면

주식 분석

주식분석1
주식 분석 결과

주식분석2
주식 분석 결과

종목 관련 뉴스 제공

뉴스
종목 관련 뉴스 제공 결과

재무제표 분석

재무제표
재무제표 분석 결과

투자 전략 및 방법

투자전략
투자 전략 및 방법 답변 생성 결과

증권가 분석 리포트

재무제표
증권가 분석 리포트 결과 제공

회고

  • 네이버클라우드 크레딧을 지원받아 프로젝트를 진행하면서 클라우드 환경 경험을 쌓을 수 있었고, 사용량을 측정하면서 자원 배분을 효율적으로 하는 방법에 대해서도 배울 수 있었습니다.
  • 다만, VPC 내에서 쿠버네티스 등의 서비스를 직접 구현하는 것은 다소 어려움이 있었습니다. 이 부분은 클라우드에서 직접 지원하는 서비스를 이용했을 때 문제를 해결할 수 있었습니다.

프로젝트 기획 및 개발 참여

  • 프로젝트 진행하는 팀원들과 함께 기획을 하고 개발하는 과정에서 한 차례 사이클을 경험해볼 수 있었습니다.
  • 이후 유사한 프로젝트를 진행하더라도 경험을 살려 문제를 해결할 수 있을 것 같습니다.
  • LLM을 활용한 서비스 개발에 참여함으로써 좀 더 다양한 곳에도 활용할 수 있을 것 같다는 자신이 생겼습니다.

향후 계획

  • 프론트엔드 및 백엔드 연결 과정에서 발생하는 여러 이슈를 해결해야 합니다.
  • 각 도구 별 역할을 재정의하고 답변 출력 방식에 대한 수정이 필요합니다.
  • 답변 내용을 토대로 유저가 투자 정보를 얻고 지식을 확장해 나갈 수 있도록 예상 시나리오를 사전에 정의하여 알맞은 대화를 이어나갈 수 있도록 수정할 계획입니다.

profile
일단 합니다

0개의 댓글