1. LangChain:LLMアプリケーション構築のためのツールキット [0]

LangChainは、大規模言語モデル(LLM)を活用したアプリケーション、特にRAG(Retrieval-Augmented Generation)チャットボットのような直線的なワークフローを簡単に構築するためのフレームワークである。

1.1. LLMの基本と課題 [3]

  1. LLMの一般的な能力 [3]
    1. GPTやClaudeなどのLLMは、大量のインターネットデータで学習しているため、一般的な質問には回答できる。
  2. LLMの限界とRAGの必要性 [6]
    1. LLMは、Surma E-commerceのような特定の企業のプライベートな組織データにはアクセスできないため、「Tシャツの返金ポリシーは何か?」といった質問には回答できない。
    2. この問題を解決するために、RAG(Retrieval-Augmented Generation)チャットボットを構築する。
    3. RAGチャットボットは、ポリシー文書などのプライベートデータをLLMに提供することで、その文書から回答を検索して生成できる。
  3. RAGチャットボットの構築ステップ [9]
    1. まず、文書を検索し、LLMのコンテキストウィンドウに対応するために文書をチャンクに分割する。
    2. その後、セマンティック検索のためにそれらをベクトルデータベースに保存する。
    3. 最終的に、保存された情報から関連データを検索し、LLMを呼び出して回答を生成する。

1.2. LangChainによるLLMアプリケーションの簡素化 [11]

  1. LangChainの役割 [11]
    1. LangChainは、PythonでこれらのRAGチャットボット構築プロセス全体を容易にするフレームワークである。
    2. テキストローダーなどの既製のクラスを提供することで、開発者がLLMベースのアプリケーションを簡単に構築できるようにする。
  2. ワークフローとエージェント [14]
    1. LLMを活用したアプリケーションは、Anthropicのガイドによると「ワークフロー」と「エージェント」の2つのグループに分類される。
    2. ワークフローは、LLMがコンポーネントの一つであり、残りの部分は通常のソフトウェアと同様に事前に定義されたパスで接続されているソフトウェアである。
  3. LangChainが扱うワークフローの特性 [17]
    1. ワークフローでは、データロード、前処理、LLMによる情報抽出や要約、そして追加のステップやLLM呼び出しといった一連の処理が線形的に行われる。
    2. この種のアプリケーションは「チェーン」と呼ばれ、LangChainは主にこのような直線的なチェーンの構築を容易にする。
    3. LLMは自律的な意思決定を行わず、テキストからの情報抽出や要約といった事前に定義されたタスクを実行する。

2. LangGraph:複雑なエージェント構築のためのグラフベースフレームワーク [28]

LangGraphは、複雑なタスクを複数のサブタスクに分割し、自律的な意思決定と反復的なアプローチで目標を達成するエージェントを構築するための、グラフベースのステートフルなワークフローフレームワークである。

2.1. 複雑なチャットボットとエージェントの必要性 [28]

  1. 複雑なチャットボットの例 [28]
    1. 「Tシャツを別の商品と交換したい」といった顧客の要求は、一度の回答で完結せず、注文IDの確認、交換商品のSKU提供など、複数回のやり取り(マルチターンアプローチ)が必要となる。
  2. 複雑なタスクのステップ [34]
    1. このような複雑なタスクには、返金ポリシーの確認、データベースでの注文詳細確認、新商品の在庫確認、新商品の注文、旧商品の配送ラベル印刷など、複数のステップが含まれる。
  3. 各ステップでのツール利用 [38]
    1. 各ステップでは、ポリシー文書へのアクセス、データベースへの問い合わせ、マイクロサービスやAPIの呼び出し、他のソフトウェアの使用など、さまざまなツールが利用される。
    2. LLMは、これらのステップのすべてまたは一部に関与し、文書、データベース、APIなどのツールと連携してタスクを実行する。
  4. エージェントの目標指向計画と自律性 [42]
    1. 顧客の返品交換要求のような目標指向の計画では、まずすべてのステップを特定し、多段階の推論と計画を実行し、それらのステップを順次実行する。
    2. このような複雑なタスクを処理するチャットボットは「エージェントチャットボット」と呼ばれ、タスクを複数のサブタスクに分割し、一つずつ実行する。
    3. エージェントチャットボットは、人間がコードを書いてエラーを修正し、再度実行するのと同様に、自律性を持って多段階の反復アプローチで目標を達成する。
  5. 失敗とリトライのメカニズム [46]
    1. 例えば、新商品の在庫確認ステップが失敗した場合、エージェントは異なるAPIにアクセスしたり、別のツールを使用したりしてリトライする。
    2. エージェントチャットボットは、失敗したステップをリトライし、フィードバックループを通じてエラーを修正する機能を持つ。
  6. ツールとしての知識 [51]
    1. PDF、データベース、APIなどの知識源は、エージェントがタスクを実行するために利用する「ツール」と呼ばれる。

