「LLMを活用したサプライチェーン分析におけるLangChainの提供- GPTで強化されたコントロールタワー」

「LLMを活用したサプライチェーン分析におけるLangChainの提供- GPTで強化されたコントロールタワー」

輸送管理システムのデータベースに接続されたLangChain SQLエージェントを使用して、自動化されたサプライチェーンコントロールタワーを構築する

(作者の画像)

サプライチェーンコントロールタワーは、エンドツーエンドのサプライチェーン業務を効率的に管理するための可視化と監視の機能を提供する集中型のソリューションと定義することができます。

この分析ツールは、サプライチェーン部門がリアルタイムで重要な問題を追跡、理解、解決するための能力を提供します。

Pythonでのサプライチェーンコントロールタワー [リンク] — (作者の画像)

以前の記事で、Pythonで開発された分析制御タワーの解決策を紹介しました。この解決策は、自律的にインシデントレポートを生成する能力を持っています。

ただし、このアプローチには提供される指標とレポートの範囲に制限があるという制約があります。

ユーザーエクスペリエンスを向上させるために、このモデルをどのように拡張できますか?

この観察は、OpenAIのGPTのようなLarge Language Models (LLMs)が、ユーザーの要求に基づいたカスタマイズされた分析を提供するという有望な可能性につながりました。

ソリューションの高レベルコンセプト — (作者の画像)

この記事では、私がLangChainとOpenAIのGPTモデルをマスターし、究極のサプライチェーンコントロールタワーを構築するための旅の最初のステップを共有します。

💌 無料で直接新しい記事を受け取る:ニュースレター📘 サプライチェーン分析のための完全ガイド:分析チートシート

SUMMARYI. サプライチェーン分析のためのLangChainとLLMsLangChainとLLMsがサプライチェーン管理でアナリティクスを革新する方法の探求1. シナリオ:ファッション小売業者の流通プロセスグローバルファッション小売業界における複雑な流通運営2. 実験のためのステージの設定LangChain SQLエージェントをテストするための実験的なセットアップを紹介する3. 実験プロトコル:シンプルに始める基本的なエージェントの能力を評価するための簡単なクエリで始めるII. 実験と主な結果1. テスト1テンプレートなしの簡単なプロンプト2. テスト2コンテキストを持つプロンプトテンプレート3. テスト3改善されたコンテキストを持つプロンプトテンプレート4. テスト4改善されたコンテキストでの高度な分析5. 最終テストメールレポートを書くためのチェーンの作成III. LLMsがサプライチェーンの未来を形作る1. 単純な「概念証明」エージェントを使用してTMSデータで出荷を追跡することができます2. プロトタイプの開発を続ける複雑な分析やさらなるテーブルのエージェントへの挑戦3. サプライチェーンの幅広い応用の探索LLMsは、デジタルツイン、ネットワーク最適化、ビジネスインテリジェンス、ESGレポートなど、多くのアプリケーションでユーザーエクスペリエンスを向上させることができます

サプライチェーンアナリティクスのためのLangChainとLLMs

シナリオ:ファッション小売業者の流通プロセス

国際的な衣料品グループのデータサイエンティストであると想像してください。グローバルな店舗ネットワークを持つ企業です。

現在のプロジェクトでは、流通計画マネージャーの補助として、店舗の補充プロセスを監視することが求められています。

サプライチェーンネットワーク — (作者の画像)

彼女は、世界中の店舗の在庫を管理するプランナーのチームを率いています。

プロセスは簡単で、在庫レベルが最小レベルに達した時に

  • プランナーは、アイテムの数量や要求納品日などの情報を含んだERP補充注文を作成します
  • 倉庫のオペレーションチームは、出荷のために注文を準備します
  • 輸送プランナーは、店舗への配送を組織します

最も重要なパフォーマンス指標は、定時に納品される注文の割合です。

タイムスタンプで追跡された流通チェーンプロセス—(著者による画像)

