터미널 AI 에이전트 구축 (v8)
터미널에서 직접 작동하는 AI 에이전트를 구축하는 것은 개발자들이 직면하는 현실적인 문제를 해결할 수 있는 강력한 도구입니다. 특히 로컬 환경에서 AI를 활용하면서도 성능과 보안을 고려해야 하는 상황에서는 더욱 중요합니다. 이번 가이드에서는 로컬 LLM API를 활용하여 개발자 친화적인 터미널 AI 에이전트를 구축하는 방법을 단계별로 설명합니다.
1. CLI AI 에이전트 랜드스케이프
현재 터미널 기반 AI 에이전트는 다음과 같은 주요 도구들로 구성됩니다:
- Aider: GitHub Copilot처럼 코드 생성을 위한 터미널 기반 에이전트.
- Continue.dev: VS Code와 유사한 기능을 제공하며, 로컬 LLM과 연동 가능.
- OpenCode: 커뮤니티 기반 코드 생성 도구.
- Custom scripts: 직접 개발한 Python/Go 기반 터미널 스크립트.
이러한 도구들은 대부분 오픈소스이며, 로컬 LLM과의 연동이 가능합니다. 다만 대부분의 경우 외부 API를 사용하는 것이 일반적이므로, 로컬에서 작동하는 간단한 에이전트를 직접 구축하는 것이 더 효율적입니다.
2. 로컬 LLM API 엔드포인트 설정
로컬 LLM을 사용하기 위해 llama.cpp와 FastAPI를 활용하여 간단한 API 서버를 구축합니다.
2.1 LLaMA.cpp 설치
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make
2.2 모델 다운로드 및 서버 실행
# 모델 다운로드 (예: llama3-8B)
wget https://huggingface.co/QuantFactory/Meta-Llama-3-8B-Instruct-Quantized-GGUF/resolve/main/Meta-Llama-3-8B-Instruct.Q4_K_M.gguf
# 서버 실행
./server -m ./Meta-Llama-3-8B-Instruct.Q4_K_M.gguf -c 2048 --port 8080
이제 http://localhost:8080에서 로컬 LLM API를 사용할 수 있습니다.
3. Python CLI 에이전트 구축 (함수 호출 기능 포함)
다음은 간단한 Python 기반 CLI 에이전트입니다. 이 에이전트는 LLM API와 연동하여 코드를 생성하거나 파일을 수정할 수 있습니다.
3.1 설치 및 의존성
pip install requests python-dotenv
3.2 Python 스크립트
# aider.py
import requests
import json
import os
from dotenv import load_dotenv
load_dotenv()
API_URL = "http://localhost:8080/completion"
HEADERS = {"Content-Type": "application/json"}
def call_llm(prompt, max_tokens=512):
data = {
"prompt": prompt,
"max_tokens": max_tokens,
"temperature": 0.5,
"stop": ["\n\n"]
}
response = requests.post(API_URL, headers=HEADERS, json=data)
return response.json()['content'].strip()
def generate_code(file_path, description):
prompt = f"Create code for {description} in {file_path}:\n"
code = call_llm(prompt)
with open(file_path, "w") as f:
f.write(code)
print(f"✅ Generated {file_path}")
if __name__ == "__main__":
import sys
if len(sys.argv) < 3:
print("Usage: python aider.py <file_path> <description>")
sys.exit(1)
generate_code(sys.argv[1], sys.argv[2])
3.3 실행 예시
python aider.py app.py "a simple Flask app"
4. tmux와 통합
터미널에서 코드 작업을 효율적으로 하기 위해 tmux를 활용하여 에이전트를 자동화할 수 있습니다.
4.1 tmux 스크립트 예시
# tmux_session.sh
tmux new-session -d -s ai_agent
tmux send-keys -t ai_agent "python aider.py main.py 'a simple echo server'" Enter
tmux attach -t ai_agent
4.2 실행
chmod +x tmux_session.sh
./tmux_session.sh
5. 커스텀 툴 개발 (코드 검색, Git, 파일 작업)
5.1 코드 검색 툴
# searcher.py
import os
import re
def search_code(pattern, root_dir="."):
matches = []
for root, dirs, files in os.walk(root_dir):
for file in files:
if file.endswith((".py", ".js", ".go")):
file_path = os.path.join(root, file)
with open(file_path, "r") as f:
content = f.read()
if re.search(pattern, content):
matches.append(file_path)
return matches
5.2 Git 연동
import subprocess
def git_diff():
result = subprocess.run(["git", "diff"], capture_output=True, text=True)
return result.stdout
def git_commit(message):
subprocess.run(["git", "add", "."])
subprocess.run(["git", "commit", "-m", message])
6. 컨텍스트 윈도우 관리
대규모 코드베이스에서 LLM의 입력 제한을 해결하기 위해 컨텍스트 윈도우를 줄이는 전략이 필요합니다.
6.1 최근 변경 파일만 포함
def get_context_files():
# 최근 10개 파일만 가져오기
result = subprocess.run(["git", "diff", "--name-only", "HEAD~10"], capture_output=True, text=True)
return result.stdout.strip().split("\n")
7. 로컬 vs API 모델의 성능 및 비용 최적화
| 요소 | 로컬 | API |
|---|---|---|
| 비용 | 0 | $0.1~0.3/1K tokens |
| 성능 | 고속 (GPU 기반) | 느림 (네트워크 지연) |
| 보안 | 최고 | 낮음 |
| 자원 사용 | 높음 | 낮음 |
로컬 모델을 사용하면 빠르고 보안적인 작업이 가능하므로, 개발 환경에서는 로컬 모델을 우선적으로 사용하는 것이 좋습니다.
8. 실전 워크플로우 예시
8.1 단계별 워크플로우
-
파일 생성:
python aider.py server.py "create a simple HTTP server" -
코드 검색:
python searcher.py "def.*login" -
Git 상태 확인:
git status -
코드 리뷰:
git diff -
커밋:
python aider.py commit "add login logic"
8.2 자동화 스크립트
# workflow.sh
python aider.py server.py "simple HTTP server"
python searcher.py "def.*login" # 코드 검색
git diff # 변경 사항 확인
python aider.py commit "add login logic"
결론
터미널 AI 에이전트는 로컬 환경에서 높은 성능과 보안을 제공합니다. 위의 가이드를 통해 직접적으로 사용할 수 있는 간단한 에이전트를 구축하고, tmux와 연동하여 실전 워크플로우를 자동화해 보세요. 이 접근 방식은 특히 개발 환경에서 코드 생성, 검색, Git 연동 등 다양한 작업을 효율적으로 처리할 수 있도록 도와줍니다.
추가 도전
- GPU 최적화: CUDA/ROCm를 활용한 로컬 LLM 가속화
- Go로 재구현: 성능과 메모리 효율성을 고려한 CGO-free Go 라이브러리 개발
- 웹 API 확장: REST API 서버를 통해 외부에서 에이전트를 제어 가능하게 구성
이러한 기능들을 기반으로 터미널 기반 AI 에이전트를 확장해 나가면, 자신만의 커스터마이징된 개발 도구를 만들 수 있습니다.
📥 Get the full guide on Gumroad: https://gumroad.com/l/auto ($5)
Top comments (0)