Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LangChain Meetup Tokyo UPCYCLEにおけるLangChain 活用事例

Avatar for morioka shuhei morioka shuhei
July 02, 2025
300

LangChain Meetup Tokyo UPCYCLEにおけるLangChain 活用事例

Avatar for morioka shuhei

morioka shuhei

July 02, 2025
Tweet

Transcript

  1. 2
 Confidential and Proprietary, A1A, Inc.
 自己紹介
 LangChain Meetup Tokyo

    #6 
 名前
 森岡周平 
 所属 / 仕事
 2022年にバックエンド・インフラ担当のエンジニアとして A1Aに入社
 去年からAI サービスの企画・開発と、チームメンバーの AI活用支援に従事
 今日話すこと・ゴール
 AIをサービスに取り入れたいソフトウェアエンジニア の人に
 弊社が開発した LangChain を利用したサービスの事例をご紹介
 「自分たちも作れそう!」 という気持ちになっていただければ幸いです! 

  2. 3
 Confidential and Proprietary, A1A, Inc.
 01 UPCYCLEとは
 02 UPCYCLEを支えるAIサービス


    03 AIサービスのアーキテクチャー 
 04 AIサービスの実装例
 05 全体のふりかえりと今後の予定 
 Agenda

  3. 4
 Confidential and Proprietary, A1A, Inc.
 UPCYCLEとは
 LangChain Meetup Tokyo

    #6 
 製造業の「調達担当者」の方向けの査定支援サービス 
 1. フロントローディング
 過去の類似事例からの相場感把握
 3. 価格査定
 見積書データの構造化と比較・分析
 ※ 画像は ImageGen4にて作成しました 
 2. 査定データの収集
 見積書・図面の自動収集

  4. 5
 Confidential and Proprietary, A1A, Inc.
 その他 Prompt
 その他...
 UPCYCLEを支えるAIサービス設計


    LangChain Meetup Tokyo #6 
 UPCYCLE のAI 3層構造
 解析 ( LangGraph + Workflow )
 開発中: 検索 ( LangGraph + Agent )
 開発中: 活用 ( Vercel AI SDK )
 図面
 見積書
 図面
 解析AI
 見積書
 解析AI
 構造化DB
 非構造化DB
 図面 Data
 見積 Data
 図面 Data
 見積 Data
 検索AI
 Agent
 図面検索 AI
 見積検索 AI
 査定支援 AI
 例: 図面情報から見積書を探す 
 (図面選びながら ) この図面と 
 関係ありそうな見積書探して 
 例: 見積情報で図面を探す 
 品名〇〇で、生産数量 X 個の
 図面出してくれる? 
 例: 複数の見積書で比較する 
 この見積書データを 
 比較しやすい項目でまとめて 
 その他 AI...
 その他 Prompt 例
 コンテキスト注入と出力整形を担う層 
 Requestに適したデータの検索を担う層 
 ドメイン知識に基づきファイルを解析する層 
 人による確認・修正
 検索先は AIが自分で判断 
 認可は FastAPIで実装 

  5. 6
 Confidential and Proprietary, A1A, Inc.
 その他 Prompt
 その他...
 UPCYCLEを支えるAIサービス設計


    LangChain Meetup Tokyo #6 
 UPCYCLE のAI 3層構造
 解析 ( LangGraph + Workflow )
 図面
 見積書
 図面
 解析AI
 見積書
 解析AI
 構造化DB
 非構造化DB
 図面 Data
 見積 Data
 図面 Data
 見積 Data
 検索AI
 Agent
 図面検索 AI
 見積検索 AI
 査定支援 AI
 例: 図面情報から見積書を探す 
 (図面選びながら ) この図面と 
 関係ありそうな見積書探して 
 例: 見積情報で図面を探す 
 品名〇〇で、生産数量 X 個の
 図面出してくれる? 
 例: 複数の見積書で比較する 
 この見積書データを 
 比較しやすい項目でまとめて 
 その他 AI...
 その他 Prompt 例
 コンテキスト注入と出力整形を担う層 
 Requestに適したデータの検索を担う層 
 ドメイン知識に基づきファイルを解析する層 
 人による確認・修正
 検索先は AIが自分で判断 
 認可は FastAPIで実装 
 今日のお話はココ !!
 開発中: 検索 ( LangGraph + Agent )
 開発中: 活用 ( Vercel AI SDK )

  6. 7
 Confidential and Proprietary, A1A, Inc.
 AIサービスのアーキテクチャー
 LangChain Meetup Tokyo

    #6 
 図面解析AI インフラ構成図 (AI関連部分のみ抽出 )
 Vercel
 Next.js
 Application
 Rails
 AI Service 
 FastAPI+LangChain
 BFF
 Rails
 OpenSearch
 Amazon Aurora
 ECS (Service Connectで接続)
 Data Store
 S3
 Generative AI
 VertexAI
 workload identity 接続 Bedrock

  7. 8
 Confidential and Proprietary, A1A, Inc.
 AIサービスのアーキテクチャー
 LangChain Meetup Tokyo

    #6 
 図面解析AIの設計における要求・制約 
 フレームワーク 
 結果の説明責任 
 説明
 複数LLMの活用 
 解析結果の説明責任と、解析の再現性 が求められる。解析と用途が限られており状態は限定的 。
 よって、処理を制御しやすく、可観測性に優れた Workflow で開発したい
 前処理 
 画像認識の前処理に Pythonのライブラリを利用しているので、言語は Python を選びたい
 Pythonで任意のLLMに依存せず、Workflow (Agentも) が書けるフレームワーク = LangChain !!
 ※ 当時は1人で開発していたが、後々多くの人が関わる。学習のレールが整っていることも重視 
 AIの成長は日進月歩。今強いモデルが将来も強いとは限らず、モデル毎に強みがある 
 任意のモデルにロックインされず、複数モデルを併用しつつ、適切に置き換えていきたい 

  8. 9
 Confidential and Proprietary, A1A, Inc.
 OpenSearch
 AIサービスのアーキテクチャー
 LangChain Meetup

    Tokyo #6 
 LangGraphを用いた図面解析AIのワークフロー
 Amazon
 Aurora
 検索用 
 TEXT 生成
 評価/統合
 重要項目 
 読み取り 
 検索用 
 TEXT 生成
 表解析 
 表抽出 
 カテゴリ 
 分類
 部品抽出 
 1. 表抽出・解釈 
 2. 部品抽出・分類 
 3-a. 部品解釈 (カテゴリA)
 3-b. 部品解釈 (カテゴリB)
 重要項目 
 読み取り 
 3-c~.... 部品解釈 (カテゴリ etc..)
 重要項目 
 読み取り 
 重要項目 
 読み取り 
 検索用 
 TEXT 生成
 LangGraph製 図面解析 AI全体像
 重要項目 
 読み取り 
 図面は解像度が高く、そのままでは AIが読み取れない。 
 解像度を落とし、表や部品のみ抽出。 
 解像度を戻して、分割して解析、その後統合する。 
 
 参考: Geminiは 最大解像度 3072 × 3072. 
 図面は 60000 × 60000 など
 前段で読み取った情報を圧縮して後段のAIに渡していく設計
 Node
 Edge (経路)

  9. 10
 Confidential and Proprietary, A1A, Inc.
 AIサービスのアーキテクチャー
 LangChain Meetup Tokyo

    #6 
 1.表抽出・解析の仕組み 
 1.1で利用した技術はこちら -> Google Cloud公式 Image understanding: https://ai.google.dev/gemini-api/docs/image-understanding
 1-1. Image Segmentation
 1-2. 表画像抽出 
 1-3. 構造化データ変換 
 {
 “part_name”: “CASE, SIDE A”,
 “drawing_number”: “99999-0006A”,
 “material”: “ADC12”,
 “product_weight”: 0.0313,
 “date”: “2024-09-29”,
 “etc”: “....”,
 }
 解像度を元に戻し表画像を抽出 
 LLMが表を読み取り、構造化データに変換 
 図中の表を解釈し、重要項目を構造化データとして読み解く 
 概観が分かる低解像度の図面を用意 
 Geminiで図面中の表を識別 (赤い枠線)

  10. 11
 Confidential and Proprietary, A1A, Inc.
 AIサービスのアーキテクチャー
 LangChain Meetup Tokyo

    #6 
 2.部品抽出・分類の仕組み 
 2-1. Image Segmentation
 2-2. 画像分割
 2-3. 部品分類
 概観が分かる低い解像度の図面を用意 
 Geminiで図面中の部品を識別 (青い枠線)
 図中の部品を読み取り、「 1. 表抽出・解釈」で得た結果を元に 部品種別を分類する 
 部品画像 1
 部品画像 1
 部品画像 
 表解釈 
 AI出力
 カテゴリ 
 分類AI
 部品画像と表解釈結果から部品カテゴリ分類 
 例:
 管継手 !!!
 解像度を元に戻して画像分割 

  11. 12
 Confidential and Proprietary, A1A, Inc.
 AIサービスのアーキテクチャー
 LangChain Meetup Tokyo

    #6 
 3. (カテゴリ特化型) 部品解釈の仕組み
 3-1. 重要項目読み取り 
 3-2. 検索用TEXT生成
 部品画像 1
 部品画像 1
 部品画像 
 表解釈 
 AI出力
 分類AI
 出力
 CategoryA
 部品項目 
 読み取り AI
 部品画像 1
 部品画像 1
 部品画像 
 表解釈 
 AI出力
 分類AI
 出力
 Category A
 CAPTION
 生成 AI
 検索用の図面の特徴を 
 表現した文章 
 ※ 企業秘密!!
 項目読取 AI出力
 {
 “最大寸法”: “10.23”,
 “公差”: {
 “形状公差”: {“...”},
 “姿勢公差”: {“...”},
 “位置公差”: {“...”},
 },
 “その他プロパティ ...”: {}
 }
 図中の部品を読み取り、フィルター・検索で利用する項目と、 Vector Storeに格納するTEXTを生成する
 カテゴリ毎に分割し、カテゴリ単位で改善を容易にする。 Fine Tuningの取り回しのしやすさ も重視
 ※ カテゴリを分割せず Fine Tuningする場合、学習用データを更新する手間が大きい。またカテゴリを追加する際に、既存カテゴリの評価性能が劣化する可能性もある 

  12. 13
 Confidential and Proprietary, A1A, Inc.
 AIサービス 実装例 LangGraph
 LangChain

    Meetup Tokyo #6 
 Node実装例: 簡易Bolt 解析AI (※ コードは参考です )
 図面を解釈し任意の Schemaに従い出力 
 Node間でコードを (なるべく) 共有しない
 Node module内ですべて完結する 
 
 理由:
 LangGraphの選定理由は Robustで説明可能な AIシステムの構築をしたいから。 Node間でコード を共有することの生産性向上より、 
 Node間の依存性を減らすことで 
 個別に開発・改善できることを優先 
 ( ※ Schemaだけは共有してます )
 役割
 設計
 方針

  13. 14
 Confidential and Proprietary, A1A, Inc.
 AIサービス 実装例 LangGraph
 LangChain

    Meetup Tokyo #6 
 Graph実装例: 簡易図面解釈AI Workflow (※ コードは参考です )
 役割
 設計
 意図
 部品カテゴリ毎の Nodeを構築
 理由: カテゴリ毎のFine Tuningを想定
 
 評価フィードバックの実装 
 理由: 特に画像を用いた AI の解釈は
 誤りが多くなる傾向がある。 
 フィードバックループを入れて 
 分類・解釈の精度を高める 
 ※ 実際数%上がった。精度はお金で買う時代 
 カテゴリ分類と評価・フィードバック 

  14. 15
 Confidential and Proprietary, A1A, Inc.
 全体のふりかえり
 LangChain Meetup Tokyo

    #6 
 LangGraph (Python) を「結果の説明責任を果たすため Workflowで解析したい。Workflowを組みやすく Modelの変化にも追従 できるようなフレームワークを利用したい 」という意図で選び、満足な成果が得られた
 システム評価 
 定量: 部品の分類精度 97%, 項目読み取り精度 88% (※ 人間によるアノテーション精度は超えた )
 定性:「価格査定」というユースケースにおいて 非常に好評 
 Model進化への追従 
 結果の説明可能性 
 Node単位の評価・改善 
 Node毎にカプセル化しているため、評価・改善・テストが容易 
 Node毎に評価用データセットを pandasで構築 (数千件程度 ) し、リリース前に精度評価を行う運用に 
 Workflowで実装したため、結果に誤りがある際、原因の Nodeを突き止めることが容易 
 対策を立てて改善するプロセスを作りやすくなった ( LangSmith のおかげ )
 開発の各段階で都度 Modelを変更してきた ( claude-3.7 -> gemini-2.5-pro 等 ) 
 promptの修正のみで変更が完了し、 Modelの進化に容易に追従可能となった 

  15. 16
 Confidential and Proprietary, A1A, Inc.
 AIサービスの開発を始めて1年、得られた学びや反省 
 AIサービス開発で得られた学び
 LangChain

    Meetup Tokyo #6 
 精度付加価値曲線について -> Lean AI 開発論 : コードを書く前に機械学習プロジェクトを評価する方 法 https://note.com/takahiroanno/n/ncb7d77bfd9f1 精度をお金で買う 
 最初は評価・改善 (Self Reflection) ループを入れていなかった。けど、導入したら精度が数 %上がった
 実験的に、複数回試行して多数決的に判断するようにしてみた。それでも精度が上がった 
 お金は結構掛かるようになった。 精度はお金で買う時代 になったのかも
 複数の AI Agent を併用し成果を出す時代 
 AI Agent 設計も検証が進み、レジリエンシー (回復力) を持たせる手法も見つかってきた 
 そのため、単一の AI Agent がどの程度の精度付加価値曲線を持つか、より見極めが難しくなった 
 単一のAI Agentの精度を追求するよりも、 解析 × 検索 × 活用の AI Agent チェーン充実を優先 する。
 そのチェーンの ボトルネックを発見、改善することが、お客様の成果に繋がる 
 図面・見積書を探したくて探している人はいない。価格査定したくて探しているので、そこに向き合い 
 改善のサイクルを進めていく ( The Goal に習う )
 AI Agent 単体の精度 
 より、AI Agent
 全体のボトルネックを 
 発見・改善する