最近、AI系のプロジェクトをやってると、よく「Langなんとか」ってツール、いっぱい聞くよね。LangChain、LangGraph、LangFlow、それにLangSmith…。正直、名前が似すぎてて、どれが何だか分からん!ってなる気持ち、すごくわかる。
これって競合してるの? それとも全部使わなきゃダメなの?って。うん、最初は混乱するよね。まあ、落ち着いて。レゴブロックで何か作るのを想像してみて。これらは全部、同じレゴのエコシステムの一部みたいなもんで、それぞれ作る段階が違うだけなんだ。
この記事を読み終わる頃には、たぶん、自分のプロジェクトにどれを使えばいいか、スッキリすると思う。たぶんね。
そもそも、この「Langファミリー」って何?関係性をざっくりと
いきなり一つずつ見る前に、全体像を掴んだほうが分かりやすいかも。料理で例えるなら…そうだな。
- LangChain:これは「包丁」とか「まな板」とか「鍋」みたいな、基本的な調理器具セット。これがないと始まらない。コードで料理のレシピを組み立てるための土台。
- LangFlow:これは「レシピ動画」。料理の完成形や手順を、目で見て、ドラッグ&ドロップで試せる感じ。コード書く前に、アイデアをこねくり回すためのビジュアルツール。
- LangGraph:これは「複数のシェフがいる厨房」。一人がスープを作って、もう一人がメインディッシュを焼いて、お互いに「味見どう?」って確認し合うような、複雑な連携プレイをさせたい時のための仕組み。
- LangSmith:これは「レストランの支配人」兼「食品衛生管理者」。出来上がった料理(アプリ)がちゃんとお客さんに出せる品質か、コストはかかりすぎてないか、何か問題が起きてないか、監視・デバッグするためのツール。
ほら、こう考えると、喧嘩してるわけじゃないって分かるでしょ? それぞれ役割があるんだよね。
じゃあ、一つずつ見ていこうか
うん、ここからが本題。それぞれのツールが、具体的にどういう時に役立つのか。
LangChain:すべてはここから始まる「開発フレームワーク」
まず大元締め、LangChain。これが一番有名だし、基本になるやつ。
例えば、ただGPT-4に質問を投げるだけじゃなくて、もうちょっと凝ったチャットボットを作りたいとするじゃない?
- ユーザーの質問をまずGPT-4で処理して、
- その答えを、もっとクリエイティブな文章にしてくれるLlama 3に渡して、
- 必要ならWebで最新情報を検索してきて、
- しかも、前の会話をちゃんと覚えててくれる。
…これをゼロからコードで書こうとすると、マジで大変。各モデルのAPIを叩くコード、会話履歴の管理、次に何をすべきかのロジック…あっという間にコードがぐちゃぐちゃになる。
そこでLangChainが登場するわけ。これは、そういう面倒な部分を簡単にしてくれる「部品」がたくさん入った、オープンソースのフレームワークなんだ。主要な部品はこんな感じ。
- LLMサポート:GPT-4だろうが、オープンソースのLlama 3だろうが、モデルの種類を選ばない。プラグみたいに差し込むだけ。
- プロンプトテンプレート:質問文をコードに直書きするんじゃなくて、「{ここ}に単語を入れてね」みたいなテンプレートを作れる。使い回しが楽になる。
- チェーン (Chains):これがLangChainの心臓部。さっきの例で言うと、「ユーザーの質問 → GPT-4 → Llama 3 → 最終回答」みたいな一連の流れを、鎖(チェーン)のようにつなげることができる。
- エージェント (Agents):これが賢いとこ。LLMを「脳みそ」として使って、次に何をすべきか(Web検索する?計算する?)を自分で考えさせる仕組み。
要するに、LangChainは「開発」のためのツールキット。いろんな部品を組み合わせて、自分だけのAIアプリを作りたい時に使う、まさに土台だね。
LangGraph:複雑な連携プレイを実現する「サイクル構造」
LangChainのチェーンは、A→B→Cっていう一方通行の処理は得意。でも、もっと複雑なこと…例えば、AIエージェントのチームでお互いに議論させたり、ダメ出しさせたりしたい場合はどうする?
あるリサーチをさせたいとして、
- Webで調べる「リサーチャー」エージェント
- 情報を要約する「サマライザー」エージェント
- 最終的なレポートを書く「ライター」エージェント
を用意したとする。「ライター」が要約を読んで、「うーん、このデータちょっと古いな。リサーチャー、もう一回、最新の統計を探してきて」みたいに、前の工程に作業を差し戻したい時。こういうの、単純なチェーンじゃ無理なんだよね。
そこで出てくるのがLangGraph。これはLangChainを拡張して、こういう「サイクル」を含む複雑なフロー、つまり「グラフ構造」を作れるようにしたライブラリ。AIチームのプロジェクトマネージャーみたいな存在かな。
「ノード」(各エージェントやツール)と「エッジ」(ノード間の繋がり)で処理の流れを定義するんだけど、大事なのは、このエッジがループ、つまり前のノードに戻ることを許してる点。これで、エージェント同士が「会話」しながら、一つの問題を解決できるようになる。
だから、複数のエージェントが協調して、行ったり来たりしながら答えを見つけるような、そんなアプリを作りたいならLangGraphの出番ってわけ。
LangFlow:コードを書かずに試す「ビジュアル実験室」
「AIで面白いアイデアがあるんだけど、コードは書けないんだよな…」とか、「開発者だけど、まずアイデアが動くかサクッと試したい」とか。そういう時に最高なのがLangFlow。
これは、LangChainの機能を、ブラウザ上でドラッグ&ドロップで使えるようにしたツール。まさに、フローチャートを作る感覚でAIの処理フローを組めるんだ。
画面上にモデルとかプロンプトとかの部品をポイポイ置いて、線で繋いでいくだけ。プロトタイプを作るのに、もう何時間もかける必要はない。数分で動くものができる。…まあ、慣れればだけど。
これは、最終的な製品を作るためっていうよりは、アイデアを爆速で検証するための「実験室」とか「スケッチブック」みたいな位置づけかな。非エンジニアの人がAIアプリのロジックを考えるのにも使えるし、エンジニアが面倒な初期設定をすっ飛ばして本質的な部分をテストするのにも使える。すごく便利。
LangSmith:アプリの健康を守る「監視・デバッグツール」
よし、LangChain(やLangGraph)で最高のアプリができた!いざ公開!…でも、ちょっと待って。
- そのアプリ、本当にちゃんと動いてる?
- APIのコスト、つまりトークン使用量はどれくらい?
- どこかで変なエラーが起きてない?
- もしバグったら、どうやって原因見つける?
こういう、アプリを「作った後」の問題を全部引き受けてくれるのがLangSmith。これは、アプリの構築とは全く関係ない。
LangSmithは、LLMアプリを「デバッグ、テスト、評価、監視」するためのプラットフォーム。アプリのお医者さんであり、監視塔でもある感じ。
具体的には、ユーザーからのリクエストに対して、アプリ内部でどんな処理(どのプロンプト、どのLLMコール、どのツール使用)が行われたかを、全部追跡して見せてくれる。だから、何か変な答えが返ってきた時も、どこで間違ったのか一目瞭然。
それに、コストや応答速度、エラー率なんかの「健康状態」をダッシュボードで監視できる。これがないと、正直、本番運用は怖いよね。
ちなみに、LangChainと連携するのはもちろんだけど、別にLangChain製じゃなくても使える。どんなLLMアプリでも監視できる、独立したツールなんだ。ここ、結構大事なポイント。
公式ブログとか見ると、アメリカとかではもう当たり前に使われてる感じだけど、日本の技術ブログ、例えばZennとかを見てると、まだLangChainでどう作るかって話が多いかな。でも、これから本番アプリが増えてくると、LangSmithの重要性は絶対もっと語られるようになると思う。個人的にはね。
で、結局どれを使えばいいの?【個人的な使い分け】
まあ、ここまで話してきたけど、結局どう使い分けるの?ってところを、僕なりの言葉でまとめてみた。公式ドキュメントとは、ちょっと違うニュアンスかもしれないけど。
| ツール名 | これは何?(一言で言うと) | どういう人が使う? | いつ使う? |
|---|---|---|---|
| LangChain | AIアプリを作るための「コードの骨格」。 | コードを書くのが苦じゃない人。というか、むしろ自分でゴリゴリ書きたい人向けだよね。 | アイデアが固まって、「よし、作るぞ!」ってなった時。すべての基本。 |
| LangFlow | アイデアを試すための「ビジュアルな遊び場」。 | 非エンジニアの人、企画担当者、あと「コード書く前に全体像を見たい」エンジニア。 | 「こんなの作れるかな?」って、アイデアをこねくり回してる段階。MVP作成に最適。 |
| LangGraph | AI同士を「議論」させるための「拡張パーツ」。 | LangChainに慣れてて、もっと複雑なエージェントの連携をさせたい人。 | 単純なA→B→Cじゃなくて、処理が行ったり来たりするループが必要になった時。 |
| LangSmith | 完成したアプリの「健康診断ツール」。 | 作ったAIアプリを、ちゃんと世に出して運用したいすべての人。マジで。 | プロトタイプじゃなくて、本番用のアプリとしてデプロイした後。運用・保守の段階。 |
まとめというか、旅の進め方
ね、こうして見ると、競合してないのがよく分かるでしょ。むしろ、すごく綺麗な連携プレイができるようになってる。
一つのよくある開発の旅路としては、こんな感じかな。
- まずLangFlowでアイデアをスケッチして、動くか試してみる。
- いけそうだとなったら、LangChainを使って、ちゃんとコードで実装する。(もし複雑な連携が必要ならLangGraphも使う)
- そして、完成したアプリをLangSmithで監視しながら、世に出す。
完璧な流れじゃない?
AIで何かを作るのって、本当にクリエイティブで面白い作業だと思う。こういうツールは、そのプロセスをちょっとだけ簡単にして、もっと楽しくしてくれるためのもの。だから、あまり難しく考えすぎずに、まずは一番とっつきやすそうなところから触ってみるのがいいんじゃないかな。
あなたは何を一番使ってみたい?もしくは、もう何か作ってる?もしよかったら教えてよ。
