LangChainアプリの「見えない課題」
LangChainで複雑なAIエージェントを構築すると、こんな問題に直面します:
- チェーンのどこで失敗しているか特定できない
- RAGパイプラインのボトルネックが不明
- トークンコストが想定の10倍に膨れ上がる
- プロンプトの変更がパフォーマンスに与えた影響がわからない
LangSmithは、LangChain公式の可観測性プラットフォームとして、これらを全て解決します。
最短で課題解決する一冊
この記事の内容と高い親和性が確認できたベストマッチです。早めにチェックしておきましょう。
LangSmithとは?LangChainのX線透視装置
LangSmithは、LangChainエコシステムと完全統合された可観測性プラットフォームです。
3つのコア機能
- トレーシング: チェーン実行の完全可視化
- 評価: 自動・手動両方の品質評価
- プロンプトハブ: バージョン管理とA/Bテスト
さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
実践1: 自動トレーシング
LangChainとの統合(ゼロコンフィグ)
import os
from langchain.chat_models import ChatOpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
# 環境変数でLangSmithを有効化
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = "lsv2_..."
os.environ["LANGCHAIN_PROJECT"] = "customer-support-bot"
# 通常のLangChainコード(変更不要!)
llm = ChatOpenAI(model="gpt-4")
prompt = PromptTemplate(
input_variables=["question"],
template="カスタマーサポート担当として回答してください:{question}"
)
chain = LLMChain(llm=llm, prompt=prompt)
# 実行すると自動的にLangSmithにトレースされる
result = chain.run("商品の返品方法を教えて")トレース詳細の確認
LangSmithダッシュボードには以下が自動記録されます:
Trace: customer_support_query_abc123
├─ LLMChain (total: 2.3s)
│ ├─ Prompt: "カスタマーサポート担当として..."
│ ├─ LLM Call (1.8s)
│ │ ├─ Model: gpt-4
│ │ ├─ Tokens: 150 in / 300 out
│ │ ├─ Cost: $0.0135
│ │ └─ Output: "商品の返品は購入後30日以内..."
│ └─ Total Duration: 2.3sさらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
実践2: 複雑なエージェントのデバッグ
RAGパイプラインのトレース
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import RetrievalQA
# ベクトルストアの構築
vectorstore = FAISS.from_documents(
documents,
OpenAIEmbeddings()
)
# RAGチェーン
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4"),
retriever=vectorstore.as_retriever(search_kwargs={"k": 3}),
return_source_documents=True
)
# 実行(自動トレース)
result = qa_chain("会社の休暇ポリシーは?")LangSmithで確認できる情報
Trace: rag_query_xyz789
├─ RetrievalQA (total: 3.5s)
│ ├─ Retriever (0.8s)
│ │ ├─ Query: "会社の休暇ポリシーは?"
│ │ ├─ Embedding Call (0.3s, $0.0001)
│ │ └─ Retrieved Docs: 3件
│ ├─ LLM Call (2.1s)
│ │ ├─ Context Size: 1,200 tokens
│ │ ├─ Tokens: 1,250 in / 450 out
│ │ └─ Cost: $0.0255
│ └─ Total Cost: $0.0256
⚠️ ボトルネック検出:
- Retriever遅延: 推奨値を150ms超過
- Context長すぎ: 最適化の余地ありさらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
実践3: エージェントの可視化
Tool使用のトレース
from langchain.agents import create_openai_tools_agent, AgentExecutor
from langchain.tools import Tool
def search_products(query: str) -> str:
"""商品検索ツール"""
return f"検索結果: {query}に関する商品3件"
def get_inventory(product_id: str) -> str:
"""在庫確認ツール"""
return f"商品{product_id}の在庫: 15個"
tools = [
Tool(
name="search_products",
func=search_products,
description="商品を検索"
),
Tool(
name="get_inventory",
func=get_inventory,
description="在庫を確認"
)
]
agent = create_openai_tools_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)
# エージェント実行
result = agent_executor.invoke({
"input": "ノートパソコンの在庫を教えて"
})LangSmithでのエージェント可視化
Trace: agent_execution_123
├─ AgentExecutor (total: 5.2s)
│ ├─ Agent思考 (1.2s)
│ │ └─ LLM Call: "まず商品を検索する必要がある"
│ ├─ Tool: search_products (0.3s)
│ │ ├─ Input: "ノートパソコン"
│ │ └─ Output: "検索結果: 商品3件"
│ ├─ Agent思考 (1.1s)
│ │ └─ LLM Call: "次に在庫を確認する"
│ ├─ Tool: get_inventory (0.2s)
│ │ ├─ Input: "product_123"
│ │ └─ Output: "在庫: 15個"
│ └─ 最終回答 (1.8s)
│ └─ LLM Call: "ノートパソコンの在庫は15個です"
統計:
- Tool呼び出し: 2回
- LLM呼び出し: 3回
- 総トークン: 2,150
- 総コスト: $0.041さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
実践4: 評価とベンチマーク
データセット作成
from langsmith import Client
client = Client()
# 評価用データセット作成
dataset = client.create_dataset(
dataset_name="customer_support_qa",
description="カスタマーサポートQ&Aテストセット"
)
# テストケース追加
examples = [
{
"inputs": {"question": "返品期限は?"},
"outputs": {"answer": "購入後30日以内です"}
},
{
"inputs": {"question": "配送料は?"},
"outputs": {"answer": "5,000円以上で送料無料です"}
}
]
for example in examples:
client.create_example(
dataset_id=dataset.id,
inputs=example["inputs"],
outputs=example["outputs"]
)自動評価の実行
from langsmith.evaluation import evaluate
def my_chain(inputs):
"""評価対象のチェーン"""
return chain.run(inputs["question"])
# カスタム評価関数
def exact_match_evaluator(run, example):
"""完全一致評価"""
prediction = run.outputs["output"]
expected = example.outputs["answer"]
return {"score": 1.0 if prediction == expected else 0.0}
# 評価実行
results = evaluate(
my_chain,
data=dataset_name,
evaluators=[exact_match_evaluator],
experiment_prefix="version_2.0"
)結果の比較
Experiment: version_2.0
Dataset: customer_support_qa
Results:
- Exact Match: 85% (17/20)
- Avg Latency: 1.8s
- Avg Cost: $0.015/query
Previous (version_1.5):
- Exact Match: 78% (15/20) ↓ 7pt
- Avg Latency: 2.3s ↓ 0.5s
- Avg Cost: $0.022/query ↓ $0.007さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
実践5: プロンプトハブ
プロンプトの管理
from langsmith import hub
# プロンプトの保存
hub.push(
"my-org/customer-support-v2",
PromptTemplate(
input_variables=["question"],
template="""あなたは親切なカスタマーサポート担当者です。
規則:
- 丁寧な言葉遣いを心がける
- 具体的な手順を示す
- 不明点は担当者にエスカレーション
質問: {question}"""
)
)
# プロンプトの取得(本番環境で使用)
prompt = hub.pull("my-org/customer-support-v2")
chain = LLMChain(llm=llm, prompt=prompt)バージョン管理
LangSmith Hub:
Prompt: my-org/customer-support-v2
v2.1 (Production) - 2025-01-15
- エスカレーション基準を明確化
- 応答速度: 1.8s, 満足度: 4.2/5
v2.0 (Staging) - 2025-01-10
- トーンを柔らかく変更
- 応答速度: 2.1s, 満足度: 4.0/5
v1.5 (Archived) - 2024-12-20
- 初期バージョン
- 応答速度: 2.3s, 満足度: 3.8/5さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
リアルタイム監視
アラート設定
# Web UIで設定可能
アラート条件:
- エラー率 > 5% → Slackに通知
- レイテンシ > 3秒 → PagerDutyに通知
- コスト > $10/時間 → Emailに通知ダッシュボード
過去24時間のメトリクス:
リクエスト数: 15,420
成功率: 98.2%
平均レイテンシ: 1.8s
総コスト: $127.34
トップエラー:
1. RateLimitError (15件, 1.2%)
2. TimeoutError (8件, 0.6%)さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
LangFuse vs LangSmith
| 項目 | LangSmith | LangFuse |
|---|---|---|
| 開発元 | LangChain公式 | オープンソース |
| LangChain統合 | ◎ 完璧 | ○ コールバック経由 |
| 料金 | 無料枠5,000トレース/月 | オープンソース/有料クラウド |
| セルフホスト | 不可 | 可能 |
| プロンプトハブ | ◎ 組み込み | △ 別機能 |
| 評価機能 | ◎ データセット対応 | ◎ カスタム評価 |
| マルチフレームワーク | △ LangChain重視 | ◎ フレームワーク非依存 |
さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
料金プラン
無料プラン
- トレース: 5,000/月
- データ保持: 14日間
- プロンプトハブ: 無制限
Plusプラン ($39/月)
- トレース: 100,000/月
- データ保持: 90日間
- チーム共有機能
Enterpriseプラン
- トレース: 無制限
- カスタム保持期間
- SSO、RBAC対応
さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
まとめ
LangSmithは、LangChain専用に最適化された可観測性プラットフォームです。
- ゼロコンフィグでトレーシング開始
- エージェントの思考過程を完全可視化
- プロンプトハブで即座のデプロイ
- データセット評価で品質保証
LangChainアプリを本番環境で運用するなら、LangSmithは事実上の標準ツールです。
まずは無料プランで試してみることをお勧めします。
さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
![LangChainとLangGraphによるRAG・AIエージェント[実践]入門 エンジニア選書](https://m.media-amazon.com/images/I/51hcvyPcUnL._SL500_.jpg)



![Ansible実践ガイド 第4版[基礎編] impress top gearシリーズ](https://m.media-amazon.com/images/I/516W+QJKg1L._SL500_.jpg)





