
ローカルLLMを使って「台本を書き、画像プロンプトを生成し、一連のタスクを全自動でこなす」システムを作ろうとしたことはありませんか?
私も当初は「Markdownフォーマットで出力させ、それをパースして次のエージェントに渡す」という構成でシステムを組んでいました。しかし、11人ものAIエージェントを連携させ、相互レビューのループを回そうとした結果、ローカルLLMのフォーマット崩れによる無限修正ループに陥り、パイプラインはあえなく崩壊しました。
本記事では、その教訓を生かし、「Pythonオーケストレーター」と「厳密なJSON出力」を組み合わせることで構築した絶対に止まらない最強の自動生成パイプラインの仕組みを解説します。
失敗の原因:Markdown制御の限界
Markdownは見出しやリストなど、人間にとっては読みやすいフォーマットですが、機械(プログラム)が確実にパースするには不確実性が高すぎます。
特にローカルLLMの場合、少しでもプロンプトの解釈がブレると、予期せぬMarkdown構造が出力され、後続の処理がクラッシュしてしまいます。
解決策:JSON制御と寛容なパース
この問題を解決するため、LLMへの指示を「必ずJSONフォーマットで出力すること」に限定しました。そして、出力されたJSONを受け取る「監督」として、Pythonスクリプトを作成しました。

1. Pydanticによる型チェック
Python側では pydantic を使用して、LLMが生成したJSONを瞬時に型チェックします。これにより、フォーマットがおかしい場合はプログラム側で即座に検知できます。
2. 正規表現による「寛容な」抽出
LLMはしばしば「わかりました!以下のJSONを出力します。 json ...」と余計なテキストを付加します。
そこで、Python側で正規表現を使って { から } までの部分だけを賢く抽出する機構を設けました。これにより、多少のおしゃべりがあっても処理が止まらなくなります。
3. 安全なリトライ機構
パースに失敗した場合でも、Pythonが自動で3回までリトライを実行します。不毛なフォーマットダメ出しをAI同士にやらせるのではなく、システム側で安全に制御するのです。
AI同士の相互レビュー(PDCA)
強固なJSON基盤ができたことで、かつて破綻した「生成役」と「評価役(Reviewer)」による相互レビューも安全に回せるようになりました。
レビューアがダメ出し(リジェクト)した内容は、再度ジェネレーターにフィードバックされ、品質が高まるまで自動でループします。もちろん、無限ループにならないようPython側でリトライ回数を管理しています。
リアルタイムダッシュボードによる可視化
システムの裏側がブラックボックスにならないよう、独立したWebダッシュボードも構築しました。
バックエンドの実行ログをフロントのJavaScriptが読み取り、ブラウザ上で直感的なカードUIとして「現在のフェーズ」や「AIのレビュー内容」「消費トークン数」をリアルタイムに表示します。
まとめと実演デモ動画
LLMを実務レベルのシステムに組み込むコツは、「AIに完璧を求める」ことではなく、「プログラム側で寛容に受け止め、安全に制御する仕組みを作る」ことでした。
YouTube動画では、より詳しい仕組みの解説と、このシステムを実際に動かして全自動生成された「紙芝居動画(北海道ご当地グルメ編)」の完成品を公開しています。ぜひご覧ください!
🎥 YouTube: https://youtu.be/3AgEQp2VMXE
💻 GitHub: https://github.com/ukkeyHG/claude-kamishibai-pipeline

コメント