もう迷わない！LLM開発のLangツール完全ガイド

### はじめに
LLM界隈には、**Lang～**がいっぱいあって紛らわしい！！　なので、まとめます！:muscle:

まとめる用語は以下です。

* **LangChain**
* **LangGraph**
* **LangSmith**
* **Langfuse**
* **Langflow**

それでは　見ていきましょう！

---

### LangChainとは？

端的に言うと　**LangChain は LLM のフレームワークです。**

もう少し細かく言うと　LangChainは、LLM（大規模言語モデル）を活用したアプリ開発を支援するフレームワークです。このフレームワークは、開発から運用、デプロイまでの全プロセスを簡略化します。

https://python.langchain.com/docs/introduction/

主な機能
* **開発（Development）**
LangChainのオープンソースコンポーネントや外部サービスを活用してアプリを構築。
LangGraph を使えば、状態を管理できるエージェントを作成可能。
* **運用（Productionization）**
LangSmith を利用すると、アプリを監視・評価でき、最適化と継続的な運用が可能。
* **デプロイ（Deployment）**
LangGraph Platform を使えば、作成したアプリを本番環境のAPIやアシスタントとして公開可能。

つまり、いくつものモデルプロバイダー（OpenAI、Anthropic、など）のモデルも定型の使い方で利用できるようにしてくれる便利なやつです。

例）OpenAIの場合
```python
import getpass
import os

if not os.environ.get("OPENAI_API_KEY"):
  os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter API key for OpenAI: ")

from langchain.chat_models import init_chat_model

model = init_chat_model("gpt-4o-mini", model_provider="openai")

model.invoke("Hello, world!")
```

例）Anthropicの場合
```python
import getpass
import os

if not os.environ.get("ANTHROPIC_API_KEY"):
  os.environ["ANTHROPIC_API_KEY"] = getpass.getpass("Enter API key for Anthropic: ")

from langchain.chat_models import init_chat_model

model = init_chat_model("claude-3-5-sonnet-latest", model_provider="anthropic")

model.invoke("Hello, world!")
```

`from langchain.chat_models import init_chat_model`
`model = init_chat_model(～)`
で LangChain の chat_models モジュールを使えば同じやり方で様々なLLMが利用できます。

#### LangChain のユースケース例
質問応答AIの構築：企業のFAQ対応を自動化するために、LangChainを活用して社内データベースを検索するチャットボット。
* ユーザーが質問すると、関連する社内ドキュメントを検索し、適切な回答を提供。
* OpenAIやAnthropicのモデルを切り替えながら、最適なレスポンスを生成。

---

### LangGraphとは？

端的に言うと　**LangGraph は LLM をワークフローで管理するフレームワークです。**

もう少し細かく言うと　LangGraphは、LLM（大規模言語モデル）を活用した複雑なワークフローシステムを開発するためのフレームワークです。LangChainの一部として提供されており、グラフ構造を用いて処理フローをモデル化し、複雑なタスクの自動化や状態管理を支援します。

https://langchain-ai.github.io/langgraph/concepts/why-langgraph/

特徴
* **信頼性と制御性**
エージェントの動作を管理・調整しながら運用可能。
人間の承認（Human-in-the-loop）を組み込めるため、重要な意思決定をより確実に。
長時間稼働するワークフローのコンテキストを維持し、エージェントが適切な流れを保つ。
* **低レベルで拡張性が高い**
カスタムエージェントを柔軟に設計できる。
既存の枠組みに縛られることなく、詳細なロジックを設定可能。
マルチエージェントシステムをスケールさせ、各エージェントに特定の役割を持たせることができる。
* **高品質なストリーミング対応**
トークン単位でのストリーミングに対応し、リアルタイムでエージェントの推論プロセスを確認可能。
途中経過をリアルタイムで表示できるため、エージェントの動作が透明化される。

つまり、LangChainよりも複雑なタスクを処理できるやつです。

#### LangGraph のユースケース例
カスタマーサポートの自動化：LangGraphを使って、マルチエージェントのカスタマー対応システムを構築。
* 1つ目のエージェントが質問の意図を分類。
* 2つ目のエージェントがFAQを検索し、適切な回答を提供。
* 必要に応じて、3つ目のエージェントが人間のオペレーターへ引き継ぎ。

### LangChain と LangGraph の違いは？
どちらもLLM（大規模言語モデル）を活用したアプリ開発を支援するフレームワークですが、目的や構造に違いがあります。

|  | LangChain | LangGraph |
|:-|:-|:-|
| 目的 | LLMアプリ開発 | LLMアプリのワークフロー管理 |
| 構造 | チェーン型（直線的な処理フロー） | グラフ型（複雑な状態管理と分岐処理） |
| 状態管理 | 基本的にステートレス（メモリ機能で履歴を保持） | ステートフル（長時間のワークフローを維持） |
| 処理の流れ | 一方向の処理（DAG: 有向非巡回グラフ） | 条件分岐やループを含む動的な処理 |
| 適用例 | チャットボット、質問応答、データ検索（RAG） | マルチエージェントシステム、複雑な対話フロー |

* **LangChain** は単純なLLMアプリ向き。
* **LangGraph** はワークフローなど複雑なLLMアプリ向き。

---

### LangSmithとは？

端的に言うと　**LangSmith は LLM を活用したアプリの監視・評価を行うツールです。**

もう少し細かく言うと　LangSmithは、LLMアプリを監視・評価するためのツール群です。アプリを詳細に監視・評価できるため、迅速かつ安心してサービスを提供します。

https://docs.smith.langchain.com/

