この記事は「LLM・LLM活用 Advent Calendar 2024」の3日目の記事になります!
概要
CLIでLLMを利用可能なsimonw/llmのプラグインである
simonw/llm-ggufを導入し, コマンドラインでgoogle/gemma-2-2b-jpn-itを動作させる.
simonw/llm
- LLMと連携するためのCLI UtilityおよびPython Library
- API呼び出しだけでなく, ローカルLLMにも対応
- 埋め込みを生成し, その結果をSQLiteに保存することも可能
プラグイン一覧(一部)
- Plugin directoryに使用可能なプラグインが記述されている
プラグイン名 | 説明 |
---|---|
llm-gguf | llama.cpp を使用し, GGUF 形式で公開されたモデルを実行 |
llm-gpt4all | GPT4Allプロジェクトによってリリースされた, ローカルに実行可能なモデルをサポート. Vicuna、Orca、Falcon、MPT 等のバージョンが含まれる. 使用可能なモデルのリスト |
llm-ollama | Ollama を使用しローカルで実行可能なモデルをサポート |
llm-gemini | GoogleのGeminiモデルをサポート |
llm-claude | AnthropicのClaude 2.1およびClaude Instant 2.1をサポート |
llm-claude-3 | AnthropicのClaude 3モデルファミリーをサポート |
simonw/llm-ggufの使い方
実行環境
- Windows11
- Ubuntu 20.04 LTS(WSL)
- CPU AMD Ryzen 7 5700X
導入
- Python 3.12が使える環境で
simonw/llm
をインストールpip install llm
- プラグイン
simonw/llm-gguf
のインストールllm install llm-gguf
GGUFモデル登録
- alfredplpl/gemma-2-2b-jpn-it-ggufからGGUFモデルをダウンロード
- 以下のコマンドで使用したいモデルを登録
llm gguf register-model gemma2-2b-iq4xs ./gemma-2-2b-jpn-it-IQ4_XS.gguf --alias gemma2
-
llm gguf models
で現在登録されているモデルを確認可能> llm gguf models { "gemma2-2b-iq4xs": { "path": "path/to/gemma-2-2b-jpn-it-IQ4_XS.gguf", "aliases": [ "gemma2" ], "size": "1.46 GB" } }
- 設定ファイルが
~/.config/io.datasette.llm/gguf
にあるので直接編集することも可能
コマンドラインからの呼び出し
-
llm -m gemma2 "prompt"
で呼び出し> llm -m gemma2 "日本で一番高い山は?" 日本で一番高い山は富士山です。
使用例
他のコマンドの実行結果(標準出力)を受け取る
-
command | llm -m gemma2 -s "prompt"
でcommandの結果を受けてpromptの質問に答える- -s はシステムプロンプトを設定するオプション
> lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 48 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 16 On-line CPU(s) list: 0-15 Vendor ID: AuthenticAMD Model name: AMD Ryzen 7 5700X 8-Core Processor ... 省略 > lscpu | llm -m gguf/gemma2-2b-xq4xs -s "このPCのCPUのモデルは?" CPUのモデルは、AMD Ryzen 7 5700X です。
エラー内容をllm
に渡す
- 以下のようなコンパイルエラーになるCプログラムに対して質問したい場合
compile_error.c
#include <stdio.h> int main(void){ int a = 1; printf("%d\n", a) // ; がないためコンパイルエラー return 0; }
> gcc error_code.c 2>&1 | llm -m gemma2 -s "エラーの理由と解決方法を教えて" エラーメッセージ「expected ‘;’ before ‘return’」は、C言語のプログラムで、`return`コマンドの前にセミコロン(`;`)が必要であることを示しています。 このエラーが発生する原因は、`return 0;`コマンドの後にセミコロンがないためです。 **解決方法** 1. **セミコロンを追加する:** `return 0;`コマンドの前にセミコロンを追加します。 ```c printf("%d\n", a); return 0; ```
-
2>&1
は標準エラー出力を標準出力にリダイレクトするコマンド- コンパイルエラーは標準エラー出力であるため
gcc error_code.c | ...
では 次のコマンドに渡せない
- コンパイルエラーは標準エラー出力であるため
-