HN公開: Bashで書かれたLLM向けコマンドラインインターフェース Ell
(github.com/simonmysun)ellA コマンドラインインターフェース
機能
- ターミナルからLLMsに質問
- パイプフレンドリー
- ターミナルのコンテキストをLLMsに渡して質問
- ターミナルでLLMsとチャット
- 関数呼び出しとテンプレートによる追加機能をサポート
要件
- bash
- jq(JSON解析用)
- curl(HTTPSリクエスト送信用)
- perl(PCRE用。POSIX bashはlook-aheadおよびlook-behind正規表現をサポートしないため。記録モードを使わないなら不要)
インストール
git clone --depth 1 https://github.com/simonmysun/ell.git ~/.ellrc.d
echo 'export PATH="${HOME}/.ellrc.d:${PATH}"' >> ~/.bashrc
または
git clone --depth 1 git@github.com:simonmysun/ell.git ~/.ellrc.d
echo 'export PATH="${HOME}/.ellrc.d:${PATH}"' >> ~/.bashrc
このコマンドはリポジトリを .ellrc.d ディレクトリにクローンし、PATHに追加する
設定
以下はGoogleの gemini-1.5-flash を使う設定例:
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
- stdinから読み込む:
cat somecode.py | ell -f -
- 追加プロンプトをその場で加える:
(cat somecode.py; echo "Explain this code") | ell -f -
- ターミナル入出力を記録してコンテキストとして使う:
ell -r
# do random stuff
ell What does the error code mean?
ell How to fix it?
- 対話モードで実行:
ell -i
- 記録モードと対話モードを組み合わせる:
ell -r -i
- テンプレートを指定して記録モードと対話モードを開始:
ell -r -i -t ctf-gemini
または
ell -r -i -t ctf-openai
テンプレート作成
テンプレートの使い方の詳細はTemplatesを参照
スタイリング
スタイリングの詳細はStylingを参照
プラグイン
プラグインとは、ellから呼び出せるスクリプトを指す。LLMプロバイダーのプラグインは含まれない。詳細はTemplatesを参照
考慮すべきリスク
Risks Considerationを参照
FAQ
- Q: なぜ「ell」という名前なのですか?
- A: 「ell」はshellとLLMの組み合わせ。shellスクリプトでLLMバックエンドを使う。「shellm」も検討されたが誤解を招きやすいため「ell」に変更。短くて覚えやすい
- Q: なぜBashで書かれているのですか?
- A: BashはUnix系システムで最も一般的なシェルであり、より複雑な言語を使う必要がないため
- Q: ellと他の類似プロジェクトの違いは何ですか?
- A: ellはほぼ純粋なBashで書かれており、非常に軽量でインストールが簡単。拡張や修正も非常に容易。パイプフレンドリー
類似プロジェクト
- chatgpt-cli: Goで書かれたChatGPT CLI
- gpt-cli: Pythonで書かれた各種LLMバックエンド向けCLI
- gptcli: TypeScriptで書かれたOpenAI LLM向けCLI
- x-cmd: POSIX bashとawkで書かれた各種ツール集
- gpt-bash-cli: OpenAI API向けCLI。リクエストとレスポンスをデータベースに保存
- mods: Goで書かれたLLMと会話するCLIツール
- nicechat: Node.jsで書かれたOpenAIモデル向けCLIチャットインターフェース
- autocomplete-sh: bashで書かれたLLM向けCLI
- plandex: Goで書かれたAI統合ワークフロー開発向けCLIツール
- llm: Pythonで書かれたLLM高度操作向けCLIツール
- aichat: Rustで書かれた各種LLMプロバイダーと会話するCLIツール
貢献
貢献はいつでも歓迎! アイデア、提案、またはバグ報告があればIssueを開くかPull Requestを送ってください
ライセンス
このプロジェクトはMITライセンスの下で提供される。詳細はLICENSEファイルを参照
GN⁺の要約
- ellはBashで書かれたLLMコマンドラインインターフェースで、軽量でインストールが簡単
- さまざまなLLMモデルとの統合をサポートし、パイプフレンドリー
- 記録モードと対話モードを組み合わせることで、ターミナルのコンテキストを活用できる
- 類似プロジェクトにはchatgpt-cli、gpt-cli、gptcliなどがあり、それぞれ異なる言語で書かれている
まだコメントはありません。