Skip to content

Latest commit

 

History

History
428 lines (287 loc) · 11.5 KB

README.md

File metadata and controls

428 lines (287 loc) · 11.5 KB

2024 KookminUniv SW 캡스톤 디자인 5조
Github page : https://kookmin-sw.github.io/capstone-2024-05/



📔 목차


💡 프로젝트 소개


프로젝트 목표

사용자가 입력한 자연어를 바탕으로 Amazon Web Services(AWS) CloudFormation의 Template을 생성하여 복잡한 문법을 익히지 않고도 클라우드 인프라 관리를 돕는 서비스를 개발하는 것입니다.
AWS CloudFormation이란?


프로젝트 개발 배경

CloudFormation은 AWS 리소스를 자동으로 생성해 주는 서비스입니다.
사용하려는 AWS 리소스를 템플릿 파일로 작성하면, CloudFormation이 이를 분석하여 AWS 리소스를 생성합니다.
하지만 CloudFormation 서비스를 사용하기 위해서는 먼저 CloudFormation의 개념과 템플릿 언어를 학습하여야 합니다.
또 템플릿이 길고 복잡해질 경우 오류를 찾기 힘들고 관리하기가 어려워집니다.
우리는 이에 불편함을 느끼고 CloudFormation의 구체적인 문법을 모르더라도, 자연어를 통해 AWS 인프라를 구성할 수 있는 서비스를 개발하기로 하였습니다.


소개 영상


기대 효과

생산성 증가

7,000개가 넘는 AWS CloudFormation 문서를 읽고 이해하지 않아도 쉽고 빠르게 인프라를 구성할 수 있습니다.

정확도 증가

AWS CloudFormation에 특화된 서비스로 기존 GPT-4 모델에 비해 정확하고 신뢰성 있는 템플릿을 생성합니다.

재사용성 증가

생성된 템플릿을 다른 사용자가 재사용 할 수 있고, LLM fine-tuning을 위한 학습 데이터로 활용할 수 있습니다.



📌 주요 기능

템플릿 생성

RAG 기법을 적용하여, 사용자 입력을 바탕으로 관련이 있는 AWS CloudFormation 공식 문서를 검색합니다. 사용자의 입력과 검색된 관련 문서를 함께 GPT-4의 프롬프트로 입력하여 템플릿 파일을 생성합니다.

유효성 검증

생성한 템플릿은 Validation API를 호출하여 유효성을 확인합니다. 유효하지 않은 템플릿은 Self-Feedback을 통해 스스로 개선 후 다시 유효성을 확인합니다. 결과적으로 유효한 템플릿만을 사용자에게 반환합니다.

템플릿 에디터

생성된 템플릿은 JSON 형식에 맞게 구조화 되어 사용자에게 보여집니다. VPC ID 등 사용자가 직접 입력해야 하는 내용을 바로 수정할 수 있습니다. 수정한 Template은 JSON 파일로 다운받아 바로 AWS CloudFormation에서 사용할 수 있습니다.

Template Hub

생성된 템플릿을 사용자 간 공유할 수 있습니다. 템플릿을 생성할 때 AWS 리소스 기반 Hashtag를 추출합니다. 사용자들은 Template Hub에서 Hashtag 기반으로 검색하여 필요한 템플릿을 찾을 수 있습니다.



📃 수행 결과

✅ 100개의 데이터로 테스트를 진행하여 GPT-4 대비 정확도가 65% 높다는 결과를 얻었습니다.

          Only GPT         : 100개의 템플릿 중 46개 유효 (46%)
         GPT + RAG         : 100개의 템플릿 중 65개 유효 (65%)
 GPT + RAG + Self-Feedback : 100개의 템플릿 중 76개 유효 (76%)

✅ 사용자의 요구사항을 94% 반영하는 데에 성공했습니다.

1. 사용자의 요청에서 요구사항을 선정합니다.
2. 생성된 템플릿에서 요구사항 충족 여부를 확인합니다.
3. 비율(충족된 요구사항/전체 요구사항)을 통해 성능을 계산합니다.

테스트 결과 143개의 요구사항 중 135개를 충족하였습니다.



🛠️ 기술스택

🤖 AI

Framework

💾 Backend

Framework
Database

🖥️ Frontend

Framework

♾️ DevOps

Cloud
CI/CD

📚 Tools

Version Control
Project Management
Design


💻 서비스 구조도

orderFlow



🧑‍💻 팀 소개

  • 윤상원[팀장]
  • 하준혁
  • 성창엽
  • 이현승
  • 홍승현



🔎 실행 방법

Common

git clone https://github.com/kookmin-sw/capstone-2024-05.git
Frontend
cd frontend
yarn
yarn dev
Backend

Template Validation API

AWS CLI Configure

1. aws 접속 후 IAM(Identity and Access Management) 접속
2. 사용자 - 사용자 생성
3. 권한 정책 - 권한추가
    - cloudformation 검색 후 나온거 전부 추가함. (에러 나오면서 두 개인가 빠짐)
4. 보안자격증명 - 액세스 키 만들기
5. 콘솔에서 aws configure 실행한 뒤
    - AWS Access Key ID 입력
    - AWS Secret Access KEy 입력
    - Default region name : ap-northeast-2 입력
    - Default output format : json 입력

How to install (without Docker)

  • Backend 디렉토리로 이동
cd backend
  • Python 가상 환경 설정
python -m venv .venv
source venv/bin/activate
  • 필요한 package 설치
pip install -r requirements.txt
  • AWS CLI Configure 설정

  • 실행

cd app
uvicorn main:app --host=0.0.0.0 --port=8000

How to install (with Docker)

  • repository clone
git clone https://github.com/kookmin-sw/capstone-2024-05.git
  • Backend 디렉토리로 이동
cd backend
  • Docker 빌드 후 내부 컨테이너 진입
docker build . -t [image name]
docker run -it -p [host port]:8000 --env-file .env [image name]
  • AWS CLI Configure 설정

  • 실행

cd app
uvicorn main:app --host=0.0.0.0 --port=8000

ENV

DB_URL

ACCESS_TOKEN_EXPIRE_MINUTES

SECRET_KEY

ALGORITHM

PINECONE_APIKEY

OPENAI_APIKEY

서버 디렉토리 구조

- /app
    - /api : Functional APIs
        - /routes
            - hashtag.py
            - templates.py
            - users.pu
        - router.py
    - /db : Database Management
        - database.py
        - models.py
    - /retrieval : RAG Implementation
        - init_vector_db.py
        - markdown_splitter.py
        - rag_prototype.py
        - rag.py
        - settings.py
    - /static : Static Files
        - /examples
            - example-error.json
            - example-valid.json
        - tmp.json
    - /templates : HTML Templates
        - main.html
    - /utils : Utility Modules
        - auth.py
        - gpt.py
        - setup.py
    - main.py
- .env
- README.md
- requirements.txt
- Dockerfile



🗂 문서

📢 최종 발표 자료 📺 시연 동영상 🖼️ 포스터 📄 수행 보고서