Shopifyは、数百万件にのぼる非構造化コマースデータ(ストアページ、ポリシーなど)を構造化データへ変換するために、One-Shot LLM方式からDSPyベースの特化型マルチエージェント(Multi-Agent)アーキテクチャへ移行しました。この過程で、GPT-4/5級の大規模モデルの代わりに自社ホスティングのQwen(32B/72B級)モデルとDSPyのJapaオプティマイザを活用し、コストを75分の1に削減しながら、データ抽出品質を2倍に向上させる成果を上げました。特に、単一エージェントよりも特定目的(不正検知、ストアプロファイリングなど)に特化したサブエージェント構成が、性能向上の決定要因だったことが示されています。
詳細分析 (Deep Dive)
1. 問題の背景:非構造化データの洪水
Shopifyはマーチャントに非常に高い柔軟性を提供しています。これは、ストアごとにHTML構造、言語、ポリシーの表記方法がすべてばらばらであることを意味します。「このストアは携帯電話を販売しているか?」「返品ポリシーは何か?」といった単純な質問でさえ、全社的に標準化された回答を得るのは非常に困難でした。
2. ソリューションの進化過程
- 段階 1: One-Shot LLM(初期アプローチ)
- ストアの主要ページのテキストを抽出してGPT-4(その後は5)に渡し、スキーマ抽出を依頼。
- 限界: コンテキストウィンドウの制約により、すべてのページを送れない(返品ポリシーページが欠落すると回答不能)。フィールドが増えるほどプロンプトは脆弱(Fragile)になり、コストも指数関数的に増大。
- 段階 2: エージェンティック(Agentic)アプローチとDSPy導入
- LLMにすべてのデータを与える代わりに、ストアを探索し必要な情報を自ら見つける「ツール(Browsing, Investigation)」を付与したReActエージェント構成へ変更。
- この過程でDSPyを導入し、プロンプトの手動チューニングではなくプログラム的な最適化を試みた。
- 段階 3: 特化型サブエージェント(Specialized Sub-Agents)
- 単一エージェントがすべての目的(不正、税務、プロファイリング)を担うのではなく、3つの専門エージェントに分離。
- Fraud Agent: 外部レビューサイト検索ツールを活用。
- Profile Agent: 内部ポリシーのパースに集中。
- 各エージェントは独立してDSPyで最適化され、相互干渉なしに性能を改善できる構造を確保。
3. 技術的解決策: Eval Reliability & Snapshotting
エージェントがリアルタイムでWebサイトをクロールすると、サイト内容の変化によって評価データセット(Golden Dataset)の信頼性が損なわれます。Shopifyはこれを解決するために、**「ShopNap」**というスナップショットサービスを構築しました。
- ラベリング時点のストア状態を静的に固定(Frozen context)。
- DSPyオプティマイザはこの固定スナップショット上で実行され、再現可能な評価と学習を保証。
4. インフラアーキテクチャ
効率的な処理のため、3つのレイヤーに分離して運用しています。
- Batch Layer (Flink): 1日15万件以上のストア処理リクエストを管理。
- Agent Layer (Kubernetes): CPUベースのクラスタでエージェントロジック、HTMLパース、ツール呼び出しを実行。
- LLM Layer (GPU Cluster): vLLMなどを通じて自社ホスティングのQwenモデルを提供。
主要データとベンチマーク
Shopifyが明かした、アーキテクチャ移行前後の性能およびコスト比較です。
| 項目 | One-Shot (GPT-5推定) | Agentic + DSPy + Qwen |
|---|---|---|
| コスト (Cost) | 基準値(高い) | 75分の1まで削減 |
| 品質 (Quality) | 基準値 | 約2倍(100%向上) |
| ストアカバレッジ | 一部(コスト問題で制限) | 全ストア(Full Coverage) |
| 拡張性 | 新規フィールド追加時に全体の再検証が必要 | サブエージェント追加で容易に拡張 |
重要な教訓
- Monolithic vs specialized: 複雑なタスクほど、単一エージェントよりも関心の分離(Separation of Concerns)を適用したサブエージェントが有利 [21:59].
- Architecture over Tuning: 個別のプロンプト文言を修正するより、正しいシステムアーキテクチャを設計し、自動最適化(DSPy)を適用する方が持続可能な性能を保証する [23:24].
- Small Models Win: 特定ドメインのタスクでは、最適化された中小規模モデル(Self-hosted)が汎用大規模モデルより、費用対効果と性能の両面で優位になり得る [23:54].
1件のコメント
DSPyはたまに耳にする気がするのですが、使ってみた方はほかにもいらっしゃいますか? 感想が気になります。