はじめに
こんばんは。
本日も業務お疲れ様です!☕️
ところで、AIって便利ですよね。
Claude とか、もう相棒超えて恋人って感じですよね。
でも最近、その恋人に 超しょうもないタスク 与えていませんか?
冗談です。
でも、「それ、LLMはオーバスペックじゃないか?」という作業をLLMに頼むことが最近増えています。(私の所感)
ライブラリのAPI呼び出し方法をきいたり、コマンドがわからなくて聞いたり、、、ググればすぐ出てくるしょうもないことをLLMに聞きまくっていませんか?
どうしよう
aichatを導入しよう
楽しい🎵Claude解説「aichatとは」
ブラウザタブを開いてChatGPTに貼り付け、また別タブでClaudeに貼り付け……という作業に疲れていないだろうか。
aichat はRust製のオールインワンLLM CLIツールで、OpenAI・Claude・Gemini・Ollamaなど20以上のプロバイダを単一のコマンドで扱える。シェルアシスタント、Chat-REPL、RAG、Function Calling、AIエージェントまで詰め込まれており、ターミナルを離れずにAIを活用できる。
私の使い方
これは私の個人的な活用法だよ。どうでもいいぜという人は次のセクション「導入と使い方」に進んでね。
すでにこの記事の興味が失せている人は...
aichatには、すごく(すっごく)便利な機能 シェルアシスタント がございます。
ていうか私は、これ以外の機能はまだあまり活用できていません!
これがまぁ、めちゃくちゃ便利なのです!便利なのです!(重要なので呼応)
シェルアシスタントって?
自然言語でコマンドを生成・実行してくれる。OSとシェルを自動判別するので、コマンドを覚えていなくても大丈夫!(わーすごい!)
例
aichat -e "カレントディレクトリで最も大きいファイルTOP5を表示"
# → ls -lhS | head -6 などを生成してくれる
aichat -e "ポート8080を使っているプロセスを終了"
上添付GIFにわかるように、実行前に確認プロンプトが出るので誤爆しにくい。
モデル
この aichat、もちろんインターネットにつなげてAPI越しにGeminiとかを呼ぶこともできる。
でも、私はそうしない。
ローカルLLMのほうがロマンがあるから。
...とかいいつつ、ちゃっかりGeminiも設定している。メインはollamaだけれども。
「ローカルLLMのほうがロマンがあるから。」とかいいつつ、GPUカスのラップトプを使っている。
恥ずかしくておおっぴらには言えないが、実は40GBという不格好な量のメモリを無理やり載せている。
でも、おかげでちょっと大きいMoE(Mixture of Expert)モデルが動く!
私のおすすめは LFM2-24B-A2B。LiquidFoundationModelは大好き。
導入と使い方
1. インストール
バイナリ(推奨)
GitHub Releases からプラットフォーム向けのバイナリを取得して $PATH に置くだけ。
# macOS / Linux の例
curl -Lo aichat.tar.gz https://github.com/sigoden/aichat/releases/latest/download/aichat-x86_64-unknown-linux-musl.tar.gz
tar xf aichat.tar.gz
mv aichat ~/.local/bin/
Homebrew
brew install aichat
Cargo
cargo install aichat
2. 初期設定
初回起動時に対話形式でセットアップできる。
$ aichat
> No config file, create a new one? Yes
> AI Platform: openai
> API Key: sk-xxxx...
設定ファイルは ~/.config/aichat/config.yaml に生成される。複数プロバイダのキーをまとめて書いておける。
# ~/.config/aichat/config.yaml
model: openai:gpt-4o # ←これ、デフォルトのモデル
clients:
- type: openai
api_key: sk-xxxx
- type: claude
api_key: sk-ant-xxxx
- type: gemini
api_key: AIzaxxxx
- type: ollama
api_base: http://localhost:11434
3. 基本的な使い方
CMDモード(ワンショット)
# 普通に質問
aichat "Rustのライフタイムを簡単に説明して"
# モデルを指定
aichat -m claude:claude-3-5-sonnet-20241022 "コードレビューして"
# コードだけ出力(Markdownのフェンスを除去)
aichat -c "フィボナッチ数列をPythonで"
REPLモード(対話)
aichat
引数なしで起動するとChat-REPLに入る。タブ補完・履歴検索(Ctrl+R)・マルチライン入力(:::で開始/終了)に対応している。
❯ aichat
openai:gpt-4o> Rustの所有権について教えて
...
openai:gpt-4o> .model claude:claude-3-5-sonnet # モデル切り替え
claude:claude-3-5-sonnet> 続けて説明して # 同じセッションで続行
4. 便利機能ピックアップ
シェルアシスタント(-e)
自然言語でコマンドを生成・実行してくれる。OSとシェルを自動判別するので、コマンドを覚えていなくても大丈夫。
aichat -e "カレントディレクトリで最も大きいファイルTOP5を表示"
# → ls -lhS | head -6 などを生成してくれる
aichat -e "ポート8080を使っているプロセスを終了"
実行前に確認プロンプトが出るので誤爆しにくい。
ファイル・URLを入力として渡す(-f)
# ファイルを要約
aichat -f README.md "このOSSの概要を箇条書きで"
# 画像を渡す(マルチモーダル対応モデル)
aichat -f screenshot.png "このエラー画面の原因を教えて"
# URLを渡す
aichat -f https://example.com/spec.html "APIの認証方式をまとめて"
# パイプとも組み合わせ可
cat error.log | aichat "このエラーの原因と解決策を教えて"
パイプで変換処理
# JSON → TOML変換
cat config.json | aichat -c "convert to toml" > config.toml
# コミットメッセージ自動生成
git diff --staged | aichat "以下のdiffに対してConventional Commitsのコミットメッセージを書いて"
セッション(会話履歴の保持)
aichat -s mysession "プロジェクトの要件を話し合いたい"
# 後で再開
aichat -s mysession "さっきの要件に認証機能を追加するとどうなる?"
ロール(プロンプトライブラリ)
よく使うシステムプロンプトをロールとして保存できる。
<!-- ~/.config/aichat/roles/reviewer.md -->
---
model: claude:claude-3-5-sonnet-20241022
temperature: 0
---
あなたは厳格なコードレビュアーです。セキュリティ・パフォーマンス・可読性の3軸で指摘してください。
aichat -r reviewer -f main.rs "レビューして"
5. RAG(ドキュメントを参照した回答)
社内ドキュメントや長いファイルをインデックス化して質問できる。
# RAGを作成
aichat --rag myproject --add docs/
# 質問
aichat --rag myproject "認証の実装方針はどうなっている?"
6. ビルトインHTTPサーバー(--serve)
aichat --serve
# Chat Completions API: http://127.0.0.1:8000/v1/chat/completions
# LLM Playground: http://127.0.0.1:8000/playground
# LLM Arena: http://127.0.0.1:8000/arena?num=2
--serve だけで OpenAI互換APIエンドポイントが立ち上がる。ローカルで動かすアプリや他ツールのバックエンドとして使えるほか、ブラウザからPlaygroundやArena(モデル比較UI)にもアクセスできる。
7. よく使うコマンド早見表
| 操作 | コマンド |
|---|---|
| 質問(ワンショット) | aichat "質問" |
| REPL起動 | aichat |
| モデル指定 | aichat -m openai:gpt-4o "..." |
| コードのみ出力 | aichat -c "..." |
| シェルコマンド生成 | aichat -e "..." |
| ファイル渡し | aichat -f file.txt "..." |
| セッション | aichat -s session1 "..." |
| ロール適用 | aichat -r rolename "..." |
| エージェント | aichat -a agent1 |
| RAG利用 | aichat --rag ragname "..." |
| APIサーバー起動 | aichat --serve |
| システム情報確認 | aichat --info |
さいごに
aichatは日頃の作業のかゆいところに手が届いてすごくいい。
...すごくいい。
(別に記事を書くのがめんどくさくなってきたとかでは...)
最後まで読んでくれてありがとう!

