Share
Embed
LangChain Meetup Tokyo UPCYCLEにおけるLangChain 活用事例
morioka shuhei
July 02, 2025
Transcript
17 slides
-
2 Confidential and Proprietary, A1A, Inc. 自己紹介 LangChain Meetup Tokyo
#6 名前 森岡周平 所属 / 仕事 2022年にバックエンド・インフラ担当のエンジニアとして A1Aに入社 去年からAI サービスの企画・開発と、チームメンバーの AI活用支援に従事 今日話すこと・ゴール AIをサービスに取り入れたいソフトウェアエンジニア の人に 弊社が開発した LangChain を利用したサービスの事例をご紹介 「自分たちも作れそう!」 という気持ちになっていただければ幸いです! -
3 Confidential and Proprietary, A1A, Inc. 01 UPCYCLEとは 02 UPCYCLEを支えるAIサービス
03 AIサービスのアーキテクチャー 04 AIサービスの実装例 05 全体のふりかえりと今後の予定 Agenda -
4 Confidential and Proprietary, A1A, Inc. UPCYCLEとは LangChain Meetup Tokyo
#6 製造業の「調達担当者」の方向けの査定支援サービス 1. フロントローディング 過去の類似事例からの相場感把握 3. 価格査定 見積書データの構造化と比較・分析 ※ 画像は ImageGen4にて作成しました 2. 査定データの収集 見積書・図面の自動収集 -
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で実装 -
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 ) -
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 -
8 Confidential and Proprietary, A1A, Inc. AIサービスのアーキテクチャー LangChain Meetup Tokyo
#6 図面解析AIの設計における要求・制約 フレームワーク 結果の説明責任 説明 複数LLMの活用 解析結果の説明責任と、解析の再現性 が求められる。解析と用途が限られており状態は限定的 。 よって、処理を制御しやすく、可観測性に優れた Workflow で開発したい 前処理 画像認識の前処理に Pythonのライブラリを利用しているので、言語は Python を選びたい Pythonで任意のLLMに依存せず、Workflow (Agentも) が書けるフレームワーク = LangChain !! ※ 当時は1人で開発していたが、後々多くの人が関わる。学習のレールが整っていることも重視 AIの成長は日進月歩。今強いモデルが将来も強いとは限らず、モデル毎に強みがある 任意のモデルにロックインされず、複数モデルを併用しつつ、適切に置き換えていきたい -
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 (経路) -
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で図面中の表を識別 (赤い枠線) -
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 部品画像と表解釈結果から部品カテゴリ分類 例: 管継手 !!! 解像度を元に戻して画像分割 -
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する場合、学習用データを更新する手間が大きい。またカテゴリを追加する際に、既存カテゴリの評価性能が劣化する可能性もある -
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だけは共有してます ) 役割 設計 方針 -
14 Confidential and Proprietary, A1A, Inc. AIサービス 実装例 LangGraph LangChain
Meetup Tokyo #6 Graph実装例: 簡易図面解釈AI Workflow (※ コードは参考です ) 役割 設計 意図 部品カテゴリ毎の Nodeを構築 理由: カテゴリ毎のFine Tuningを想定 評価フィードバックの実装 理由: 特に画像を用いた AI の解釈は 誤りが多くなる傾向がある。 フィードバックループを入れて 分類・解釈の精度を高める ※ 実際数%上がった。精度はお金で買う時代 カテゴリ分類と評価・フィードバック -
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の進化に容易に追従可能となった -
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 全体のボトルネックを 発見・改善する