見出し画像

LLMアプリケーション開発フレームワーク:LangChainとLangGraph

はじめに

LangChainとLangGraphは、どちらも開発者がLLMや最近だとSLMを使用してアプリケーションを構築するのを支援するために設計されたオープンソースフレームワークです。

LangChainの概要

LangChainは、一連の機能を連鎖的(チェーン状)に実行することでLLMを活用したアプリケーションを構築する方法です。処理は順番(シーケンシャル)に行われ、一方通行の道路のようなイメージで進みます。

基本概念:Chain(チェーン)の理解

例えば、以下のような流れでアプリケーションを構築します:

  1. データの取得(Retrieve)

  2. データの解釈(Summarize)

  3. ユーザー質問への回答(Answer)

※「解釈」という用語について:
Summarizeの訳として「解釈」を採用しているのは、単純な文章の短縮化ではなく、「意味理解」と「本質的な情報の抽出」を行っているためです。

LangChainワークフロー詳細

LangChainワークフロー詳細

データ取得コンポーネント(Retrieve Component):

  • ドキュメントローダー(Document loader)
    データソースからのコンテンツ取得・取込

  • テキストスプリッター(Text splitter)
    テキストの意味のある塊(チャンク)への分割

解釈コンポーネント(Summarize Component):

  • チェーン(Chain):解釈プロセスの制御

  • プロンプト準備(Prompt Preparation):LLMへの指示準備

  • LLM対話(LLM/SLM Interaction):モデルとの対話実行

回答コンポーネント(Answer Component):

  • チェーン(Chain):回答生成プロセスの制御

  • メモリー(Memory):会話履歴とコンテキストの参照・保存

  • プロンプト準備(Prompt Preparation):回答生成の指示準備

  • LLM対話(LLM/SLM Interaction):モデルとの対話実行(異なるモデルの選択も可能)

LangChainのAgent

LangChainには「Agent」という概念があり、これは:

  • 定義されたツール群から適切なものを選択して使用

  • タスクの実行計画を立てる

  • 一連の処理フローの中で判断を行う

  • 基本的には状態を保持しない(必要に応じてメモリコンポーネントを使用)

LangGraphの概要

LangGraphは、LangChainの拡張として開発された個別のライブラリです。独立した役割を持つ複数のAIプロセス(エージェント)が共有状態を通じて協調しながら、状況に応じて柔軟に対応できるシステムを構築するために設計されています。

主な特徴

ステートフル(状態保持)機能:

  • システム全体で状態を維持

  • 会話履歴の保持

  • タスク進捗の追跡

  • ユーザーの選択履歴の記憶

マルチエージェントシステム:

  • 複数の独立したAIプロセスが協調

  • それぞれが特定の役割を持つ

  • 共有状態を通じて情報交換

  • 動的な処理の振り分け

非線形ワークフロー:

  • 状況に応じた柔軟な処理の選択

  • 必要に応じた前段階への戻り

  • 並行処理の実行

LangGraphの構成要素

ノード(Node):

  • 各処理単位(エージェント)を表現

  • 独立した機能を持つ

  • 例:入力処理、タスク追加、タスク完了、状態確認など

エッジ(Edge):

  • ノード間の接続

  • データや制御の流れを定義

  • 処理の方向性を示す

状態管理(State):

  • システム全体の状態保持

  • エージェント間の情報共有

  • コンテキストの維持

LangChainとLangGraphの比較

目的:

  • LangChain:LLM操作のチェーン化による抽象化

  • LangGraph:複雑な協調動作を行うマルチエージェントシステムの実現

構造:

  • LangChain: DAG(Directed Acyclic Graph)による一方向の処理

DAGワークフロー
  • LangGraph:状態を共有する双方向の処理が可能なグラフ構造

状態管理付きワークフロー

状態管理:

  • LangChain:限定的(メモリコンポーネントによる管理)

  • LangGraph:システム全体での robust な状態管理

ユースケース:

  • LangChain:

    • 文書要約システム

    • 単純な質問応答

    • データ変換パイプライン

  • LangGraph:

    • タスク管理アシスタント

    • 複雑な対話システム

    • プロジェクト管理システム

まとめ

LangChainの選択が適切な場合:

  • 処理フローが明確で順序立っている

  • シンプルな入力から出力までの変換

  • 状態管理の必要性が低い

LangGraphの選択が適切な場合:

  • 複雑な対話や状態管理が必要

  • 状況に応じた柔軟な処理が求められる

  • 複数のAIプロセスの協調動作が必要

実装の観点:

  • LangChain:シンプルな実装で開始可能

  • LangGraph:より複雑だが高い柔軟性を実現

理想的には、プロジェクトの要件に応じて両者を適切に組み合わせることで、効率的で柔軟なシステムを構築することができます。

#LangChain #LangGraph #LLM #SLM #AIフレームワーク #マルチエージェント #ステートマネジメント #AI開発 #AIアプリ開発 #LLMアプリ #LLMApps

いいなと思ったら応援しよう!