이 프로젝트는 암호화폐 투자 자문을 위한 챗봇 시스템입니다. 백엔드(Node.js)와 프론트엔드(React)로 구성되어 있으며, 사용자의 질문에 대해 실시간 암호화폐 데이터(시세, 트렌드, 예측, 뉴스)를 기반으로 AI 모델이 분석하여 투자 조언을 제공합니다.
이 프로젝트는 백엔드와 프론트엔드로 구성되어 있습니다. 각 파트를 개별적으로 실행해야 합니다.
Node.js Express 서버를 실행합니다. 이 서버는 챗봇의 핵심 로직과 데이터 API를 제공합니다.
cd backend
npm install
npm startReact 개발 서버를 실행합니다. 이 서버는 사용자 인터페이스를 제공하며 백엔드 API와 통신합니다.
cd frontend/my-dashboard
npm install
npm start이제 웹 브라우저에서 http://localhost:3000으로 접속하여 애플리케이션을 확인할 수 있습니다.
챗봇은 POST /api/chat 엔드포인트를 통해 사용자 질문을 받으며, 내부적으로 다음 API들을 호출하여 데이터를 수집하고 AI 모델의 답변 생성에 활용합니다.
-
코인 정보 API (
/api/coins/:coinSymbol)- 특정 코인(예: bitcoin, dogecoin)의 현재 가격, 24시간 변동률 등 실시간 시세 정보를 제공합니다.
chat.controller.js내extractCoinSymbol함수를 통해 사용자 질문에서 코인 심볼을 추출하거나, 기본값으로 'bitcoin'을 사용합니다.
-
트렌드 정보 API (
/api/trends/:coinSymbol)- 특정 코인에 대한 검색량 트렌드(오늘/어제 검색량, 검색량 분류) 데이터를 제공합니다.
-
예측 정보 API (
/api/predict/:coinSymbol)- 특정 코인에 대한 AI 모델의 상승/하락/유지 예측 데이터를 제공합니다.
-
뉴스 정보 API (
/api/news/:newsQuery)- 특정 코인 또는 일반적인 암호화폐 관련 최신 뉴스 헤드라인을 제공합니다.
chat.controller.js내extractCoinSymbol함수를 통해 뉴스 쿼리를 추출하거나, 기본값으로 'cryptocurrency'를 사용합니다.
이러한 API들로부터 수집된 데이터는 AI 모델(Hyperclova service)에 전달될 시스템 프롬프트로 가공되며, AI 모델은 이 데이터를 기반으로 사용자 질문에 대한 투자 자문 답변을 생성합니다.
백엔드 서버를 실행하기 위해서는 backend/ 디렉터리 내에 .env 파일이 반드시 필요합니다.
PORT=5000
HCX_ENGINE_ID=ft-hcx-ko-coin-20250707
AUTHORIZATION_KEY=nv-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
CLOVA_API_KEY=nv-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
NCP_ACCESS=ncp_iam_xxxxxxxxxxxxxxxxxxxxxxxxx
NCP_SECRET=ncp_iam_xxxxxxxxxxxxxxxxxxxxxxxxx
OBJ_BUCKET=my-coin-bucket
OBJ_PATH=dataset/hyperclova_training_tuning_format.csv
OBJ_ACCESS=ncp_iam_xxxxxxxxxxxxxxxxxxxxxxxxx
OBJ_SECRET=ncp_iam_xxxxxxxxxxxxxxxxxxxxxxxxx
NEWSAPI_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SERPAPI_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-
PORT: 서버가 구동될 포트(기본값 5000)
-
HCX_ENGINE_ID: HyperClova X 엔진 ID
-
AUTHORIZATION_KEY / CLOVA_API_KEY: HyperClova API 사용을 위한 인증키
-
NCP_ACCESS / NCP_SECRET: Naver Cloud Platform Object Storage 인증키
-
OBJ_BUCKET / OBJ_PATH / OBJ_ACCESS / OBJ_SECRET: 데이터셋 파일 경로 및 인증 정보
-
NEWSAPI_KEY: NewsAPI를 이용한 뉴스 수집용 키
-
SERPAPI_KEY: Google Trends에서 사용하는 SerpApi 키
- .env 파일이 없거나, 필수 값이 비어 있을 경우 서비스 일부 또는 전체가 동작하지 않을 수 있습니다.