皆さんこんにちは、横浜で清掃業をしているヤスです。
前回・前々回で、AI社長→AI広報部長→AI X社員という3階建てのAI組織と、検品ループの仕組みを組み上げました。今回はその完成品を実際に動かしたら、想定外のところでつまずいた話です。3部作の最終回、つまずき編です。
結論から:エラーはゼロ、でも出てきたのは架空の講座名だった
配線はすべてつないだ。憲法も指示書も各プロンプトに入れた。あとは動かすだけのはずでした。
依頼は「Udemyの講座を作ったから宣伝して」。テスト実行して出てきた投稿がこれです。
生成AIを使っているのに、業務はあまり変わらない。
原因は「毎回チャットで指示する使い方」にあるかもしれません。
単発の調査や文章作成から、Difyで業務に使える仕組みをつくる段階へ。
学ぶ順序や実装方法を体系的に知りたい方は、Udemy講座「50AI×Dify」をチェック。
詳細はリプライで案内します。
問題が2つありました。ひとつは講座名が架空だったこと。実際の講座名は「未経験の50代でもできた!ノーコードAIアプリ開発 Dify入門」ですが、AIはURLの文字列(50ai-dify)から勝手に「50AI×Dify」という名前を作っていました。もうひとつは、内容が一般論に終始していたこと。49歳・未経験・見積書30分→5分という自分の物語がどこにもなく、誰が書いても同じマーケティング文になっていました。
やっかいだったのは、エラーが一切出ていなかったことです。ワークフローは最後まで正常に完走していました。だから、どこが悪いのか手がかりがありませんでした。
最終的にたどり着いたのはこの投稿です。
「AIアプリ開発なんて、未経験の自分には難しい」
50代までIT・プログラミング未経験だった私(ヤス)も、そう思っていました。
学び始めたきっかけは、見積書の文面作成に毎回約30分かかっていたこと。
Dify(ノーコードでAIアプリを作れるツール)を使い、約5分に短縮できました。
難しい技術より、まずは身近な困りごとから。
体系的に学びたい方へ、Udemy講座をリプライでご案内します。
原因は、エラーメッセージにはまず出てこない場所にありました。ここからは、容疑者を1人ずつ疑って消していった過程をそのまま書きます。
調査の流れ:容疑者を1人ずつ疑って、消していく
容疑者①:憲法が届いていない
最初に疑ったのは、社内憲法の共有漏れでした。Difyには「共通ファイルを全員に読ませる」仕組みがなく、各LLMのプロンプトに1つずつ貼る必要があります。確認すると、上流には貼っていましたが、実際に文章を書くX社員と検品LLMには貼っていませんでした。人間の会社でいえば、部長には就業規則を渡したのに、現場の社員には渡していなかった状態です。
3か所すべてに貼り直すと、投稿は明らかに良くなりました。見積書30分→5分の実体験が主役になり、講座名の捏造も消えました。ただし、Udemy講座の告知には一切触れていませんでした。「講座を宣伝して」という依頼の目的を果たしていなかったのです。
容疑者②:検品LLMが目的を見ていない
実行追跡を開くと、検品LLMがこう返していました。
作成前に、社長が優先する広報目的を
「Udemy講座への誘導」「初心者向けの認知・信頼構築」
「見積書文面作成をAI活用で約30分から約5分へ短縮した実体験の発信」
から1つ確定すること。
検品LLM自身が「そもそも今回の投稿目的が分からない」と言っていました。プロンプトの変数参照をすべて確認しましたが、参照先はすべて意図どおりで、憲法も貼られていました。配線が正しいのに検品が目的を見失っているなら、原因は検品より上流にあるはずです。
容疑者③:広報部長が空の入力を受け取っていた
広報部長の出力を確認すると、こう返していました。
{
"request": "広報目的が未確定のため、X社員への投稿作成は保留する。",
"target": "未確定。",
"message": "未確定。"
}
部長も「依頼の内容が未入力」と言っていました。ただし部長の振る舞い自体は正しく、空の入力に対して憲法どおり選択肢と推奨案を添えて上に戻していました。そしてプロンプトの入力欄を見ると、決定的な手がかりがありました。{}——空っぽです。AI社長から何も渡っていませんでした。
容疑者④:AI社長の出力そのものが空だった
AI社長の出力を確認すると、text: "{}"。ここが震源地でした。ツール化してあった中身(開始→LLM→回答)の回答ブロックが未接続なのではと疑い、つなぎ直しましたが変化なし。公開ボタンの押し忘れも疑いましたが、押してありました。出力ブロックの変数指定も確認しましたが、正しく設定されていました。
単体テストで切り分ける
親ワークフローから切り離し、AI社長単体でテストしました。返ってきたのはこれです。
承知しました。
社長からの依頼を受けた際は、意図を整理して適切な部門へ振り分け、
指定の形式で担当部長への指示を作成します。
判断をせず、役割の説明だけを返す未来形の返答でした。指示書が「あなたはこういう役割です」という説明中心で、「今この依頼を判断せよ」という直接の命令がなかったため、モデルが「役割の説明を受けた」と解釈していた可能性を疑い、プロンプト末尾に実行を促す一文を追加しました。形式は4項目で返るようになりましたが、中身は「依頼内容が未記載」のままでした。
一番のつまずき:真犯人は「- 変数:説明」という書式だった
次に疑ったのは変数タグの消失でした。指示書をテキストで見ると、入力セクションが「-」の後が空っぽに見えたのです。しかしDifyの画面で確認すると、タグはちゃんと入っていました。テキストに貼ったときに表示が崩れていただけで、また振り出しに戻りました。
最後に、実行追跡でLLMに実際に渡されたプロンプト全文を確認しました。
## 入力
- Udemyの講座を作ったから宣伝して:社長からの依頼(多くの場合、一言だけ)
- https://www.udemy.com/course/50ai-dify/:関連URL(ある場合)
依頼は届いていました。変数も正しく機能していました。問題は書式でした。この行を日本語として読むと、「Udemyの講座を作ったから宣伝して」という項目名に対して「社長からの依頼」という説明が付いている形に見えます。AIはこれを「入力項目の定義リスト」だと読んでいました。だから「具体的な依頼内容が記載されていない」と言い続けていたのです。指示書のテンプレートで「- 変数名:説明」という形式にしていたことが原因でした。変数が値に置き換わった瞬間、文章の意味が反転していました。
入力セクションを見出し形式に変更しました。
## 入力
### 社長からの依頼
(ユーザー入力/request のタグ)
### 関連URL
(ユーザー入力/url のタグ)
値が入るとこうなります。
### 社長からの依頼
Udemyの講座を作ったから宣伝して
### 関連URL
https://www.udemy.com/course/50ai-dify/
誰が読んでも「依頼内容はこれだ」と分かる形です。再テストすると、AI社長は初めて判断を返しました。
【判断】
担当部門:広報部門
理由:Udemy講座を「宣伝して」という依頼であり、講座の認知拡大と受講者獲得を
目的とする広報活動に該当するためです。
同じ書式の問題が広報部長のプロンプトにもあったため、そちらも見出し形式に直しました。
まとめ:エラーが出ないバグが一番やっかい
今回分かったのは、部下は全員、正しく動いていたということでした。広報部長は空の入力に対して憲法どおり選択肢と推奨案を添えて戻し、検品LLMも「目的が未確定」と正しく指摘し、X社員も渡された情報の範囲で書いていました。壊れていたのは上流の1か所だけで、下流はそれに従って正確に振る舞っていたのです。組織の情報の流れは、上流が詰まると下流全部が止まります。
そしてエラーが出ないバグが一番やっかいだと感じました。400エラーなら「ここが悪い」と教えてくれますが、今回はワークフローが正常に完走し、それらしい出力まで返ってきていました。「変数タグが入っているか」だけでは足りず、変数が値に置き換わったとき、文章として正しく読めるかまで確認する必要がありました。
もし同じようにDifyでAI同士を連携させていて、エラーは出ないのに出力の質だけがおかしいというときは、まず入力セクションの書式を見直してみてください。「- 変数:説明」という一行が、AIには真逆の意味に読めていることがあります。
3部作はこれで完結です。設計思想編、実装編とあわせて読んでいただくと、なぜこの組織構造にしたのか、どう組んだのか、動かしたら何が起きたのかが一通りつながります。
今まで作ってきたアプリの技術を色々な方向で展開する活動をしてますが、またアプリも作っていく予定なので作ったらブログにもアップします。次回もお楽しみに!


コメント