🤖

Local LLMを用いたMCP(Model Control Protocol)入門: (準備編: 扱うデータの詳細と処理方法)

に公開

はじめに

前回の記事では、MCPで用いられる関数呼び出し(function calling)について、Local LLMでの手法について検証しました。

MCP(Model Context Protocol)は、AIアプリケーションが外部データソース(データベース、API、ファイルなど)にアクセスするための標準プロトコルです。クライアント-サーバーモデルを採用し、一度MCPサーバーを実装すれば複数のAI アプリケーションで再利用できます。これにより開発効率が向上し、AIアシスタントがより多様な実用タスクを実行できるようになります。
MCPに関する解説は、分かりやすく解説されている記事がたくさんあるので、気になる方は調べてみてください。

今回の記事では、パブリックに利用可能な倉庫管理システム(WMS)のCSVデータセットの利用方法を検討します。このシステムは「今日誰が最も長い距離を歩いたか?」といったビジネス上の重要な質問に、インテリジェントな仕組みを通じて答えることができようになるのが目標です。

前回の記事と同様のソースコードレポジトリにあるコードを用います。

データセットについて

このプロジェクトの WMS 分析ツールは倉庫管理データを使用します。

Mendeley Data: Javier Rubio-Herrero (2024), "Warehouse Management System Dataset", Mendeley Data, V1
DOI: https://doi.org/10.17632/pf2w725pw3.1
URL: https://data.mendeley.com/datasets/pf2w725pw3/1

データセットをダウンロードするには以下を実行してください:

python scripts/download_data.py

履物製造企業における倉庫からの注文ピッキングデータを処理します。この包括的なデータセットは、保管割り当てから注文履行まで、完全な倉庫管理ライフサイクルを包含しています。

データセット概要:履物製造倉庫におけるWMSデータ

データセット構造: 倉庫運用の様々な種類の相互に関連した9つのCSVファイルが含まれています:

保管設定ファイル:

  • Class_Based_Storage.csv: エンコードされた製品データ(product_code;quantity形式)を持つABC分類された保管場所
  • Dedicated_Storage.csv: 高回転商品の固定製品配置場所
  • Hybrid_Storage.csv: 専用およびクラスベースアプローチを混合した複合保管戦略場所
  • Random_Storage.csv: 動的割り当てのための柔軟な保管場所

運用取引ファイル:

  • Customer_Order.csv: 顧客コード、タイムスタンプ、数量、ウェーブ割り当てを含む完全な注文記録
  • Picking_Wave.csv: 場所シーケンスと作業者割り当てを持つバッチピッキング指示
  • Product.csv: ABC分類とセクタ割り当てを持つマスター製品カタログ

物理インフラストラクチャファイル:

  • Storage_Location.csv: 全2,292保管位置の正確な3D座標(X,Y,Z)
  • Support_Points_Navigation.csv: 最適化されたピッキングルートのナビゲーションウェイポイント

データエンコーディング: 製品保管は洗練されたエンコーディングスキームを使用し、各場所はproduct_code;quantity形式で最大18の製品カラムを含み、マルチSKU保管分析と空間使用率最適化を可能にします。

空間精度: すべての場所にメートル精度の3D座標が含まれ、4つの保管レベルにわたる倉庫高度変化を考慮した現実的な距離計算とルート最適化を実現します。

ここでのウェーブとは、オーダーを複数まとめてピックされるバッチピッキングのバッチと同等であると考えてください。

主なデータセットの指標:

  • 122,370件の顧客注文 588アクティブ顧客から
  • 9,707のピッキングウェーブ(バッチ) 215,192個別ピックを含む
  • 208のユニーク製品(SKU) SKUレベル追跡付き
  • 24人の倉庫作業者 178運用日間
  • 2,292箇所の保管場所 3D座標付き

時間的指標:

  • 日付範囲: 2023年1月5日〜2023年10月19日
  • ピーク量: 2023年10月2日に3,028注文
  • 平均日次量: 運用日当たり689注文
  • 季節パターン: 明確な月次需要変動

対象倉庫の座標について:

  • X軸範囲: 86-666メートル(倉庫長: 580m)
  • Y軸範囲: 0-1440メートル(倉庫幅: 1.44km)
  • Z軸レベル: 4保管レベル(地上からレベル4まで)
  • 総カバレッジ: 約835,200立方メートルの保管空間

ツール設計について

MCPでのツール呼び出しを行う上で、複数のツールを定義・作成します。取得可能なデータの種類や要件など様々な制約や要望がある中で、適切にツールを設計することがLLMの性能を最大限引き出し価値あるシステムの構築に繋がると思いますが、今回は簡易的なデモのため、以下のような例を想定してツールの設計を行いたいと思います。

商品に関する分析

目的: 期間内で最も人気が高く需要の多い製品の特定
使用例: "○○○○年△△月に最も人気だった製品は?"
特徴:

  • 柔軟な日付範囲フィルタリング(開始日・終了日)
  • 単一日分析および期間比較対応
  • 総需要、注文頻度、平均数量メトリクス
  • トップ製品ランキング自動生成

作業者に関する分析

目的: 最も長い距離を歩いた倉庫作業者の特定と日次歩行距離分析
使用例: "○○○○年△△月××日に最も長い距離を歩いた作業者は?"
特徴:

  • 特定日付での詳細分析(YYYY-MM-DD形式)
  • 全オペレータの歩行距離ランキング生成
  • パフォーマンス効率性メトリクス提供

現状のデータセットの構造では、1日の作業者ごとの歩行距離ではなく、長い期間を指定して歩行距離のランキングを表示するには多くの計算時間が掛かってしまいます。理由としては、ピッキングウェーブ(ピッキングバッチ)ごとに庫内の座標を用いて歩行距離を計算しないといけないからです。ピッキングウェーブIDごとにあらかじめ歩行距離を計算してデータセットを作成することも可能ですが、煩雑になるため、日毎の歩行距離を計算する機能のみにとどめておこうと思います。

他にも取引先ごとの人気商品に関する分析や季節変動分析のための様々なツールが作成できそうです。ただ、データセットの情報と任意のプロンプトを投げればMCPを用いて思いのままデータ分析ができるわけでは無いので注意が必要です。必要な機能の洗い出しと整理がとても重要だと言えます。

今回は利用する倉庫管理システム(WMS)のデータセットの概要とMCPでのデモ実装の方針について考えてみました。次回以降では、実際にLocal LLMとMCPを統合するシステムを作成して、データ分析を行なってみたいと思います。

Discussion