注文作成から店舗への納品まで、データベースにはいくつかのタイムスタンプとブールフラグが記録されます。

  • 注文送信時間は「送信」に記録されます。これが締め切り時間を過ぎた場合、「送信_定時」というフラグが0に設定されます。
  • トラックの積み込み時間は、「積み込み」に記録されます。これが締め切り時間を過ぎた場合、「積み込み_定時」というフラグが0に設定されます。
  • トラックの空港到着時間は、「空港到着」に記録されます。これが締め切り時間を過ぎた場合、「空港到着_定時」というフラグが0に設定されます。
  • 航空機の空港到着時間は、「空港到着」に記録されます。これが締め切り時間を過ぎた場合、「空港到着_定時」というフラグが0に設定されます。
  • トラックの都市到着時間は、「都市到着」によって記録されます。これが店舗の営業ウィンドウ外の場合、「店舗オープン」というフラグが0に設定されます。

最も重要なタイムスタンプは「納品時間」です。これは「予定納品時間」と比較され、「定時納品」の値が設定されます。

私が以前の記事で提案した初期の解決策は、操作的な質問に答える視覚化とレポートのセットです。

質問1:遅延納品された出荷はいくつありますか?

(著者による画像)

質問2:出荷は現在どこにありますか?

(著者による画像)

このような記述的な分析ソリューションの設計における主な難点は、複雑さと完全性のバランスです。

  • すべての操作的な質問に回答するためには、レポートは非常に使いにくくなる可能性があります。
  • レポートを簡潔に保ちたい場合は、操作的な範囲を完全にカバーすることはできません。

操作的な質問に回答するために視覚化、テーブル、レポートに依存する従来のビジネスインテリジェンス(BI)ツールの限界に達しています。

私にとって、レポートの未来は、ユーザーの質問とコンテキストに合わせてユニークにカスタマイズされたダイナミックなレポートにあります。

GPTモデルを使用して、リクエストごとに適切な出力を提供することで、ユーザーエクスペリエンスを向上させることは可能ですか?

これは、Pythonで開発されたシンプルなプロトタイプで解明しようとしていることです。

実験のための舞台の設定

セットアップは簡単です:

  • 単一のテーブル’shipments’を持つローカルデータベース’shipments.db’
  • Langchainバージョン0.0.325
  • GPTモデルへのクエリを行うためのOpenAIキー
  • LangChain、SQLite、およびPandasライブラリを使用するPythonのローカル環境
ソリューションの高レベル概要 — (著者の画像)

データベースには、タイムスタンプとブールフラグ、また出荷ID、目的地、注文金額が含まれています。

したがって、LangChain SQLエージェント(OpenAIのGPTモデルによってパワードされています)はデータベースにアクセスし、SQLクエリを書き込んで出力を使用してユーザーの質問に答えることができます。

実験プロトコル:シンプルにスタート

エージェントの効果を感じたかったので、まず簡単な質問から始めました。

“5月の最初の7日間で遅延した出荷は何個ありましたか?”

正解は6,816個の出荷です。

エージェントの目標動作 — (著者の画像)

私は、エージェントが「2021年5月1日」から「2021年5月7日」までのすべての出荷をブールフラグ‘On_Time_Delivery’ = FalseでカウントするSQLクエリを作成することを期待しています。

次のセクションでは、エージェントとの異なるインタラクションアプローチを探求し、正確な回答を提供する最も効果的な方法を探します。

💡 サプライチェーンアナリティクス、持続可能性、および生産性に関連するその他の記事のためにVoAGIでフォローしてください。

実験と重要な洞察

すべてが準備できたので、データベースと対話するLangChainエージェントを作成できます。

私はAgentType.ZERO_SHOT_REACT_DESCRIPTIONを使用しました。これは、「ゼロショット」学習コンテキストで動作するタイプのエージェントです。

このエージェントは、特定のトレーニングなしにクエリに応答することができます。

テスト1:テンプレートなしのシンプルなプロンプト

最初のテストでは、シンプルな質問でエージェントにクエリを行います。

「5月の最初の7日間で遅延した出荷は何個ありましたか?」

[ブロック1]: エージェントはユニークなテーブル’shipments’でデータベースを探索し始めます。

[ブロック1]: データベースの発見 — (著者の画像)

エージェントは、質問の「遅延した出荷」をデータベースのテーブル’shipments’に関連付けます。

この初期ブロックは、実験の他のイテレーションとまったく同じです。

[ブロック2]: エージェントはクエリを書き、間違った回答を提供します。

