発売日変更?倉庫変更?まずい、発注エラーを防げ!
はじめに:仕様変更は突然に
PB商品の 「需要集約(生産数計画)」 は
実際に発売する半年前に実施するため、
- 発売日の変更
- 倉庫の変更
- 商品情報の修正(カラー・サイズなど)
がたびたび発生します。
しかし、それらの変更が事前に共有されることは少なく、
「発注したらエラーになった」
「倉庫が違っていて納品されない」
など、現場での混乱が後から発覚することが多々あります。
そこで私は考えました。
「自力で差分を検出できるBotがあれば、発注前に気づけるのでは?」
この課題感から生まれたのが、今回紹介する「商品差分チェッカーBot」です。
🗂️ 目次
- はじめに:仕様変更は突然に
- 目的:Botで仕様変更を検知する
- 初期設計:理想と現実
- 問題①:「null」が変更なしと誤判定される
- 問題②:テンプレートが差分を潰していた
- 改善①:SYSTEMプロンプトの再設計
- 改善②:テンプレートの条件分岐を明確化
- 改善③:整形ノードの見直し
- おわりに:Botは“気づきの仕組み”、でもまだ道半ば
目的:Botで仕様変更を検知する
差分チェッカーBotの目的は明確です。
- 需要集約時と発売時のCSVデータを照合
- 商品ごとの変更点(発売日・価格・倉庫・カラーなど)を抽出
- 変更があれば、変更した項目を回答してもらう
初期設計:理想と現実
最初に組んだSYSTEMプロンプトは、以下のようなものでした。
あなたは商品差分チェッカーです。
2つのデータを比較し、変更点を抽出してください。
変更がない場合は「変更はありません」と出力してください。
一見、問題なさそうに見えます。
しかし、実際にBotを動かしてみると…
問題①:「null」が変更なしと誤判定される
商品名「LED電球」に対して、Botが返してきたのはこのメッセージ:
変更はありません。
実際には、倉庫が「C倉庫 → E倉庫」に変わっていたのに、差分が抽出されていない。
原因は、null
や空欄を「変更なし」と誤認していたことでした。
問題②:テンプレートが差分を潰していた
出力テンプレートがこうなっていました:
商品名:{{product_name}} 変更点:{{差分データ}} ※変更がない場合は「変更はありません」と表示されます
このテンプレートが、差分が空の場合に強制的に「変更はありません」と表示してしまう仕様。
つまり、差分抽出ロジックが正しくても、テンプレート側で潰されていたのです。
改善①:SYSTEMプロンプトの再設計
誤判定を防ぐため、SYSTEMプロンプトを以下のように強化しました。
- 変更内容は「旧 → 新」の形式で記載
- nullや空欄は「未入力」「削除」として扱う
- 変更がない場合のみ「変更はありません」と出力
- Markdown形式で出力(箇条書き)
出力例:
商品名:LED電球 変更点:
発売日:10月1日 → 10月15日
倉庫名:C倉庫 → E倉庫
※画像③:差分抽出が成功したBot出力
改善②:テンプレートの条件分岐を明確化
Botが抽出した差分を「どう見せるか」は、テンプレート次第。
ここが曖昧だと、せっかくの差分が「変更なし」と誤って表示されてしまいます。
差分ありの表示例:
商品名:LED電球
変更点:変更はありません
擬似コード:
if (差分.length === 0) { 表示 = "変更はありません"; } else { 表示 = 差分をMarkdown形式で箇条書き出力; }
このようにすることで、Botの抽出結果と表示内容が一致し、
現場での誤認や見落としを防げるようになりました。
改善③:整形ノードの見直し
商品名だけで照合すると、複数の候補が混在してしまうため、
以下の項目をすべて使って一意に照合するようにしました。
- 商品名
- カラー(色)
- 価格
- 発売日(旧)
整形テンプレート例:
商品名:LED電球(ブラウン) 旧データ:
発売日:10月1日
価格:698円
倉庫名:C倉庫
新データ:
発売日:10月15日
価格:698円
倉庫名:E倉庫
おわりに:Botは“気づきの仕組み”、でもまだ道半ば
Botは単なる自動応答ではなく、
「人が気づけない変化を、仕組みとして伝える」 存在です。
Difyはその仕組みをノーコードで作れる強力なツールですが、
現場で使うには「伝える工夫」「整形の精度」「プロンプト設計」が不可欠でした。
とはいえ、現時点ではまだ「完璧な差分抽出」はできていません。
Botが誤判定するケースもあり、テンプレートの仕様も改善中です。
今はまだ“引き続き努力中”。
でも、現場の声を拾いながら、Botを“使える仕組み”に育てていく過程こそが、DXの本質だと思っています。
完成まで何度も修正をいれながら、ここでも報告をしていきたいです。