핵심 요약
yeah는 LLM을 활용해 사용자의 질문에 yes 또는 no로 답하는 명령줄 도구이다. 텍스트 출력이나 프롬프트 없이 오직 종료 코드(exit code)만을 반환하여 쉘 스크립트 내에서 조건문으로 활용하기에 최적화되어 있다. Anthropic과 OpenAI 모델을 지원하며 환경 변수를 통해 간단히 설정할 수 있다. 보안을 위해 macOS의 sandbox-exec와 Linux의 landlock을 사용해 파일 쓰기 권한을 제한하는 안전 장치를 포함한다.
배경
Go 언어 설치 환경, Anthropic 또는 OpenAI API 키, 기본적인 쉘 스크립트 지식
대상 독자
쉘 스크립트 자동화에 LLM의 판단 능력을 결합하고 싶은 개발자
의미 / 영향
LLM의 출력을 텍스트가 아닌 종료 코드로 추상화함으로써 기존 유닉스 철학에 부합하는 도구 체인을 구성할 수 있게 한다. 이는 복잡한 정규표현식이나 파싱 로직 없이도 자연어 기반의 시스템 상태 점검이나 로직 분기를 가능하게 한다.
섹션별 상세
yeah는 질문에 대한 결과를 표준 출력 대신 프로세스 종료 코드로 전달한다. 참(true)일 경우 0, 거짓(false)일 경우 1, 에러 발생 시 2를 반환하여 쉘 스크립트의 if 문에서 직접적인 조건 검사 도구로 사용할 수 있다.
bash
yeah does 2 + 2 equal 4?
echo $?
# 0
yeah does 2 + 2 equal 5?
echo $?
# 1질문에 대한 결과를 종료 코드로 확인하는 기본 실행 예시
bash
if yeah is the disk more than 90% full?; then
echo "Disk space critical!"
fi
if yeah does main.go contain a function called main?; then
echo "Found main function"
fi쉘 스크립트의 조건문 내에서 yeah를 활용하여 로직을 분기하는 예시
Anthropic의 Claude와 OpenAI의 GPT 모델을 모두 지원하며, 기본값으로 Anthropic의 최신 모델을 사용한다. YEAH_PROVIDER, YEAH_MODEL 등의 환경 변수를 설정하여 모델과 API 게이트웨이를 자유롭게 변경할 수 있다.
설치 과정은 Go 언어 환경에서 go install 명령어를 통해 간단히 수행된다. 별도의 복잡한 설정 파일 없이 환경 변수만으로 API 키와 모델 정보를 관리할 수 있어 이식성이 높다.
LLM의 비결정적 특성으로 인한 위험을 줄이기 위해 운영체제 수준의 샌드박싱 기술을 적용했다. macOS에서는 sandbox-exec를 통해 파일 쓰기를 거부하고, Linux에서는 landlock을 사용하여 시스템 접근 권한을 제한한다.
실무 Takeaway
- 쉘 스크립트 내에서 복잡한 텍스트 파싱 없이 LLM의 판단 결과를 조건문으로 즉시 활용할 수 있다.
- macOS와 Linux 환경에서 제공되는 샌드박싱 기능을 통해 LLM 도구의 보안 취약점을 최소화했다.
- 환경 변수 기반의 설정을 통해 Anthropic과 OpenAI 중 선호하는 모델을 유연하게 선택하여 사용할 수 있다.
언급된 리소스
GitHubgithub.com/crawshaw/yeah
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료