[ブロック2]: データベースをクエリして回答を提供する — (著者の画像)
テスト1:目標結果(左)/ テスト出力(右)—(画像提供:著者)

👍 良い点は、エージェントが正しい日付(注文日)を使用して配達物を絞り込むことです。👎 ただし、彼は配達物の遅延を定義するために間違ったフラグを使用しました。

これは、明示的に遅延した出荷物の定義をしていなかったため、受け入れられることがあります。

テスト2:コンテキストを持つプロンプトテンプレート

回答を改善するために、コンテキストを持つプロンプトテンプレートを使用できます。

ユーザーが何を質問するかは常にわからないため、コンテキストを最小限に保ちたかったのです。

context_explanation = """供給チェーンコントロールタワーマネージャーとして、私の役割は物流ネットワークを見守り、出荷物を効率的に処理し、時間通りに配送することです。 私たちのデータベースの中にある「出荷物」テーブルは、これらのプロセスを監視するために重要です。 それには、各出荷物の進捗状況とタイムリネスを追跡するいくつかの列が含まれています:- 「注文日」と「予想搭載日」は、注文が行われた日時と出発の予定搭載日時を示しています。- 「予想配達時間」は、出荷物の予想配達時刻を定義しています- 「搭載時間遵守」「空港時間遵守」「着陸時間遵守」「送信時間遵守」は、出荷物が各段階で時間通りに処理されたかどうかを示すブール値です。これらのうちいずれかがFalseの場合、遅延が発生し、出荷物が次の日に延期される可能性があります。- 「店舗オープン」は、トラックが閉店時間前に店舗に到着したかどうかを示します。ここでFalseの値は、配達が翌日を待つ必要があることを意味します。- 「時間通りの配達」は、要求された配達時間までに出荷物が到着したかどうかを示す、私たちのサービスレベルの重要な指標です。これらの列のデータを理解することで、出荷プロセスのボトルネックを特定し、納品性能を向上させるための是正措置を取ることができます。"""input_question = "5月の最初の7日間で遅延した出荷物はいくつありましたか?"

💡 観察:コンテキストは、コントロールタワーマネージャーの役割とデータベースの内容を高レベルで説明しています。

[ブロック2]:エージェントはクエリを書き、間違った回答を提供します。

[ブロック2]: データベースをクエリし、回答を提供する —(画像提供:著者)
テスト2:目標結果(左)/ テスト出力(右)—(画像提供:著者)

👎 エージェントは中間フラグをよりよく理解していますが、まだポイントを逸しています。

この遅延した出荷物の定義は非論理的ではありませんが、運用の現実と一致しません。

💡 観察:一つまたは複数のフラグがゼロであっても、出荷物が時間通りであることができます。遅延した出荷物かどうかは、 ‘On_Time_Delivery’ フラグだけが決定します。

フラグに関連するカットオフ時間の定義 —(画像提供:著者)

🙋‍♀️ エージェントに公正であるために、それは誰も簡単に推測できる定義ではありません。

したがって、コンテキストに ‘遅延した出荷物’ の明示的な定義を含めるべきです。

テスト3: 改善された文脈を持つプロンプトテンプレート

追加の文を加えて文脈を改善しました。

「’On_Time_Delivery’ が false の場合、配送は遅延と見なされます。」

そして予想通り、結果は良好です。

[Block 2]:データベースをクエリして回答を提供 — (著者による画像)

👋 エージェントは遅延した配送を定義するための正しいフラグを選択しました。

もし高度な分析を依頼したらどうなるでしょうか?

遅延はさまざまな理由によって引き起こされる可能性があり、これらの理由はデータセットに含まれるさまざまなフラグによって捉えられます。

配達済みの貨物(上:定時、下:遅延) — (著者による画像)

当社のコントロールタワーチームは、定時に配達されなかった各貨物の理由コードを知りたがっています。

この会社では、理由コードは「すべての中間フラグが false である」というリストで定義されます。

例えば、もし配送が遅延している場合:

  1. 「On_Time_Delivery」は false
  2. 「Transmission_OnTime」と「Loading_OnTime」は false
  3. その場合、理由コードは「Transmission_OnTime, Loading_OnTime」となります。

テスト4: 改善された文脈を持つ高度な分析

追加のステートメントを含めましょう。

