Tasuke HubLearn · Solve · Grow
#LangSmith

LangSmith実践ガイド!LangChain公式の可観測性プラットフォームで本番環境を守る

LangChain製アプリの開発・デバッグ・監視を一元管理。トレーシング、評価、プロンプトハブ機能を使った本番環境対応のベストプラクティスを解説します。

時計のアイコン27 November, 2025
TH

Tasuke Hub管理人

東証プライム市場上場企業エンジニア

情報系修士卒業後、大手IT企業にてフルスタックエンジニアとして活躍。 Webアプリケーション開発からクラウドインフラ構築まで幅広い技術に精通し、 複数のプロジェクトでリードエンジニアを担当。 技術ブログやオープンソースへの貢献を通じて、日本のIT技術コミュニティに積極的に関わっている。

🎓情報系修士🏢東証プライム上場企業💻フルスタックエンジニア📝技術ブログ執筆者

LangChainアプリの「見えない課題」

LangChainで複雑なAIエージェントを構築すると、こんな問題に直面します:

  • チェーンのどこで失敗しているか特定できない
  • RAGパイプラインのボトルネックが不明
  • トークンコストが想定の10倍に膨れ上がる
  • プロンプトの変更がパフォーマンスに与えた影響がわからない

LangSmithは、LangChain公式の可観測性プラットフォームとして、これらを全て解決します。

ベストマッチ

最短で課題解決する一冊

この記事の内容と高い親和性が確認できたベストマッチです。早めにチェックしておきましょう。

LangSmithとは?LangChainのX線透視装置

LangSmithは、LangChainエコシステムと完全統合された可観測性プラットフォームです。

3つのコア機能

  1. トレーシング: チェーン実行の完全可視化
  2. 評価: 自動・手動両方の品質評価
  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は事実上の標準ツールです。

まずは無料プランで試してみることをお勧めします。

さらに理解を深める参考書

関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。

この記事をシェア

続けて読みたい記事

編集部がピックアップした関連記事で学びを広げましょう。

#LangFuse

LangFuse完全ガイド!LLMアプリの可観測性を実現するオープンソースプラットフォーム

2025/11/26
#AI

AIガバナンス・プラットフォーム実装ガイド - Python・MLOps完全版【2025年最新】

2025/8/14
#ConoHa WING

AIエージェント開発ならConoHa WING!LangGraph・AutoGPTで自律型AIを構築する完全ガイド

2025/11/27
#ローコード

企業向けローコード・ノーコードプラットフォーム実装ガイド - 市民開発者とガバナンス統合【2025年最新】

2025/8/14
#Platform Engineering

企業向けプラットフォームエンジニアリング実装ガイド - Backstage・Kubernetes・GitOps統合【2025年最新】

2025/8/14
#Google

Gemini 3.0 Flash完全ガイド!マルチモーダルAI×超高速レスポンスの新時代

2025/11/26