1 ポイント 投稿者 GN⁺ 2024-08-04 | まだコメントはありません。 | WhatsAppで共有

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などがあり、それぞれ異なる言語で書かれている

まだコメントはありません。

まだコメントはありません。