- AIプログラミング支援ツール Sketchの開発経験を通じて、LLMとツール利用を組み合わせたループ構造の簡潔な実装を強調
- わずか9行のループコードだけで、Claude 3.7 Sonnet など最新のLLMが実用的な問題を迅速に解決
- bash などの汎用ツールが1つあるだけでも、開発者の反復的で煩雑な作業をかなりの部分まで自動化可能
- 問題解決だけでなく、追加のツールを接続して テキスト編集や特化した作業 の品質と反復速度を高められる
- カスタムLLMエージェントループ が開発者の日常的な自動化にますます導入される流れ
はじめに: 開発経験とSketchプロジェクト
- フィリップ・ゼリガーおよび同僚たちは、AIベースのプログラミング補助ツール Sketch を開発する過程で、LLMとツール活用を組み合わせたシンプルなエージェントループ構造 の高い効率性に驚かされた
- 中核となる構造はわずか9行のループコードで、システムプロンプト、会話履歴、最新メッセージをLLM APIに渡す
- LLMが出力を生成し、必要に応じて tool_calls(ツール呼び出し要求)を返す
LLMとツール利用の統合
- 「ツール利用(tool use)」とは、LLMがあらかじめ定義された スキーマに沿った出力 を返し、システムプロンプトとツール説明プロンプトを通じて、LLMが
bash のような汎用ツールにアクセスできるようにすること
- 最新のLLM(例: Claude 3.7 Sonnet)は、単一の汎用ツールだけでもさまざまな問題を素早く自動化し、一部は1回の実行("one shot")だけで解決可能
- 以前は複雑な
git コマンドを探して貼り付け、手動でマージ作業をしていたが、今ではSketchに依頼すればその場で解決できる
- 型変更後に発生する多数の型チェックエラーも、Sketchが初めて自動処理してくれた
- エージェントループは 継続的かつ適応的 に動作し、ツールが未インストールの場合は自動でインストールし、コマンドオプションの違いにも合わせて対応する
- 利用中にLLMがテスト失敗時に「テストをスキップする」といった予期しない提案をすることもあるが、全体として業務自動化の質は向上している
ツールの多様化と特化
- Sketchは
bash 以外にも追加のツール(例: テキスト編集ツール)を活用することで、作業品質が向上し、開発ワークフローがさらに効率化されることを実感している
- LLMが
sed などでテキストを正確に修正するのは想像以上に難しく、視覚的(visual)エディタ型のツールのほうが優れていると感じられた
今後の展望とワークフローの変化
- エージェントループ構造は、従来の汎用自動化ツールでは扱いにくかった開発者の日常的な反復作業 に、今後ますます活用される見込み
- 例として、スタックトレースとgitコミットの相関分析のような面倒で反復的な作業も、LLMが素早く一次処理を行う
- 今後は より多くのカスタムメイドで単発的なLLMエージェントループ が、開発者の bin/ ディレクトリなどで使われるようになると期待できる
- ユーザーは必要な bearer token だけを用意すれば、自分の環境で簡単に試せる
参考リンク
1件のコメント
Hacker Newsのコメント
pocketflowというグラフ抽象化ライブラリを使って似たものを作ったチュートリアルがある。実際に使ってみたがかなりシンプルで、とても満足した。https://github.com/The-Pocket/PocketFlow-Tutorial-Cursor/blob/main/blog.md?utm_source=hn&utm_medium=browserを追加すべきか悩んでしまう// omitted for brevityのように省略された版で使い物にならなかった。ここで諦めた。エージェントがこの問題を解決してくれるのか気になる。現状ではこの体験は完全に壊れていると思うし、そんな状態で bash へのアクセス権を与えるのは危険すぎるという懸念があるo4-mini-highに切り替えて使っている。このモデルは検索機能で最新ドキュメントも探せる。「Xライブラリの最新バージョンを調べてそれを使って」と頼むと、しばしばうまく処理してくれる。最近、JavaScript コードの一部を最新の Google 推奨ライブラリへ変換する作業があったのだが、古いコードをそのまま貼り付けて新しいライブラリへポーティングしてほしいと頼んだら、ドキュメントも調べたうえで正確に移植してくれた。https://simonwillison.net/2025/Apr/21/ai-assisted-search/#lazily-porting-code-to-a-new-library-version-via-searchlet's justの次にskipという単語が出ないよう、出力確率を操作する。つまりskipを禁止すれば、LLM が望ましくない行動から逸れるよう経路を変えられる。ある種の JSON モードや構造化出力のように機能しつつ、動的かつリアルタイムに補助 LLM がポリシーを制御する形だ。これがうまくいくなら、さらに発展させて、テストを通すためにテストコードを削除するとか、無意味なコメントを出力するといったさまざまなポリシー違反をすべて補助 LLM 側のプロンプトに入れ、補助 LLM がリアルタイムで監視・制御する構造へ拡張できる。Outlines チームがこういう構造をどう考えるのか気になるlet's just skip the testを検知したらjustの後までロールバックして、特定の単語が使われないよう bias をかけ続ける構造も考えられる。こうしたことをやるには、使うモデルプロバイダーが限られるかもしれないし、特に OpenAI は最近こうしたパワーユーザー向け機能に敵対的な傾向が見える