2.2. LangGraphのグラフベース構造と特徴 [66]

  1. グラフベースのステートフルワークフロー [66]
    1. エージェントアプリケーションを構築するための一般的な設計の一つは、グラフベースのステートフルワークフローである。
    2. これは、LLMが次のステップを自律的に決定する条件付きロジックを持つことを意味する。
    3. 例えば、LLMはステップAまたはステップBを実行するか、別のLLMを呼び出すかを決定できる。
    4. このようなワークフローは、グラフとして表現されるステートフルなワークフローであり、LangGraphはこれをオーケストレーションするためのフレームワークである。
  2. LangGraphのコード例 [74]
    1. LangGraphでは、ツール(例:株価を取得するPythonツール)を定義し、グラフとしてワークフローを設計する。
    2. グラフは、チャットボットが開始し、株価取得関数などのツールを呼び出す一連のステップで構成される。
    3. 例えば、「Amazon株を20株買いたい」という要求に対し、LangGraphは株価取得関数を複数回呼び出し、合計金額を計算する。
  3. LangChainとLangGraphの比較 [83]
    1. LangChainは、チェーン、ツール、エージェントを含むLLMアプリを構築するためのツールキットであり、主に単純な線形ワークフローに使用される。
      • スタイルは線形でリアクティブ(入力に対して出力を返す)。
      • 主なユースケースは、シンプルなチャットボットやRAGである。
      • 部分的にステートフルである。
    2. LangGraphは、主にエージェントのために使用されるフレームワークであり、複雑なエージェントの構築に適している。
      • グラフベースの構造を持ち、ループ、リトライ、エラー修正機能をサポートする。
      • メモリベースのユースケースも持つ。
      • 主なユースケースは、多段階ワークフローと複雑なエージェントである。
      • グラフ内に状態を持つ。

3. LangSmith:LLMアプリケーションのデバッグ、監視、評価プラットフォーム [95]

LangSmithは、LangChainやLangGraphで構築されたLLMアプリケーションのデバッグ、監視、評価を行うためのオブザーバビリティプラットフォームである。

3.1. LangSmithの機能と重要性 [95]

  1. LangSmithの役割 [95]
    1. LangSmithは、LangChainやLangGraphで構築されたアプリケーションのエコシステムにおいて、デバッグ、プレイグラウンドプロンプト管理、監視の役割を担う。
  2. 本番環境での監視 [97]
    1. LangChainシステムを本番環境にデプロイした場合、LangSmithはアプリケーションのパフォーマンス、トークンコスト(例:数百万ドルのコストを費やしていないか)、失敗、評価などを監視するために使用される。
  3. 詳細なトレーシングとメトリクス [101]
    1. LangSmithのUIでは、個々の呼び出し(例:ベクトルデータベースへの呼び出し、ChatGPTへの呼び出し)の詳細を確認できる。
    2. 入力、出力、使用されたトークン数(例:390トークン)、レイテンシなどのメトリクスを監視できる。
    3. これは単なるトレーシングだけでなく、より多くの機能を提供する。