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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for morioka shuhei morioka shuhei
July 02, 2025
1.2k

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

Avatar for morioka shuhei

morioka shuhei

July 02, 2025

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
 全体のボトルネックを 
 発見・改善する