터미널 어시스턴트는 LLM(Large Language Model)을 활용한 대화형 터미널 제어 시스템입니다. 이 프로그램은 사용자가 자연어로 입력한 명령을 해석하여 적절한 터미널 명령어로 변환하고 실행합니다. RAG(Retrieval-Augmented Generation) 기술을 활용하여 유사한 명령어를 추천하며, 실행 결과를 사용자 친화적인 방식으로 제공합니다.
주요 특징:
- 자연어 기반 터미널 명령 실행
- RAG를 이용한 명령어 추천 시스템
- 직관적인 그래픽 사용자 인터페이스(GUI)
- 실시간 명령어 실행 및 결과 표시
주의: 이 프로그램은 현재 macOS 운영 체제에서만 동작합니다.
-
시스템 요구사항 확인:
- macOS 운영 체제
- Python 3.8 이상
- pip (Python 패키지 관리자)
-
프로젝트 클론:
git clone https://github.com/flging/terminal_assistant.git cd terminal_assistant -
가상 환경 생성 및 활성화:
python3 -m venv venv source venv/bin/activate -
필요한 패키지 설치:
pip install -r requirements.txt -
UPSTAGE API 키 준비:
- https://www.upstage.ai/ 에서 API 키를 발급받으세요.
- 발급받은 API 키를 안전한 곳에 보관하세요.
-
프로그램 실행:
python main.py -
API 키 설정:
- 프로그램 창 상단의 "API Key" 입력 필드에 UPSTAGE API 키를 입력합니다.
- "Set API Key" 버튼을 클릭하여 키를 설정합니다.
-
명령어 입력:
- 하단의 입력 필드에 원하는 작업을 자연어로 입력합니다.
- 예: "현재 디렉토리의 파일 목록을 보여줘"
-
명령어 실행:
- 입력 후 "Send" 버튼을 클릭하거나 Enter 키를 누릅니다.
- 시스템이 입력을 해석하고 적절한 터미널 명령어를 실행합니다.
-
결과 확인:
- 실행된 명령어와 그 결과가 오른쪽 "Command Execution Results" 창에 표시됩니다.
- 시스템의 응답과 추가 설명은 왼쪽 채팅창에 표시됩니다.
-
RAG 기능 사용:
- "Use RAG" 체크박스를 통해 RAG 기능을 켜거나 끌 수 있습니다.
- RAG가 활성화되면, 시스템은 유사한 명령어를 추천하고 더 정확한 결과를 제공합니다.
-
대화 지속:
- 이전 명령의 컨텍스트를 유지하며 연속적인 작업을 수행할 수 있습니다.
- 예: "이 중에서 txt 파일만 보여줘"와 같은 후속 명령 가능
-
프로그램 종료:
- 창을 닫거나 터미널에서 Ctrl+C를 눌러 프로그램을 종료합니다.
주의사항:
- 시스템 명령을 실행하므로, 신뢰할 수 있는 작업만 수행하세요.
- API 사용에 따른 비용이 발생할 수 있으니 사용량을 모니터링하세요.
이 프로젝트는 RAG(Retrieval-Augmented Generation) 기능을 위해 다음과 같은 DB 관련 파일들을 사용합니다:
이 Python 스크립트는 RAG 데이터베이스를 업데이트하는 데 사용됩니다.
사용 방법:
python UpdateDB.py
이 스크립트를 실행하면 PureDB.json 파일의 내용을 읽어 임베딩을 생성하고, 그 결과를 RAG.json 파일에 저장합니다.
이 파일은 원본 명령어 데이터베이스입니다. 각 명령어에 대한 설명과 예시를 포함하고 있습니다. UpdateDB.py 스크립트의 입력으로 사용됩니다.
이 파일은 UpdateDB.py 스크립트에 의해 생성되며, 각 명령어의 임베딩 정보를 포함하고 있습니다. 터미널 어시스턴트의 RAG 기능에서 실제로 사용되는 데이터베이스 파일입니다.
주의: RAG.json 파일은 자동으로 생성되므로 직접 수정하지 마세요. 명령어 데이터베이스를 업데이트하려면 PureDB.json 파일을 수정한 후 UpdateDB.py 스크립트를 실행하세요.
이 프로젝트는 [명품인재×업스테이지] LLM Innovators challenge 출품을 위해 제작되었습니다. 모든 저작권은 제작자에게 있으며, 공모전 평가 목적 외의 무단 사용, 복제, 배포를 금지합니다. 본 프로젝트에 대한 문의사항은 아래 연락처로 문의 바랍니다.