🤡

LLMにすべてのタスクを確実に実行させるためのテクニック

に公開

LLM(大規模言語モデル)を活用して、プロジェクト内のドキュメントを一括処理させたい──。
そんなユースケースは増えてきていますが、「任せきりにすると途中で止まってしまう」という経験をしたことがある方も多いのではないでしょうか。

この記事では、私が実際に体験した失敗と、それを乗り越えて LLMに92ファイルの要約を確実に処理させた成功例 を紹介します。


✅ やりたかったこと

プロジェクト内にある全マークダウンファイルの要約を自動で作成したい。
ファイルはサブディレクトリにも点在しており、全部で 92ファイル ありました。


🤢 失敗談

以下のようなプロンプトをLLMに投げました:

[ディレクトリパス] にある全てのマークダウンファイルの要約を [出力パス] に作成して下さい

結果:

  • 8ファイルほど要約を作成したあと、「完了しました!」と返される
  • 実際には92ファイルあるのに残りはスルー
  • 再度依頼しても、数ファイル処理して「完了しました!」と返されるの繰り返し…

→ LLMにとって「全て」というのは、都合のいい範囲までらしい

😋 成功パターン

1. チェックリストをLLMに渡す前に人間が制御する

まずやったことは、ディレクトリ内のMarkdownファイルを正確にリストアップして、チェックリスト形式にする シェルスクリプトを作ることです。

※このステップが超重要。LLMにファイル一覧の取得まで任せると、漏れが多発します。

    # markdown_checklist.sh
    
    echo "# Markdownファイルチェックリスト" > md_checklist.md
    echo "" >> md_checklist.md
    echo "生成日時: $(date '+%Y-%m-%d %H:%M:%S')" >> md_checklist.md
    echo "" >> md_checklist.md
    
    find ./docs -type f -name "*.md" | sort | while read file; do
      echo "- [ ] ${file}" >> md_checklist.md
    done

生成されるチェックリストの例:

# Markdownファイルチェックリスト

生成日時: 2025-05-07 21:48:13

- [ ] README.md
- [ ] adr/001-***.md
- [ ] adr/002-***.md
- [ ] adr/003-***.md
...

2. LLMへのプロンプトを制御可能なタスクにする

LLMに以下のように依頼します:

    添付のチェックリストを使って、各ファイルの内容のサマリを記載して下さい。
    このサマリは、LLMがタスク実行時にコンテキストウィンドウに追加すべきかを判断するための情報に使用するため、要点を簡潔にまとめて下さい。
    
    1. md_checklist.md から未チェックのファイルを上から順に処理する  
    2. ファイル内容を読み取る  
    3. 内容を1行に要約し、md_checklist.md の該当行の末尾に追記する  
    4. 該当行のチェックボックスにチェックを入れる - [x]  
    5. 未チェック項目がなくなるまで繰り返す

3. 途中で止まっても再開できる構造にしておく

数ファイル処理後に「完了しました!」と出ることがありますが、その場合は、最初のプロンプトを新しく開始すれば、チェックがついていないファイルだけを続きから再処理してくれます。

📝 反省と学び

  • 「完全に任せる」は禁物
    LLMには抜け漏れや処理の早仕舞いがあるので、人間が「制御ポイント」を設けるのがカギ

  • ファイル一覧など「正確さ」が求められる処理はスクリプトで事前生成すべし

  • 大きな作業は小さな繰り返し可能なタスクに分解することが重要

おわりに

LLMをうまく使いこなすには、人間が構造を整え、LLMに実行させるという役割分担が重要です。
今回の事例が、皆さんのプロジェクトでも役立つTipsになれば嬉しいです!

ご質問・ご意見などあればコメントでお気軽にどうぞ!


この記事は、社内向けにざっくり書いたドラフトを、生成AIの助けを借りてまとめ直したものです。
最後まで読んでいただき、ありがとうございました 🙇💦

Discussion