- ell은 Bash로 작성된 LLM용 명령줄 인터페이스로, 터미널에서 LLM에 질문하고 터미널 문맥을 함께 전달할 수 있게 함
- 파이프 입력, 파일 입력, 표준 입력을 지원해 기존 Unix 도구 흐름과 함께 사용할 수 있으며, 대화형 모드에서는 문맥을 유지한 채 채팅할 수 있음
- 템플릿을 통해 함수 호출과 LLM 제공자별 기능을 지원하고, 민감 정보 삭제 기능도 포함함
- 사용에는 bash 4.1 이상, coreutils 또는 OS X 유틸리티, jq, curl이 필요하며, record mode를 쓰는 경우 perl과 util-linux의
script 명령이 추가로 필요함
- Google
gemini-1.5-flash와 OpenAI gpt-4o-mini 설정 예시가 제공되며, 거의 순수 Bash 구현이라 가볍고 설치·확장·수정이 쉽다는 점을 내세움
ell이 제공하는 기능
- ell은 Bash로 작성된 LLM용 명령줄 인터페이스임
- 터미널에서 LLM에 질문할 수 있고, 파이프와 함께 쓰기 쉽게 설계됨
- 터미널의 문맥을 LLM에 전달한 뒤 질문할 수 있음
- 터미널 안에서 LLM과 채팅할 수 있음
- 템플릿을 통해 함수 호출과 추가 기능을 지원함
- 민감 정보 삭제 기능이 포함되어 있으며 관련 항목으로 #14가 연결되어 있음
요구 사항과 설치
- 기본 사용에는 다음 도구가 필요함
- bash 4.1 이상
- coreutils 또는 OS X 유틸리티
- JSON 파싱용 jq
- HTTPS 요청용 curl
- record mode를 사용하지 않으면 다음 도구는 필수가 아님
- PCRE용 perl
- 터미널 입력과 출력을 기록하기 위한 util-linux의
script 명령
- 설치는 저장소를
~/.ellrc.d에 clone하고, 해당 경로를 PATH에 추가하는 방식임
git clone --depth 1 https://github.com/simonmysun/ell.git ~/.ellrc.d
echo 'export PATH="${HOME}/.ellrc.d:${PATH}"' >> ~/.bashrc
설정 방식
- 설정 문서는 Configuration에 있음
- Google
gemini-1.5-flash 사용 예시는 ~/.ellrc에 다음 값을 설정함
ELL_API_STYLE=gemini
ELL_LLM_MODEL=gemini-1.5-flash
ELL_TEMPLATE=default-gemini
ELL_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ELL_API_URL=https://generativelanguage.googleapis.com/v1beta/models/
- OpenAI
gpt-4o-mini 사용 예시는 다음 설정을 사용함
ELL_API_STYLE=openai
ELL_LLM_MODEL=gpt-4o-mini
ELL_TEMPLATE=default-openai
ELL_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ELL_API_URL=https://api.openai.com/v1/chat/completions
사용 예시
ell "What is the capital of France?"
- 모델을 지정하고 파일을 입력으로 사용할 수 있음
ell -m gpt-4o -f user_prompt.txt
cat somecode.py | ell -f -
- 템플릿에 넣지 않고 즉석에서 추가 프롬프트를 붙일 수 있음
(cat somecode.py; echo "Explain this code") | ell -f -
- record mode는 터미널 입력과 출력을 기록해 이후 질문의 문맥으로 사용함
ell -r
# do random stuff
ell What does the error code mean?
ell How to fix it?
- 대화형 모드는
-i로 실행하며, 대화형 모드에서는 문맥 기반 채팅을 위해 record mode가 자동 활성화됨
ell -i
- 템플릿을 지정하면서 record mode와 대화형 모드를 함께 시작할 수 있음
ell -r -i -t ctf-gemini
ell -r -i -t ctf-openai
템플릿, 스타일링, 플러그인
- 템플릿 작성 문서는 Templates에 있음
- ell에서 LLM 제공자의 플러그인 지원을 사용하는 기능은 템플릿으로 구현됨
- 스타일링 문서는 Styling에 있음
- 플러그인 문서는 Plugins에 있음
- 여기서 말하는 Plugin은 ell이 호출할 수 있는 스크립트를 뜻하며, ell의 기능 확장에 사용할 수 있음
- LLM 제공자가 지원하는 플러그인은 이 범주에 포함되지 않으며, 해당 기능은 템플릿 문서를 참조해야 함
이름과 구현 선택
ell이라는 이름은 shell과 LLM의 조합임
shellm도 고려됐지만 she llm으로 오해될 수 있어 제외됨
ell은 짧고 입력하기 쉬우며 기억하기 쉽고, 활성 소프트웨어와 충돌하지 않는 이름으로 소개됨
- Bash로 작성한 이유는 Bash가 Unix 계열 시스템에서 가장 흔한 셸이고, 이 용도에 더 복잡한 언어가 필요 없기 때문임
- 유사 프로젝트와의 차이로 거의 순수 Bash로 작성돼 가볍고 설치가 쉬우며, 확장과 수정이 쉽다는 점을 제시함
- 파이프 친화적이라 다른 도구와 조합해 쓰도록 설계됨
관련 문서와 라이선스
- 고려할 위험은 Risks Consideration에 정리되어 있음
- 기여는 이슈 또는 pull request로 받을 수 있음
- 라이선스는 MIT License이며, 자세한 내용은 LICENSE 파일에 있음