AI開発においてObservability(可視性)がないのは致命的
LangChainでアプリケーションを構築している際、ボットが突然「とんちんかんな」回答を返して困った経験はないでしょうか。さらに悪いことに、特定のチェーン(chain)の実行に20秒もかかっているのに、どのステップでボトルネックが発生しているのか分からないこともあります。多くの実戦プロジェクトを通じて私が学んだことは一つ。Observability(オブザーバビリティ/可視性)は、AI開発における死活問題となるスキルです。抽象化されたコードのレイヤー内部で何が起きているかが見えなければ、デバッグはまさに暗中模索の状態になります。
LangSmithは、その不透明さを解消するために誕生しました。これは単なるログツールではなく、トレース(trace)、評価(evaluate)、プロンプト管理のための包括的なエコシステムです。この記事では、LangSmithをプロジェクトに「一瞬で」統合する方法と、AIを本番環境(production)に導入する際の実戦的な経験を共有します。
クイックスタート:5分で結果を確認
嬉しいことに、複雑なサーバー設定は不要です。LangSmithはすぐに使えるクラウド版を非常にスムーズに提供しています。
ステップ1:APIキーの取得
smith.langchain.comにアクセスしてアカウントを登録してください。Settingsメニューから新しいAPIキーを作成し、二度は表示されないので必ずすぐにコピーしておきましょう。
ステップ2:環境変数の設定
LangChainは非常にスマートで、環境変数を通じて自動的に設定を認識します。.envファイルに以下の数行を追加するか、ターミナルで直接入力するだけです。
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
export LANGCHAIN_API_KEY="lsv2_pt_..."
export LANGCHAIN_PROJECT="itfromzero-demo" # 管理しやすいプロジェクト名
ステップ3:コードの実行テスト
最大のメリットは、ロジックを一行も修正する必要がないことです。LangChainは自動的にデータをダッシュボードに「送信」します。以下の簡単なコードで試してみましょう:
import os
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
model = ChatOpenAI(model="gpt-4o-mini")
prompt = ChatPromptTemplate.from_template("{topic}について初心者向けに説明してください。")
chain = prompt | model
response = chain.invoke({"topic": "LangSmith Tracing"})
print(response.content)
ここでLangSmithのダッシュボードを開いてみてください。入力、出力から詳細なレスポンス時間まで、すべてのパラメータを備えた新しい「Run」が表示されているはずです。
トレースの読み解き方:データに騙されないために
LangSmithのインターフェースはツリー形式(Tree view)で表示され、各ノードはSpanと呼ばれます。複雑なRAG(Retrieval-Augmented Generation)アプリケーションにおいて、この図解は非常に価値があります:
- 実際の入出力(Input/Output): OpenAIに送信された最終的なプロンプトが正確にどのようなものかを確認できます。エラーの原因が単なるスペース一つや、変数のフォーマットミスであることも少なくありません。
- レイテンシの測定(Latency): 各ステップに何ミリ秒かかっているか? 例えば、情報の取得(Retrieval)は200msしかかかっていないのに、LLMが10秒も「考え込んで」いるといった状況が即座に分かります。どこを最適化すべきかが一目瞭然です。
- トークンの制御: コストをリアルタイムで追跡できます。以前、無限ループのバグにより、トークン使用量が異常に急増したグラフを見て、一晩で50ドルのクレジットを使い果たしてしまうのを未然に防げたことがありました。
応用:手動入力に代わる自動テスト
コードを書くのは始まりに過ぎません。新しいプロンプトが本当に以前のものより優れているかどうかをどう判断しますか? 一つずつ手動で入力して試す代わりに、私はよくDatasets & Testing機能を使用します。
サンプル質問をデータセットとしてまとめ、一括でテストを実行できます。LangSmithでは、AI(例えばGPT-4)自身を使用して、より小さなモデルの回答を「正確性」「有用性」「JSONフォーマットの適切さ」などの基準で採点させることが可能です。この手法により、チームはボットの回答品質を低下させる不安なく、自信を持ってコードをマージできるようになります。
DevOps의 視点からの実戦経験
実際のユーザーがいるシステムに導入する際は、以下の4点に注意することをお勧めします:
1. 環境を明確に分ける
すべてのデータをデフォルトのプロジェクトに詰め込まないでください。LANGCHAIN_PROJECTを活用して、dev、staging、productionを分離しましょう。これにより、エラーデータのフィルタリングが容易になり、ノイズを減らすことができます。
2. 個人情報(PII)などの機密データに注意
LangSmithはチャット内容をすべて保存します。ユーザーがメールアドレスやクレジットカード番号を入力した場合、それらはダッシュボードにはっきりと表示されます。顧客の情報の安全性を確保するために、コード内でhide_inputsを設定することを検討してください。
3. 本番環境でのサンプリング(Sampling)手法
1日1万人のユーザーがいる本番環境ですべてをトレースすると、コストがかさみ、ネットワークの遅延も増加します。代わりにSamplingを使用しましょう。システムの状態を監視するには、ランダムに5〜10%程度のトレースを保存するだけで十分です。
4. フィードバックループの活用
ユーザーが「低評価(Dislike)」ボタンを押した場合、LangSmithのSDKを使用してそのrun_idにscore=0というタグを付けます。週末にスコアの低いケースだけを抽出して分析すれば、実際のフィードバックに基づいてプロンプトを改善する最短ルートになります。
まとめ
監視ツールなしでAI開発を行うのは、濃霧の中で車を運転するようなものです。LangSmithは機能が多すぎて最初は戸惑うかもしれませんが、トレース機能をオンにするだけで、多くの開発者よりも一歩先へ進むことができます。
既存のプロジェクトにぜひ導入してみてください。通常のprint()デバッグでは決して見つけられなかった、思いもよらないミスを発見できるはずです。セットアップで困ったことがあれば、コメント欄で教えてください。すぐにサポートします。

