5月11日、Simon Willisonが「Using LLM in the shebang line of a script」と題した記事を公開した。
英語の文章を書いて保存し、それをそのまま実行するとAIが処理してくれる — そんな魔法のような手法が注目を集めている。従来のプログラミングでは、特定の構文やコマンドを覚える必要があったが、この手法では自然言語のプロンプトをそのままスクリプトとして実行できる。
このアイデアを提案したのは、Django共同創設者としても知られるSimon Willisonだ。彼が開発したLLM CLI ツールは、コマンドラインから様々なLLMモデルを統一的に操作できるPythonツールで、OpenAI GPT、Claude、Geminiなどの主要モデルに対応している。今回の手法は、このツールの新たな活用方法として提案された。
shebang行でLLMを呼び出すメカニズム
Unix系システムでは、スクリプトファイルの先頭に「shebang」(#!)を付けることで実行時のインタープリターを指定できる。例えば#!/bin/bashならBashシェル、#!/usr/bin/python3ならPythonで実行される。Willisonのアイデアは、ここにLLMツールを指定することで、自然言語のテキストをそのまま実行可能にするというものだ。
基本的な例:
#!/usr/bin/env -S llm -f
Generate an SVG of a pelican riding a bicycle
このファイルをpelican.shとして保存し、実行可能にして実行すると:
chmod +x pelican.sh
./pelican.sh
LLMが自転車に乗るペリカンのSVGコードを生成する。-Sオプションはenvコマンドに複数の引数を渡すために必要で、-fオプションはスクリプトファイルの内容をプロンプトとして読み込むことを指定している。
実用的な活用パターン
ツール統合による高度な処理
LLM CLIツールには、現在時刻の取得、計算、Web検索などの標準ツールが用意されており、shebangスクリプトからも利用できる。
現在時刻を使った俳句生成の例:
#!/usr/bin/env -S llm -T llm_time -f
Write a haiku that mentions the exact current time
実行結果(17:52 UTCに実行):
Whispers of the hour,
Seventeen fifty-two chimes,
Time flows ever on.
テンプレート機能による複雑な処理
より複雑な処理には、LLMのテンプレート機能が活用できる。計算機能を持つスクリプトの例:
#!/usr/bin/env -S llm -t
model: gpt-4-mini
system: |
Use tools to run calculations
functions: |
def add(a: int, b: int) -> int:
return a + b
def multiply(a: int, b: int) -> int:
return a * b
このスクリプトに数学的質問を投げかけると、適切なツールを呼び出して計算を実行する:
./calc.sh 'what is 2344 * 5252 + 134' --td
--td(ツールデバッグ)オプションで計算過程も確認できる:
Tool call: multiply({'a': 2344, 'b': 5252})
12310688
Tool call: add({'a': 12310688, 'b': 134})
12310822
2344 × 5252 + 134 = **12,310,822**
高度な応用:動的データ検索システム
記事で特に印象的なのは、HTTPリクエストとSQL検索を組み合わせた実用例だ。Willisonは自身のブログを検索するシステムを実装している:
def search_blog(query: str) -> str:
"""Search Simon's blog"""
return httpx.get(url, params={"sql": sql, "q": query}).text
このスクリプトは、Datasette APIを通じてブログコンテンツをフルテキスト検索し、LLMが結果を解析して自然言語で回答する。「Has Simon implemented GraphQL?」という質問に対して、関連記事を検索し、具体的な実装情報を含む詳細な回答を返すことができる。
開発の背景とコミュニティの反応
この手法は、Hacker Newsでのディスカッションからインスピレーションを得て開発された。あるユーザーが「今や英語のテキストファイルにshebangを付けることができる(十分勇気があれば)」とコメントしたことが発端となっている。
この発想の転換は、従来の「コードを書いて実行する」というプログラミングの概念を「自然言語で指示して実行する」へと拡張している。特に、プロトタイピング、一回限りのデータ処理、探索的な分析作業などで威力を発揮すると期待される。
技術的な注意点と制限
実装時の重要なポイント:
-fオプションは引数リストの最後に配置する(スクリプトファイルのパスが最後の引数として渡されるため)-xオプションでレスポンスから最初のコードブロックのみを抽出可能-mオプションで使用するモデルを指定可能- 実行にはネットワーク接続とLLM APIアクセスが必要
この手法は、自然言語処理とシェルスクリプトの境界を曖昧にし、プログラミングの新しい可能性を示している。特に、技術者でない人々がシステムの力を活用できる新しい道筋を提供するかもしれない。
詳細はUsing LLM in the shebang line of a scriptを参照していただきたい。