Simon Willison 氏のブログでは、スクリプトのシバン行で LLM CLI ツールを直接使用する興味深いテクニックが紹介されました。このアイデアは Hacker News の Kim_Bruning 氏のコメント「勇気があれば、今や英語のテキストファイルにシバンを付けられる」に触発されたものです。Willison 氏はいくつかのパターンを探求しました。最も単純な方法は、LLM のフラグメント機能を利用することです。スクリプトの先頭に #!/usr/bin/env -S llm -f を追加し、続けてプロンプトテキスト(例:「自転車に乗るペリカンのSVGを生成」)を記述します。スクリプトを実行すると、LLM が自動的に処理し結果を出力します。より高度な使い方として、ツール呼び出しがあります。-T オプションでツール名(例:llm_time)を指定すると、モデルがプロンプト実行時にそのツールを呼び出せます。例えば、「正確な現在時刻を含む俳句を書け」というスクリプトを実行すると、LLM はまず時刻を取得してから創作します。最も複雑なパターンは、YAML テンプレートを直接実行する方法です。テンプレート内でモデル、システムプロンプト、および Python 関数(加算や乗算など)を定義できます。例えば、calc.sh スクリプトを作成し、./calc.sh 'what is 2344 * 5252 + 134' --td と実行すると、LLM はツールを呼び出して計算し、デバッグ情報と結果を表示します。この手法により、LLM の能力を直接実行可能ファイルに組み込むことができ、自動化タスクに新たな可能性をもたらします。さらに複雑な例として、Willison 氏の TIL 記事では、Datasette SQL API を使用してブログのコンテンツに関する質問に答える方法が紹介されています。これにより、自然言語でデータベースに問い合わせることが可能になります。全体として、このテクニックは LLM のスクリプト環境での応用の幅を広げ、開発者や自動化愛好家にとって非常に有用です。
スクリプトのシバン行でLLMを使う
記事の要約
本記事では、LLM CLIツールをスクリプトのシバン行で直接使用し、フラグメント、ツール呼び出し、YAMLテンプレートを活用してテキストファイルを実行可能にする方法を紹介します。
スクリプトのシバン行でLLMを使う