主な機能
* **可視化（Observability）**
LLMは予測不能な結果を出すことがあるため、デバッグが難しいですが、LangSmithを使えばアプリのトレースを分析し、リアルタイムでの監視や重要な指標（RPS、エラー率、コストなど）をダッシュボードで可視化できます。
* **評価（Evals）**
AIアプリの品質と開発スピードは、評価データの質と測定方法に依存します。 LangSmithのSDKとUIを活用すれば、アプリのパフォーマンスをスコア化し、人間のフィードバックを収集して改善できます。
* **プロンプト設計（Prompt Engineering）**
従来のソフトウェアはコードで開発されますが、LLMアプリでは適切なプロンプト設計が重要です。 LangSmithは、プロンプトのバージョン管理・改善ツールを提供し、より最適なプロンプトを見つけるのをサポートします。

#### LangSmith のユースケース例
AIチャットボットの改善：企業がLLMを導入する際に、LangSmithを活用してユーザーの満足度を評価。
* ユーザーの会話履歴をトレースし、誤った応答や不自然な会話を発見。
* A/Bテストを活用して異なるプロンプト設計を比較。
* 効果の高いプロンプトを選定し、継続的な改善を行う。

---

### Langfuseとは？

端的に言うと　**Langfuse は LLM アプリケーションの開発・運用を支援するツールです。**

もう少し細かく言うと　Langfuseは、大規模言語モデル（LLM）を活用したアプリケーションの開発・運用を支援するオープンソースのLLMOpsプラットフォームです。開発者がLLMアプリのトレースやメトリクスを取得・可視化できるほか、評価、プロンプト管理、データセット作成などの機能も提供しています。

https://langfuse.com/jp

主な機能

* **モニタリング**
API呼び出しやプロンプトのトレース、リアルタイムメトリクスの監視、ユーザーフィードバックの収集により、アプリのパフォーマンス向上をサポート。
* **アナリティクス**
LLMの評価やA/Bテストを行い、最適なモデルやプロンプトの選定を支援。ユーザーフィードバックをもとに操作の傾向を分析。
* **デバッグ**
アプリの活動ログを詳細に記録し、エラー検出・追跡を行い、問題を迅速に解決。
* **統合**
LangChainやAWS BedrockなどのLLMフレームワークと連携し、DifyやLangflowのようなノーコードツールとも統合可能。APIを利用してカスタムワークフローを構築。

#### Langfuse のユースケース例
LLMの運用監視：Langfuseを活用して、LLMアプリのパフォーマンスを最適化。
* LLMの応答時間やエラー率をリアルタイムで監視。
* コスト削減のために、最適なモデル選定を支援。
* ユーザーからのフィードバックを収集し、継続的にモデルを改善。

### LangSmith と Langfuse の違いは？

どちらもLLM（大規模言語モデル）アプリの監視・評価を行うツールですが、いくつかの違いがあります。

|  | LangSmith | Langfuse |
|:-|:-|:-|
| 位置付け | LangChain公式ツール | OSS |
| ホスティング | クラウドのみ（Enterpriseプランでセルフホスト可） | セルフホスト可能 |
| 価格 | 高性能だが価格は高め | 比較的安価 |
| トレース機能 | LLMのトレースに加え、LangChainオブジェクトのトレースも可能 | LLMのトレースと評価が可能 |
| 共同開発 | 有料プランで共同開発が可能 | 無料プランで複数人利用可 |
| 保存期間 | 14日または400日から選択可能 | プランによって異なる |

* **LangSmith** は LangChain の公式ツールで高性能。
* **Langfuse** はOSSのツールで低コスト。

---

### Langflowとは？

端的に言うと　**Langflow はLLMアプリをGUIで構築できるフレームワークです。**

もう少し細かく言うと　Langflowは、マルチエージェントやRAG（Retrieval-Augmented Generation）アプリを視覚的に構築できる新しいフレームワークです。オープンソースで提供され、Pythonベースでカスタマイズが可能。

https://docs.langflow.org/

#### Langflow のユースケース例
AIワークフローのプロトタイピング
* 開発者がAIアプリの設計を視覚的に試作し、迅速にアイデアを検証。
* ドラッグ＆ドロップでLLMの構成要素を組み合わせ。
* API化して、他のシステムと連携。

### まとめ

* **LangChain** は、LLMを活用したアプリ開発を支援するフレームワークです。このフレームワークは、開発から運用、デプロイまでの全プロセスを簡略化します。
　
* **LangGraph** は、LLMを活用した複雑なワークフローシステムを開発するためのフレームワークです。LangChainの一部として提供されており、グラフ構造を用いて処理フローをモデル化し、複雑なタスクの自動化や状態管理を支援します。
　
* **LangChain** と **LangGraph** はどちらもLLMアプリのフレームワークです。
**LangChain** は単純なLLMアプリ向き。**LangGraph** はワークフローなど複雑なLLMアプリ向き。
　
* **LangSmith** は、LLMアプリを監視・評価するためのツール群です。アプリを詳細に監視・評価できるため、迅速かつ安心してサービスを提供します。
　
* **Langfuse** は、LLMアプリの開発・運用を支援するオープンソースのLLMOpsプラットフォームです。開発者がLLMアプリのトレースやメトリクスを取得・可視化できるほか、評価、プロンプト管理、データセット作成などの機能も提供しています。
　
* **LangSmith** と **Langfuse** はどちらもアプリの監視・評価を行うツールです。
**LangSmith** は LangChain の公式ツールで高性能。**Langfuse** はOSSのツールで低コスト。
　
* **Langflow** は、マルチエージェントやRAG（Retrieval-Augmented Generation）アプリを視覚的に構築できるフレームワークです。オープンソースで提供され、Pythonベースでカスタマイズが可能です。