nikkie-ftnextの日記

イベントレポートや読書メモを発信

simonwさんによるllmとそのプラグインを使って、LLMをCLIから呼び出す

はじめに

七尾百合子さん、お誕生日 12日目 おめでとうございます! nikkieです。

ここ最近の私は、Web UIだけでなくCLIからもLLMを呼び出しています!

目次

ぬこぬこさんトークでsimonwさんに注目

松尾研コミュニティアーカイブでぬこぬこさんのAI Safetyの回を聞いていたところ

プロンプトインジェクションとジェイルブレイクの違いの文献として挙げられたブログ。
Prompt injection and jailbreaking are not the same thing
著者にDjangoのクリエイターの1人、Simon Willisonさんの名が挙がります。

なんでも最近はllmというパッケージを開発しているとか
https://pypi.org/project/llm/

なお、ぬこぬこさんのこのトークは、AI Safetyに限らずいろいろ聞けて面白かったです。
例えば、o1のoはopenaiのoから来ているとか

simonwさんのブログからllmの使い方

Simon Willisonさん(simonw)のブログを覗くようにしたところ、llmパッケージの使い方が私の好みと気づきました。
パイプで繋げて書けて、ファイルの内容をプロンプトと一緒にllmに送れるんですよ!

datasetteというsimonwさんのリポジトリPythonファイル一式をo3-miniに送って、内部ドキュメントを作ってもらう例

files-to-prompt datasette -e py -c | \
  llm -m o3-mini -s \
  'write extensive documentation for how the permissions system works, as markdown'

files-to-promptもsimonwさん自作ツールです。
https://pypi.org/project/files-to-prompt/

もう一例、llama-cpp-pythonの大量のロギングをオフにできないか、リポジトリPythonファイル一式をGeminiに送って質問します。

files-to-prompt -e py . -c | llm -m gemini-2.0-pro-exp-02-05 \
  'How can I prevent this library from logging any information at all while it is running - no stderr or anything like that'

uvx(やpipx run)でllmやそのプラグインllm-gemini)を指定して1、使い放題です!

cat index.ts | uvx --with llm-gemini llm -m gemini-2.0-flash 'TypeScriptの内容を解説してください。'

APIキーを環境変数に設定2しておく必要はあります

終わりに

simonwさんによるllm、コンセプトが私の好みで最近uvxで使っています

プラグインをサポートしたライブラリの実装例3でもあるので、ソースコード積ん読リスト入り。
また、自分が欲しい小さいツールをPyPIで公開し、それを他の開発者が喜んで使うというのは私には理想的で、「simonwさん、ヨーダなのでは」と思い始めました。


  1. uvxやpipxは仮想環境の管理から解放されるので本当に便利です
  2. 1Passwordを使う例
  3. 以前に取り上げた記事