「遅延した貨物の理由コードは、その貨物に対して 0 となるすべてのフラグのリストで定義されます。」

したがって、新しい質問でエージェントに挑戦することができます:

5月の最初の7日間に遅延した貨物の総数と理由コード別の分割を提供してください。

残念ながら、エージェントは理由コードの正しい定義を計算することができませんでした。

[Block 2]:データベースをクエリして回答を提供 — (著者による画像)

数回の反復の後、私はエージェントがいくつかの指示を必要としていることに気づきました。

したがって、質問を改訂しました。

定義に基づいて「Reason_Code」という列を作成してください。次に、5月の最初の7日間における遅延配送の総数と理由コード別の分割を提供してください。

[Block 2]:データベースをクエリして回答を提供 — (著者による画像)

出力は今、遅延配送の原因の定義と完全な分析と一致しています。

この出力を使用してメールでレポートを送信することはできますか?

最後の演習として、私はこの出力を使用してエージェントにメールを作成するように依頼するチェーンを作成したかったです。

最終テスト: メールレポートを作成するためのチェーンを作成する

LangChainを使用してチェーンを作成する場合、複数のエージェントを組み合わせて、各タスクが前のタスクの出力を使用して順番に実行する連続したタスクを行います。

  • エージェント1: SQLクエリエージェントこのエージェントはユーザーの質問を解釈し、SQLクエリを作成し、データベースからデータを取得します。
  • エージェント2: メール作成エージェントこのエージェントはSQLクエリエージェントから処理されたデータを受け取り、整理された情報を含んだメールを作成します。

私たちは、オペレーションディレクターのジェイ・ピティにパートナー2に私(制御塔マネージャーのSamir Saci)のためにメールを書いてもらうよう依頼しました。

[ブロック3]:エージェント1の出力を使用してメールを書く —(画像 by 著者)

💡 観察:何らかの理由で、エージェントは遅延した出荷数を日ごとに分割することを決めました。

[ブロック4]:メールの出力 —(画像 by 著者)

出力はクエリ結果を要約したメールです。

  • エージェントはメールを結論付ける前に追加の分析を含んでいます。
  • トーンは形式的で、物流オペレーションマネジメントのコンテキストに合っています。

出力はPythonのSMTPライブラリを使用して自動的にメールを送信するために使用することができます。

以下に例を示します。

Pythonを使用してHTMLメールでオペレーショナルレポートの配信を自動化する

Pythonを使用して組み込みの視覚効果を備えたサプライチェーンのオペレーショナルレポートの配信を自動化。

towardsdatascience.com

💡 学んだこと:

LangChain SQL Agentsとのこの単純な実験は、私に…

  • エージェントは全能ではありません。したがって、特定のビジネスの定義はコンテキストで説明する必要があります。
  • 良いコンテキストがあっても、エージェントは適切な出力を提供するためのガイダンスが必要な場合があります。
  • 高度なタスクを実行するために複数のエージェントを連携させることができます。
  • エージェントはガイダンスが必要な場合があるため、おそらくユーザーをトレーニングしてプロンプトエンジニアリングを促す必要があります。

主な挑戦は、エージェントがユーザーによって生成されるすべての質問に答えることができるようにするための適切なコンテキストを提供することです。

📝追加コメント:私は自分がChat GPT-4を使用して、その「弟」であるGPT-3.5 Turboと一緒に使用していたプロンプトテンプレートのコンテキストを向上させるためにかなりサポートを受けたことに驚きました。

💡VoAGIで私をフォローして、🏭サプライチェーン分析、🌳持続可能性、および🕜生産性に関連するより多くの記事を読んでください。

LLMsがサプライチェーンの未来を形作る

シンプルな「概念実証」

私はこのエキサイティングな旅を始めたばかりなので、この記事で共有したアプローチに関するコメントや意見を積極的にお待ちしております。

初期の結果は、大言語モデル(LLMs)の能力によって強化された「セルフサービス」データベースによる変革的な未来を約束しています。

著者によるLangChainエージェントが複数のデータ製品にリンクしています —(画像 by 著者)

このソリューションは、データメッシュを実装している企業に特に有益であり、生成型AIの力で応答性のあるインターフェースを介してユーザーを直接データ製品に接続するために使用することができます。

