Shikata Ga Nai

Private? There is no such things.

第69回:LangSmithでLLMの結果をロギング・分析

Hello there, ('ω')ノ

🧠 はじめに:LangSmithとは?

LangChainでAIアプリを作ったとき、
こんな悩みありませんか?

  • 🤔「LLMが何を入力されて、何を返したのか追えない…」
  • 🐞「出力がおかしいけど、どのプロンプトが原因か分からない…」
  • 📊「どのチェーンがボトルネック?推論時間は?」

これをまるっと解決してくれるのが
🧪 LangSmith(ラングスミス) です。

LangSmithは、
LangChain開発元が提供する「LLMアプリの観察・デバッグ・改善のための分析ツール」。
まさにLLM開発のGoogleアナリティクスのような存在です!


🔧 1. LangSmithでできること一覧


機能カテゴリ 概要
🔍 ロギング LLMへの入力・出力・実行時間を詳細に記録
🐞 デバッグ プロンプトごとの挙動やエラーをトレースしやすくする
📊 パフォーマンス分析 実行時間、トークン数、ステップ数などのパフォーマンスメトリクスを可視化
🧪 テスト管理 チェーンごとのテストケースを登録・実行・差分比較が可能
👥 チーム開発 複数人でアプリの改善・バージョン管理ができる(プロジェクト単位)

🌐 2. LangSmithの構成と仕組み


💡 LangSmithが監視する対象

[ ユーザー入力 ]
 ↓
[ プロンプトテンプレート ]
 ↓
[ LLM応答(OpenAIなど) ]
 ↓
[ チェーン処理 / ツール呼び出し ]
 ↓
[ 最終出力 ]

これらすべての中間ステップを記録・可視化できます。
しかも、LangChainのコードにわずか数行追加するだけでOK!


⚙️ 3. セットアップ方法(無料プランあり)


✅ サインアップ

LangSmith公式サイト(https://smith.langchain.com)から無料登録。


✅ APIキー取得

アカウント作成後、「Settings」>「API Keys」でキーを発行。


✅ Pythonで環境変数を設定

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=sk-xxxxxxx
export LANGCHAIN_PROJECT="my-ai-app"

.env ファイルで管理してもOK!


🛠️ 4. LangChainコードへの組み込み(例)


from langchain.chat_models import ChatOpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate

llm = ChatOpenAI(model_name="gpt-3.5-turbo")

prompt = PromptTemplate.from_template("おすすめの観光地を3つ教えてください({season})")
chain = LLMChain(llm=llm, prompt=prompt)

result = chain.run({"season": "春"})
print(result)

✅ 上記コードを実行すると、LangSmithのダッシュボードに自動で記録される!


📊 5. LangSmithで見える情報(UIスクリーンショットの内容)


画面 見られること
✅ トレース詳細画面 実行されたチェーン、LLMへのプロンプト、応答、Toolの使用、トークン数など
✅ プロンプト比較ツール プロンプトの改善前/改善後の応答を並べて比較(A/Bテストに最適)
✅ ステップ分析/エラー分析 どの処理で時間がかかったか、エラーはどこで発生したかを可視化
✅ テストケース管理(テストセット) 「この入力に対して期待される出力はこれ」と指定して、チェーン改善の効果を数値で確認可能

📦 6. 実務での活用シーン


シーン LangSmithの効果
✅ 社内QAボット開発 不自然な応答や意図と違う出力をトレース&プロンプト修正に役立つ
✅ プロンプトエンジニアリング 出力の差異を「可視化」しながら効果測定できる
✅ エージェント構築 ツール使用順やループの動作を可視化 → デバッグしやすい
✅ チーム開発 誰が・どこを・どう改善したかを共有しやすい(プロジェクト単位で記録される)

🧠 7. LangSmith活用Tips


TIPS 説明
🔁 プロンプト改善は差分比較で テストケースを固定して比較すれば、改善効果を客観的に把握可能
🧪 “再現性のある入力”を残す chain.invoke() で明示的に入力を記録可能
📂 プロジェクトごとに分ける アプリやユースケースごとにプロジェクトを作ると管理しやすい
🔒 個人情報は記録しないよう注意! ログにはユーザー入力も含まれるため、PII(個人情報)の取り扱いに注意!

🎁 まとめ:LangSmithで「LLMのブラックボックス」を開く!

✅ LangSmithは、LLMアプリの中身を“観察・分析・改善”するための専用ツール。
✅ LangChainと自然に統合でき、開発者にとって手間なく効果を得られるのが魅力。
✅ テスト、A/B比較、実行時間の可視化まで対応しており、
 LLMを業務アプリとして本格運用するには欠かせない存在です!

Best regards, (^^ゞ