部品の在庫・発注残・納期回答をエージェントが毎朝生産計画と突き合わせ、欠品の恐れに督促の文案と警告を付ける
毎朝、生産計画の所要量に対して在庫と発注残の入荷予定が足りるかを計算し、欠品の恐れがある部品を拾います。エージェントが部品ごとに発注残・納期回答・やり取りの記録を引いて原因を確かめ、仕入先への督促の文案と生産管理への警告を作ります。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Make/n8n/Power Automate/Python/Zapier
- 対象業界
- 商社/建設/製造
- 対象部門
- 生産/購買
- 対象業務
- 内容確認・チェック/書類作成
- 主な課題
- 人手が足りない/属人化している/期限・対応漏れが起きる
- AIで行う処理
- エージェント
- 主な効果
- 判断支援/対応スピード向上/工数削減/機会損失防止
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 生産管理の担当者が毎朝、生産管理システムから今後3週間の所要量の一覧を書き出す
- 購買の担当者が、自分の受け持ちの仕入先の部品について、在庫と発注残を画面で確かめる
- 発注残の行ごとに、納期回答の台帳とメールを開いて、回答の有無と回答納期を確かめる
- 所要日までに入らない、または数量が足りないと分かった部品について、理由を探す
- 仕入先へ督促か前倒しの相談のメールを書き、急ぐものは電話する
- 生産管理へ、どの部品がいつ足りなくなりそうかをチャットで知らせる
- 生産管理が、組立の順番を入れ替えるか、出荷日を営業と相談する
- 自動毎朝6時30分にワークフローが動き、所要量・在庫・発注残・納期回答を読み込む
- 自動計算のノードが部品ごとに日ごとの在庫の推移を出し、欠品の恐れがある部品を拾う
- 自動拾った部品を1件ずつエージェントに渡す
- 自動エージェントが、発注残・回答・やり取りの記録・使い先の製造オーダーを道具で引き、原因を決める
- 自動エージェントが、対応の案と、仕入先への文案、生産管理への警告文を構造化した形で返す
- 自動警告の段階(A/B/C)を、欠品までの日数と使い先から規則で決める
- 自動仕入先への文案をメールの下書きとして保存し、担当のバイヤーにチャットで知らせる
- 人バイヤーが下書きと根拠を確かめ、直して送る。電話が要るものは電話する
- 人生産管理が、段階Aの警告について組立の順番や出荷日の相談を始める
- 自動送ったかどうか、仕入先から回答が来たかを、翌朝の見回りで追いかける
各工程の詳しい説明を読む
- 生産管理の担当者が毎朝、生産管理システムから今後3週間の所要量の一覧を書き出す
- 購買の担当者が、自分の受け持ちの仕入先の部品について、在庫と発注残を画面で確かめる
- 発注残の行ごとに、納期回答の台帳とメールを開いて、回答の有無と回答納期を確かめる
- 所要日までに入らない、または数量が足りないと分かった部品について、理由を探す
- 仕入先へ督促か前倒しの相談のメールを書き、急ぐものは電話する
- 生産管理へ、どの部品がいつ足りなくなりそうかをチャットで知らせる
- 生産管理が、組立の順番を入れ替えるか、出荷日を営業と相談する
(a)見る範囲が担当者の記憶で決まる。 2,800品目を毎朝すべて見ることはできないので、担当者は「危なそうな部品」から見ます。危なそうかどうかは経験で決まり、休みの日や異動の後に抜けます。 同じ部品でも、担当が変わると見る頻度が変わります。
(b)黙っている発注残に気づかない。 回答が来ていない発注残は、台帳の上では空欄のままで、目立ちません。督促の必要に気づくのは、指定納期の前日か、当日に入荷しなかったときです。 その時点では、前倒しを頼む余地がほとんど残っていません。
(c)計画が変わった後を追えない。 週の途中で急ぎの受注が入ると、所要量が前の週より増えた部品が出ます。先週は足りていた部品が、今週は足りなくなる。 一覧を書き出し直さない限り、この変化は見えません。
(d)文面の書き分けに時間がかかる。 回答が無い仕入先への催促と、回答はあるが所要日より遅い仕入先への前倒しの相談は、頼む中身も言葉の選び方も違います。 前倒しや数量の追加は、仕入先にとっては注文の中身が変わる話で、一方的な指示の書き方にはできません。 1通ずつ考えて書いています。
- 【自動】 毎朝6時30分にワークフローが動き、所要量・在庫・発注残・納期回答を読み込む
- 【自動】 計算のノードが部品ごとに日ごとの在庫の推移を出し、欠品の恐れがある部品を拾う
- 【自動】 拾った部品を1件ずつエージェントに渡す
- 【自動】 エージェントが、発注残・回答・やり取りの記録・使い先の製造オーダーを道具で引き、原因を決める
- 【自動】 エージェントが、対応の案と、仕入先への文案、生産管理への警告文を構造化した形で返す
- 【自動】 警告の段階(A/B/C)を、欠品までの日数と使い先から規則で決める
- 【自動】 仕入先への文案をメールの下書きとして保存し、担当のバイヤーにチャットで知らせる
- 【人】 バイヤーが下書きと根拠を確かめ、直して送る。電話が要るものは電話する
- 【人】 生産管理が、段階Aの警告について組立の順番や出荷日の相談を始める
- 【自動】 送ったかどうか、仕入先から回答が来たかを、翌朝の見回りで追いかける
8番目が、この設計の分かれ目です。仕入先へ何かを送るのは、必ず人です。 エージェントには送信の道具を持たせません。前倒しや数量の追加は、仕入先にとって注文の中身が変わる相談で、送る前に費用や条件をどう扱うかを人が決める必要があります。
10番目で、見回りが1日で終わらないようにしています。 督促を送ったのに回答が来ない部品は、翌朝もう一度拾われ、「督促済み・回答なし・2日目」として扱いが変わります。 送りっぱなしで忘れる、という型をここで止めます。
02今回想定するシステム構成
【トリガー】毎朝6:30(Schedule Trigger) ▼ n8n ├──▶ 生産管理システム(読み取り専用の参照ビュー) │ 所要量・在庫・発注残・品目マスタ ├──▶ 納期回答の台帳 ▼ Code ノード ── 部品ごとの在庫の推移と、欠品の恐れの判定(計算) ▼ 欠品の恐れがある部品だけ AI Agent ノード(Claude API) │ 道具:発注残の詳細/回答とやり取り/使い先の製造オーダー │ 代替品と過去の督促の履歴 ▼ 原因・対応の案・文案(構造化出力) n8n ── 警告の段階を規則で決める ├──▶ メールの下書き(仕入先への督促・前倒しの相談) ├──▶ 社内チャット(バイヤーへの通知/生産管理への警告) └──▶ 見回りの記録(翌朝の追いかけに使う)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | n8n(Schedule Trigger と AI Agent ノード) | Make、Zapier、Power Automate |
| 生成AI | Claude API(n8n の Anthropic Chat Model ノードで接続) | OpenAI API、Gemini API |
| 差異計算 | JavaScript(n8n の Code ノード。所要量と入荷予定から在庫の推移を出す) | Python |
| 連携 | 生産管理システムの参照ビュー(読み取り専用のデータベース接続) | 夜間に書き出すCSVファイル |
| 保管 | 見回りの記録(データベースの表) | スプレッドシート |
| 通知 | 社内チャット(Microsoft Teams) | Slack、メール |
生産管理システムには書き込みません。 発注残の納期を直すのも、計画を組み替えるのも、これまでどおり人が画面で行います。この構成が出すのは、欠品の恐れと、その原因と、打つ手の案までです。
土台になるのは、n8n の AI Agent ノード(Tools Agent)です。 つないだ道具の中から、課題に応じてどれを使うかを判断する仕組みで、外部のサービスやデータベースと生成AIをつなぎます。System Message でエージェントの判断の方針を与え、Max Iterations(既定は10)で道具を使う回数の上限を決め、Require Specific Output Format を有効にすると出力パーサーをつなげます。Return Intermediate Steps を有効にすると、途中の道具の呼び出しも出力に含まれます。
道具はすべて、Call n8n Workflow Tool で作ります。 別のワークフローを道具として呼び、その出力をエージェントに返すノードです。Description に「いつこの道具を使うか」を書き、Workflow Inputs の値を $fromAI() でAIに埋めさせます。データベースへの接続を道具の側のワークフローに閉じ込めるので、エージェントが組み立てたSQLがそのまま走ることはありません。
03どうやって実装するのか
処理の起点を決める
毎朝6時30分の定時実行にします。 生産管理システムの夜間の所要量計算が終わり、購買の担当者が出社する前の時刻です。n8n の Schedule Trigger は秒・分・時・日・週・月の間隔と、Custom(Cron)の指定ができます。平日だけ動かすなら Cron で曜日を指定します。
時刻の基準に注意してください。 Schedule Trigger はワークフローのタイムゾーンが設定されていればそれを、無ければ n8n のインスタンスのタイムゾーンを使います。自前で立てたインスタンスの既定は America/New York です。 そのままにすると、朝6時30分のつもりが夜に動き、前日の所要量で見回ることになります。ワークフローの設定で Asia/Tokyo を指定します。
また、Schedule Trigger を起点にしたワークフローは、保存して公開(publish)しないと定時に動きません。 道具として呼ぶ側のワークフローも同じで、公開されていないと「Workflow is not active and cannot be executed.」で失敗します。親だけ公開して道具を公開し忘れるのが、最初の週にいちばん起きる失敗です。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 所要量 | 品目、日付、所要数量、使い先の製造オーダー、製品、出荷予定日 | 生産管理システムの参照ビュー |
| 在庫 | 品目、手持ちの数量、引当済みの数量、取得した時刻 | 同上 |
| 発注残 | 発注番号、行番号、品目、仕入先、発注数量、指定納期 | 同上 |
| 納期回答 | 発注番号、行番号、回答納期、回答数量、回答日、回答の手段 | 納期回答の台帳 |
| 品目マスタ | 担当バイヤー、標準のリードタイム、安全在庫、代替品の有無 | 生産管理システム |
| やり取りの記録 | 仕入先とのメールの件名・本文、督促の履歴 | メールの記録と見回りの記録 |
質を決めるのは、納期回答の「回答日」です。 回答納期が入っていても、それが3週間前の回答なら、仕入先の状況はもう変わっているかもしれません。回答日が古い発注残は、回答があっても「回答なし」に近い扱いにします。 何日を古いとするかは仕入先の区分ごとに決め、品目マスタか仕入先の一覧に持たせます。
在庫の「取得した時刻」も必ず持ちます。 夜間のバッチが止まった日に前日の在庫で計算すると、入荷済みの部品が欠品と出ます。 時刻を見て古ければ、その日の見回りを止めます。
データの取得方法を決める
データの取得は、エージェントの外で先に済ませます。 欠品の計算に使う所要量・在庫・発注残・回答は、毎朝まとめて読み込み、計算のノードに渡します。エージェントが道具で引くのは、欠品の恐れと出た部品についての詳細だけです。
| 道具の名前 | 引くもの | 使いどころ |
|---|---|---|
get_open_po_detail | その品目の発注残の全行、回答納期、回答数量、回答日 | 黙っている発注残、回答の遅れ・不足を見分ける |
get_supplier_messages | その仕入先との直近30日のメールの件名と本文の抜粋 | 回答はメールに来ているのに台帳に写っていないかを見る |
get_demand_orders | その品目を使う製造オーダー、製品、出荷予定日 | 足りなくなったときに何が止まるかを示す |
get_alternatives | 代替品と、その在庫と発注残 | 代替品で埋められるかの候補を出す |
get_expedite_history | その品目・仕入先への過去の督促と、その後の回答 | 同じ仕入先に何度目の督促かを知る |
AIへ渡す前に整形する
- 鮮度の確認 … 在庫と所要量の取得時刻が当日の夜間バッチより後かを確かめます。古ければ見回りを止め、生産管理へ知らせます
- 発注残と台帳の照合 … 発注番号と行番号で突き合わせ、台帳にあってシステムに無い行、その逆を一覧にします
- 入荷予定の区分 … 発注残の行ごとに、回答のある行は回答納期と回答数量で、回答の無い行は「未確定」として別に数えます
- 在庫の推移の計算 … 当日から15営業日先まで、日ごとに「手持ち − 引当 + 確定の入荷 − 所要」を足し上げます
- 欠品の恐れの判定 … 確定の入荷だけで数えて安全在庫を割る日があれば候補にします。未確定の入荷を足しても割るなら「強い候補」、足せば足りるなら「回答待ち候補」とします
- 前日との差分 … 前日の見回りでも拾った部品か、新しく拾った部品か、前日より欠品の日が早まったかを付けます
- 件数の制限 … 1回の見回りでエージェントに渡すのは、欠品の日が近い順に上限まで。上限を超えた分は一覧にだけ載せます
5番目が、この構成の要です。 未確定の入荷を最初から足してしまうと、回答の無い発注残で埋まっている部品が候補から消えます。 逆に未確定をまったく見ないと、回答が来れば済む部品まで督促の対象になります。2つに分けて、「回答待ち候補」は回答を催促する文面、「強い候補」は前倒しや代替の相談に進めます。
計算はすべて Code ノードで行い、AIには結果だけを渡します。 数量の足し引きを生成AIにさせると、桁や日付の取り違えがそのまま警告になります。
AIに処理させる
させるのは、計算が拾った部品について、原因を記録から決め、対応の案と文案を作ることです。 欠品の日と数量は計算の結果をそのまま受け取り、AIは書き換えません。
| 決めること | 選ぶ値 | 判断の材料 |
|---|---|---|
| 原因 | 回答なし/回答が所要日より遅い/回答の数量不足/回答が古い/所要の増加/入荷済み未計上の疑い/不明 | 発注残、回答日、前日との差分、メールの抜粋 |
| 対応の案 | 回答の催促/前倒しの相談/分納の相談/代替品の確認/生産管理へ相談/データの確認 | 原因、欠品までの日数、代替品の有無 |
| 仕入先への文案 | 件名と本文 | 原因と対応の案、過去の督促の回数 |
| 生産管理への警告文 | 何が、いつ、どの製造オーダーで足りなくなるか | 使い先の製造オーダー |
| バイヤーへの確認事項 | 人が決めることの箇条書き | 費用負担、優先順位、代替品の承認 |
原因の「入荷済み未計上の疑い」は、メールの抜粋から拾います。 「本日出荷しました」というメールが来ているのに発注残が残っている部品は、督促ではなく受け入れの確認が先です。 これを督促にしてしまうと、届いている部品を仕入先に催促することになります。
| させないこと | 理由 |
|---|---|
| 欠品の日・数量の計算や書き換え | 計算のノードの結果だけを使う。AIが直すと根拠が二重になる |
| 警告の段階(A/B/C)の決定 | 欠品までの日数と使い先から規則で決める |
| 仕入先への送信 | 送信の道具を持たせない。送るのは人 |
| 費用負担や代金の提案 | 前倒しの費用をどう扱うかはバイヤーが決める |
| 回答の無い発注残の納期を推測すること | 黙っているなら「回答なし」のまま扱う |
指示内容を固定する
System Message に次の内容を入れます。
あなたは製造業の購買部で、欠品の恐れがある部品の原因を調べる担当です。
計算のノードから渡される「欠品の恐れ」の結果を前提に、道具で記録を引き、
原因と対応の案、仕入先への文案、生産管理への警告文を作ってください。
【前提として変えないこと】
- first_short_date、short_qty、basis は計算の結果です。書き換えないでください。
- 数量や日付の足し引きをしないでください。必要な数値は道具の結果から写してください。
【道具の使い方】
1. まず get_open_po_detail で発注残を確認してください。
2. 回答の無い行、回答日が古い行があれば get_supplier_messages を呼んでください。
3. 足りなくなったときに何が止まるかを get_demand_orders で確認してください。
4. 前倒しや代替を検討するときだけ get_alternatives と get_expedite_history を使ってください。
同じ道具を同じ引数で2回呼ばないでください。
【原因の選び方】
- no_reply ......... 回答の記録が無い発注残がある
- reply_late ....... 回答納期が所要日より遅い
- reply_short_qty .. 回答数量が発注数量より少ない
- reply_stale ...... 回答日が基準より古い
- demand_increase .. 前日より所要が増えたことで足りなくなった
- receipt_pending .. 出荷済み・納品済みと読めるメールがあるのに発注残が残っている
- unknown .......... 上のどれとも決められない
迷ったときは unknown を選び、questions_for_buyer に理由を書いてください。
【厳守事項】
- 記録に無いことは書かないでください。回答の無い発注残の納期を推測しないでください。
- 電話で回答があったかどうかは分かりません。記録が無ければ no_reply です。
- 仕入先への文案は「お願い」と「ご相談」の形にしてください。
納期や数量を一方的に変更する書き方、従わない場合の不利益を示す書き方をしないでください。
- 費用の負担、代金、値引きについては文案に書かないでください。
必要なら questions_for_buyer に「前倒しの費用の扱いを決める」と書いてください。
- 文案には、発注番号、行番号、品目番号、発注数量、指定納期、回答納期を
道具の結果のとおりに入れてください。
- evidence には、判断の根拠にした記録の種類と識別子と、該当する文字列を写してください。
- 警告の段階は決めないでください。
【計算の結果】{shortage}
【前日の見回りの結果】{previous}
【担当バイヤー】{buyer}
「電話で回答があったかは分からない」を書かないと、AIは気を利かせます。 回答の記録が無い発注残について「電話で確認済みの可能性」と書き、原因をぼかします。分からないことは分からないまま返させ、確かめるのは人にします。
「お願い」と「ご相談」の形を指定しているのは、取引の条件に関わるからです。 公正取引委員会は、取適法で委託事業者に禁止される行為として、費用を負担せずに注文内容を変更すること(不当な給付内容の変更)や、価格協議の求めに応じない一方的な代金の決定を挙げています。前倒しや数量の追加を「変更します」と書いた文案は、それだけで危うい書き方になります。
出力形式を固定する
Require Specific Output Format を有効にし、Structured Output Parser をつなぎます。 次の形のJSONで受け取ります。
{
"part_no": "",
"run_date": "",
"shortage": { "first_short_date": "", "short_qty": 0, "basis": "confirmed_only | with_unconfirmed" },
"cause": "no_reply | reply_late | reply_short_qty | reply_stale | demand_increase | receipt_pending | unknown",
"evidence": [ { "source": "po | reply_log | mail | demand", "id": "", "quote": "" } ],
"affected_orders": [ { "mo_no": "", "product": "", "ship_date": "" } ],
"proposed_action": "chase_reply | pull_in_request | split_delivery_request | check_alternative | consult_planning | check_data",
"supplier_draft": { "supplier_code": "", "subject": "", "body": "" },
"planning_message": "",
"questions_for_buyer": [],
"confidence": "high | low"
}
Structured Output Parser は、JSONの例から形を作る方法と、JSON Schema を書く方法の2つから選べます。例から作ると、すべての項目が必須として扱われます。 supplier_draft を出さない場合(原因がデータの確認のとき)があるので、JSON Schema で書き、必須の項目を自分で決めます。 なお、JSON Schema の $ref による参照は使えないとされているので、入れ子の形はその場に展開して書きます。
1つ目の理由は、原因と段階を別の層に置けることです。 cause と proposed_action はAIが埋め、警告の段階は後段の規則で決めます。
| 段階 | 条件(規則) | 行き先 |
|---|---|---|
| A | 確定の入荷だけで5営業日以内に欠品、かつ使い先に出荷日が決まった製造オーダーがある | 生産管理のチャネルとバイヤーの両方 |
| B | 6〜10営業日以内に欠品、または段階Aの条件で代替品がある | バイヤーへ。生産管理へは日報でまとめて |
| C | 11営業日以降、または「回答待ち候補」 | バイヤーへの一覧だけ |
2つ目は、evidence で確認が速くなることです。 バイヤーは画面を開き直さずに、どの発注残のどの回答を見て判断したかを読めます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 生産管理システム | 読み取り専用のデータベース接続 | 所要量・在庫・発注残・品目マスタを引く |
| 納期回答の台帳 | 読み取り | 回答納期・回答数量・回答日を引く |
| メール | 下書きの保存 | 仕入先への文案をバイヤーの下書きに入れる |
| Microsoft Teams | チャネルへの投稿 | バイヤーへの通知、段階Aの生産管理への警告 |
| 見回りの記録 | 書き込み | その日の結果、送ったかどうか、翌日の追いかけ |
エージェントに渡す道具はすべて読み取りです。 下書きの保存とチャットへの投稿は、エージェントの出力を受けた後段のノードが規則で行います。AIが道具として書き込みを持たない形にしておくと、見回りが何回まわっても、勝手に送られるものが無くなります。
エージェントに書き込みの道具を持たせたくなったら、人の承認を挟みます。 n8n では、道具に人の確認を設定すると、その道具を呼ぶところでワークフローが止まり、Microsoft Teams や Slack、メールなどへ承認の依頼が飛びます。$tool.name と $tool.parameters で何をしようとしたかを依頼文に出せます。否認されるとその操作は取り消され、AIに否認されたことが伝わるので、System Message に否認されたときの振る舞いを書いておきます。
人が確認する
人が見るのは、エージェントが出した全件です。 ただし、見る深さを段階で変えます。
- 段階Aを最初に見る … 生産管理と同時に通知が届きます。バイヤーは文案を直して送り、急ぐものは電話します
confidenceがlowとunknownのものを見る … 原因が決まっていないものは、記録の側に欠けがあることが多いreceipt_pendingを見る … 督促の前に、受け入れの担当へ入荷の有無を確かめます- 段階B・Cは一覧で見る … 文案に問題がなければそのまま送り、回答待ちのものは様子を見ます
- 前倒しの相談は、費用の扱いを決めてから送る …
questions_for_buyerに残された事項を片付けます
目標は、1件をならして6分です。 文案をそのまま送れるものは1〜2分、段階Aで電話と生産管理の相談が要るものは10分を超えます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 夜間バッチが終わっていない | 取得時刻で検知して見回りを止め、生産管理へ知らせる。前日の値で計算しない |
| 台帳とシステムの発注残が合わない | 照合の一覧を購買へ出し、その品目はエージェントに渡さない |
| 品目に担当バイヤーが付いていない | 購買の責任者へ回す。文案は作るが宛先を空にする |
| 1品目を複数の仕入先から買っている | 発注残ごとに仕入先を分け、文案も仕入先ごとに作る |
| Max Iterations に達した | 途中までの結果と unknown で人へ回す |
| 道具の呼び出しが失敗した | その部品だけ「調査失敗」として一覧に載せる。全体は止めない |
| 同じ部品を3日続けて督促している | 段階を1つ上げ、バイヤーの上長にも通知する |
上の2行で、誤った警告の大半を止めます。 どちらもAIの問題ではなく、データがそろっていないまま計算したことによる問題です。
記録を残す
- その日の計算の入力(所要量・在庫・発注残・回答の取得時刻と件数)
- 部品ごとの在庫の推移と、欠品の恐れの判定結果
- エージェントの出力の全文と、Return Intermediate Steps で残した道具の呼び出しの順と結果
- 規則で決めた段階と、送った先
- バイヤーが文案を直したかどうかと、送った日時
- 仕入先からの回答と、その後に欠品が起きたかどうか
4つ目と5つ目は、翌朝の見回りの材料です。 送ったのに回答が来ていない部品を拾うには、いつ送ったかが記録に残っている必要があります。 送ったことが記録されないと、エージェントは同じ督促の文案を毎朝作ります。
04実装レベルの3段階
最小構成では件数がさばけません。 記録を書き出す作業が重く、毎朝18件には使えません。確かめるための段階です。 半自動化で、1件20分が12分程度になります。 ①の突き合わせが計算に置き換わりますが、原因を台帳とメールで探す作業と文面の作成が残ります。本格構成で6分になり、この段階が本記事の想定です。 差が大きいのは、原因を探す作業が、1件ごとに画面とメールを行き来する手作業だからです。 段階を飛ばさないでください。 半自動化の一覧を2週間見ると、未確定の入荷の数え方と、回答日の基準が自社に合っているかが分かります。計算が空振りする状態でエージェントを足すと、空振りに丁寧な文案が付くだけです。
05工数削減シミュレーション
導入後 360件 × 6分 ÷ 60 = 36 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 購入部品が数千品目あり、生産計画が週ごとに組み替わる組立型の製造業。欠品の確認が購買担当者ごとの目と記憶に頼っていて、納期回答が来ていない発注残に気づくのが遅れることがある場合。生産管理システムに所要量・在庫・発注残があり、読み取り専用で参照できる場合。仕入先の納期回答がメールや台帳に記録として残っている場合。
- 部品の大半を自社で内製しており、購入部品が数十品目に限られる場合。仕入先との間でEDIによる納期回答と自動の所要連携ができており、欠品の見込みがすでにシステムで出ている場合。納期回答が電話だけで記録に残らない場合(先に記録を残す運用が要る)。生産計画が月1回しか変わらず、月初に一度見れば足りる場合。
07最小構成で試す方法
- 先月、実際に欠品した部品と、ぎりぎり間に合った部品を合わせて10件選ぶ
- その10件について、欠品の2週間前の時点の所要量・在庫・発注残・回答の記録を書き出す
- 手元の生成AIのサービスに、1件ずつ記録を貼り付ける
- 「この部品が欠品しそうな原因を、回答なし/回答が遅い/数量不足/回答が古い/所要の増加/入荷済み未計上のどれかで答え、根拠の記録を示してください。記録に無いことは推測しないでください。仕入先へのお願いの文面も作ってください」と指示する
- 出てきた原因を、当時バイヤーが実際に把握した原因と突き合わせる
10件は必ずやってください。 道具やワークフローを組む前に、「記録がそろっていれば原因が決まるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時と同じ原因が根拠付きで出た | 計算のノードとエージェントの組み立てに進む |
| 回答の無い発注残の納期を推測した | 指示の書き方で直る。構成は有効 |
| 記録が足りず原因が決まらない | 回答の台帳とメールの残し方が先。 AIの問題ではない |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 回答の無い発注残で在庫が埋まり、候補から消える | 確定と未確定を分けて数える。 未確定は「回答待ち候補」に回す |
| 朝ではなく夜に動く | Schedule Trigger はワークフローかインスタンスのタイムゾーンを使う。Asia/Tokyo を指定 |
| 道具のワークフローが動かない | 公開していないと失敗する。親と一緒に公開する |
| 前日の在庫で計算して空振りする | 取得時刻を見て止める |
| AIが欠品の数量を計算し直す | 計算の結果は書き換えないと明記し、後段で入力と出力の値を照合する |
| 電話の回答を推測して原因をぼかす | 記録が無ければ no_reply。確かめるのは人 |
| 入荷済みの部品を督促する | メールの「出荷しました」を拾って receipt_pending にする |
| 文案に費用負担を書く | 文案に書かせず、questions_for_buyer に回す |
| 例から作ったスキーマで出力が失敗する | 例から作ると全項目が必須になる。JSON Schema で書く |
| 送ったことが記録されず、同じ文案が毎朝出る | 送信の記録を見回りの記録に残す |
上の2行が、この構成の失敗のほとんどです。 1行目は欠品の見落とし、2行目は見回りそのものが動かないという失敗で、どちらも生成AIの精度とは関係がありません。
最後の行は、運用に乗るかを決めます。 同じ文案が毎朝出れば、誰も見なくなります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 部品の品目と数量、仕入先の名称と発注の条件、製品ごとの生産計画と出荷予定、仕入先とのメールの本文です。個人情報は、メールの差出人の氏名と連絡先が中心です。
- 外部へ渡す範囲を、調査に必要な項目までに限る … 単価や代金の情報は原因の調査に要りません。道具の側のワークフローで、単価の列を返さないようにします
- 仕入先へ自動で送らない … 出すのは下書きまでです。仕入先との取引の条件に直接ひびきます
- 前倒し・数量の追加の相談は、取引の条件として扱う … 公正取引委員会は、取適法の禁止行為として、費用を負担せずに注文内容を変更することや、注文した物品等の受領を拒むことを挙げています。相手先が対象となる取引かどうかと、費用の扱いは、購買の責任者が決めることです。 この構成は判断を代替しません
- 生産計画を外へ出さない … 製品ごとの出荷予定は、営業上の秘密に近い情報です。仕入先への文案に、他社向けの製品名や出荷先を書かないよう指示します
- 参照ビューの権限を絞る … エージェントの道具が使う接続は読み取り専用にし、引ける表を所要量・在庫・発注残・品目マスタに限ります
誤りが起きた場合のリスクは、欠品を見落とすことと、要らない督促で仕入先の手を煩わせることの2つです。 前者は未確定の入荷を確定と混ぜると起き、後者は前日の在庫や入荷済み未計上で起きます。どちらもデータの数え方から出ているので、そこを設計で守ります。
10まず何から始めるか
1週目:回答日を残す
納期回答の台帳に、回答日と回答の手段(メール・電話・EDI)の列があるかを確かめ、無ければ足します。電話で聞いた回答も、日付と一緒に書く運用にします。この列が無いと、回答が古いかどうかを判断できません。
2週目:10件で試す
先月の欠品と、ぎりぎり間に合った部品から10件を選び、手元の生成AIに記録を貼って原因と文面を作らせます。当時の原因と合っているか、推測で埋めていないかを最優先で見ます。
3週目:計算の規則を決める
欠品の恐れとする条件、回答日を古いとする日数、段階A/B/Cの境目を、生産管理と購買で決めます。 あわせて、情報システム部門に参照ビューの用意を依頼します。
4週目:計算のノードまでをつなぐ
n8n の Schedule Trigger から参照ビューを読み、Code ノードで在庫の推移を出し、欠品の恐れの一覧をチャットに出すところまで作ります。この時点ではエージェントを入れません。
2か月目: 道具のワークフローを5本作り、AI Agent ノードで原因と文案を出します。バイヤーが文案を直した割合を毎週数えます。3か月目以降: 翌朝の追いかけと段階の規則を足し、1件20分が何分になったかを実測します。段階Cにしていた部品で欠品が起きなくなり、警告が読まれ続けている時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Schedule Trigger が秒・分・時・日・週・月と Custom(Cron)の間隔を持つこと。ワークフローのタイムゾーン、無ければインスタンスのタイムゾーンを使い、自前のインスタンスの既定が America/New York であること。保存して公開する必要があること | n8n Docs: Schedule Trigger node | 2026-10-05 |
| Tools Agent が課題に応じて道具を選ぶこと。System Message、Max Iterations(既定10)、Require Specific Output Format、Return Intermediate Steps の各設定 | n8n Docs: Tools AI Agent node | 2026-10-05 |
Call n8n Workflow Tool が別のワークフローを道具として呼ぶこと。Description、Workflow Inputs、$fromAI()。公開されていないと「Workflow is not active and cannot be executed.」で失敗すること | n8n Docs: Call n8n Workflow Tool node | 2026-10-05 |
Structured Output Parser が JSON の例から作る方法と JSON Schema で書く方法を持つこと。例から作ると全項目が必須になること。$ref が使えないこと | n8n Docs: Structured Output Parser node | 2026-10-05 |
| Anthropic Chat Model ノードで Claude を接続できること。Prompt Caching(5分/1時間)の設定 | n8n Docs: Anthropic Chat Model node | 2026-10-05 |
道具に人の確認を設定すると止まって承認を求めること。Microsoft Teams・Slack・メールなどの経路。$tool.name と $tool.parameters。否認で操作が取り消され、AIに伝わること | n8n Docs: Human-in-the-loop for AI tool calls | 2026-10-05 |
| 取適法の委託事業者の禁止行為に、受領拒否、不当な給付内容の変更及び不当なやり直し(費用を負担せずに注文内容を変更すること等)、協議に応じない一方的な代金決定が含まれること | 公正取引委員会: 委託事業者の禁止行為 | 2026-10-05 |
仕入先への前倒しや数量の追加の相談が取引の条件としてどう扱われるかは、購買の責任者と、必要に応じて法務で確認してください。 本記事は公正取引委員会のページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0422)についてのご相談はこちらから。