ユーザーは私たちのダッシュボードを使用していません。なぜですか?

これにより、ユーザーは自然言語を通じて複雑な分析を行うことができ、現在のダッシュボードベースのデータインタラクションを変革します。

プロトタイプの開発を続ける

これらの初期テストの結論は非常にポジティブです。

ただし、この概念実証を公式に最終化する前に、いくつかのテストを実施する必要があります。

  • データセットを中継便やキャンセル注文で豊かにする
  • モデルが欠損データをどのように処理しているかをテストする
  • エージェントを複数のデータベースに接続し、質問に答えるために複数のデータ源をどのように管理できるかをテストする

どのような質問をユーザーがするか(エージェントの振る舞いも監視しながら)を発見するために、ユーザー受け入れテストなしで本番で展開することはしません。

将来の実験は将来の記事で共有しますので、興味があればVoAGIでフォローしてください。

サプライチェーンにおける幅広い応用の探索

サプライチェーンデータサイエンティストとして、私の実験はここで終わりません。

LMLの他の応用をサプライチェーン分析の範囲内で探求します。

これにはLMLを最適化モデルと統合することが含まれます。

  • 👬📈 サプライチェーンデジタルツインアプリケーション:ユーザーは自然言語を使用してシナリオを作成し、シミュレーションをトリガーできるエージェントの役割を果たします。(ユーザーは「イタリアの中央倉庫を移動した場合はどうなりますか?」などと質問できます。)

サプライチェーンデジタルツインとは何ですか?

pythonを使用してデジタルツインを発見:サプライチェーンネットワークのモデリング、意思決定の強化、運用の最適化。

towardsdatascience.com

サステナブルサプライチェーン最適化ウェブアプリを作成する

組織が持続可能な調達とサプライチェーン最適化を組み合わせて、コストと環境の両方を抑制するのを支援する

towardsdatascience.com

  • 🏭🍃 サステナブルソーシング:最高のサプライヤーを選ぶ アプリケーション:購買チームは自然言語を使用して緑のイニシアチブを作成し、コストへの影響を確認できます。(ユーザーは「このSKUの調達には二酸化炭素を排出しない工場のみを選ぶ場合のコストを推定したい」と質問できます。)

サステナブルソーシングとは何ですか?

持続可能性と社会性の指標を考慮して最適なサプライヤーを選ぶためにデータサイエンスをどのように利用できますか?

s-saci95.medium.com

私たちはエージェントを使用してデータの品質を改善したり、戦略的レポート用のデータの監査をサポートすることもできます。

  • 📉📄 ESGレポート:環境、社会、ガバナンスの報告アプリケーション:レポートを作成するために使用されたデータの監査を自動化します。(監査人は「プラントXYZのエネルギー消費量を計算するために使用された公益事業料金を取得できますか?」などと質問できます。)

ESGレポートとは何ですか?

企業の環境、社会、ガバナンスの包括的かつ効果的なデータ分析の活用

towardsdatascience.com

  • 📉✅ データ品質とは何ですか?アプリケーション:エージェントを使用して、データの正確性、一貫性、完全性を保証するための手法を挑戦またはサポートします。(ユーザーは「昨年配送された未着のステータスを持つ出荷の数を分析できますか?」などと質問できます。)

データの品質とは何ですか?

サプライチェーンデータの正確性、一貫性、完全性を確保するための方法論を見つける

towardsdatascience.com

これらの各領域は、企業で「アナリティクス・アズ・ア・サービス」ソリューションを展開するために、生成型AIを活用する巨大なポテンシャルを秘めています。

この情熱を共有している場合は、コメントセクションでいくつかの提案を自由にしてください!

私について

LinkedinとTwitterでつながりましょう。私はデータ分析を活用して物流オペレーションを改善し、コストを削減するサプライチェーンエンジニアです。

データ分析とサプライチェーンに興味がある場合は、私のウェブサイトをご覧ください

Samir Saci | データサイエンスと生産性

データサイエンス、個人の生産性、自動化、オペレーションリサーチ、サスティナブルに焦点を当てたテクニカルブログ

samirsaci.com

💡 サプライチェーンアナリティクス、持続可能性、生産性に関連する記事をもっと読むために、VoAGIで私をフォローしてください。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more