概要
LLM 0.26 が2025年5月27日にリリース。 最大の新機能は ツールサポート の追加。 CLIツール やPythonライブラリから、各種LLMモデルにPython関数ベースのツールを利用可能に。 プラグイン によるツール追加や、コマンドラインからのアドホックな関数提供も対応。 OpenAI、Anthropic、Gemini、Ollamaなど主要モデルやローカルモデルにも幅広く対応。
LLM 0.26の新機能:ツールサポートの全貌
- LLM 0.26 は、OpenAI、Anthropic、Gemini、Ollamaなどのモデルに Python関数として表現できる任意のツール を利用可能に
- CLIツール と Pythonライブラリ の両方でツール機能をサポート
- ツールプラグイン の導入により、モデルごとに機能拡張が可能
- ツールは 非同期(async) ・ 同期(sync) の両方で動作
- コマンドライン からツールを指定:
--toolや-Tオプションでツール名を指定し実行 - Python関数 をコマンドラインで直接渡せる
--functionsオプションも追加 - Python API でもツール利用が可能:
- 例:
llm.get_model("gpt-4.1").chain("show me the locals", tools=[locals]).text()
- 例:
- ツールデバッグ 用の
--tdオプションでツール呼び出しの詳細を確認可能
ツールの導入・利用方法
- 最新のLLMのインストール(Homebrew未対応の場合はpip, pipx, uv推奨)
uv tool install llmまたはuv tool upgrade llm
- OpenAIキーの設定
llm keys set openai
- ツールの実行例:
llm --tool llm_version "What version?" --tdllm --tool llm_time "What time is it?" --td -m o4-mini
- モデル切替 :
llm models default gpt-4.1-miniや-mオプションで指定可能 - Anthropic Claude Sonnet 4やGemini 2.5 Flash など他社モデルやOllamaローカルモデル(Qwen3:4b等)にも対応
プラグインによる高度なツール活用
- llm-tools-simpleeval :Python式の計算や簡易評価をサンドボックス実行
- 例:
llm -T simple_eval 'Calculate 1234 * 4346 / 32414 and square root it' --td
- 例:
- llm-tools-quickjs :QuickJS JavaScriptインタプリタをサンドボックスで提供
- llm-tools-sqlite :ローカルSQLite DBへの読み取り専用SQLクエリ実行
- llm-tools-datasette :リモートDatasetteインスタンスへのSQLクエリ
- 例:
llm -T 'Datasette("https://datasette.io/content")' --td "What has the most stars?"
- 例:
- ツールボックス 形式のプラグインも対応、複数ツールや設定引数の受け渡しが可能
コマンドラインからのアドホックツール提供
--functionsオプションで Pythonコードブロック を直接CLIに渡し、モデルに関数として提供可能- 例:ブログ検索機能の追加
llm --functions ' import httpx def search_blog(q): "Search Simon Willison blog" return httpx.get("https://simonwillison.net/search/", params={"q": q}).content ' --td 'Three features of sqlite-utils' -s 'use Simon search'
- 例:ブログ検索機能の追加
- システムプロンプト でツール利用を促進(例:
-s 'use Simon search')
Python APIでのツール利用
- CLIツールと同等のツール機能 をPythonライブラリでもサポート
- 例:文字列内の特定文字数カウント
import llm def count_char_in_text(char: str, text: str) -> int: "How many times does char appear in text?" return text.count(char) model = llm.get_model("gpt-4.1-mini") chain_response = model.chain( "Rs in strawberry?", tools=[count_char_in_text], after_call=print ) for chunk in chain_response: print(chunk, end="", flush=True) - after_call=print でツール呼び出しの詳細を表示
- model.chain() は、ツール呼び出し→実行→結果反映を自動で繰り返す
- asyncio 対応、複数ツールの並列実行も可能
- ツールボックス形式 (例:
tools=[Datasette("https://datasette.io/content")])もサポート
なぜ実装に時間がかかったのか
- ReAcT論文 (2022年10月発表)でツール利用のパターンを初めて知り、シンプルな実装を作成
- ツール利用は LLMの能力拡張 に極めて有効と判明
- モデルに ツール呼び出し用構文 (JSON, XML, tool_name(arguments)等)を出力させ、結果を再入力する仕組み
- 主要モデルベンダー (OpenAI, Anthropic, Google, Mistral, Meta等)もAPIでツール利用(関数呼び出し)を標準実装
- ローカルモデル (Ollama, llama.cpp等)もツールサポートを強化
- LLMに ツールサポート を追加することは必然だったと結論
まとめと今後の展望
- LLM 0.26 で ツール利用機能 が大幅に強化
- CLI、Python API、プラグイン、アドホック関数 など多彩なツール連携が可能
- モデルや用途に応じた柔軟な拡張性 を実現
- 今後はさらなるツールプラグインや、ツール利用の最適化 が期待