LLM開発の心強い味方、LangSmithで「中身の見える」AIアプリを作ってみませんか?
![]()
【Yuki】
Hirokiくん、こんにちは。今日はPythonを使ってAIアプリを開発するときに、とっても助けになる「LangSmith(ラングスミス)」というツールについてお話ししようと思います。AIのプログラムって、書いた通りに動いているはずなのに、どうしてその回答が出てきたのか分からなくて困ること、ありませんか...?
![]()
【Hiroki】
Yukiさん、こんにちは!あります、あります。プロンプトを変えてみても、何が原因で結果が変わったのか、ログを追いかけるだけで一苦労なんです。LangChainは少し触ってみたんですけど、中身がブラックボックスになりがちで。
![]()
【Yuki】
そうですよね。わたしも、プログラムが複雑になってくると、自分の書いたコードが意図通りに動いているか不安になることがあります。LangSmithは、そんな「AIの思考プロセス」を可視化してくれるツールなんです。これを使うと、まるで見えない糸を辿るように、AIが何を考えてどう動いたのかが手に取るように分かるようになるんですよ。
![]()
【Hiroki】
「思考プロセスの可視化」ですか!それは心強いですね。具体的にどんなことができるツールなんですか?
LangSmithでできること:トレースとデバッグ
![]()
【Yuki】
一番の大きな機能は「トレース」だと思います。LangChainなどを使って構築したAIアプリの実行過程を、一本の線のように繋げて記録してくれる機能です。どのステップで、どんな入力があって、どんな出力が返ってきたのか。さらに、APIの呼び出しにかかった時間や、消費したトークン数、コストまで一覧で見ることができます。
![]()
【Hiroki】
へぇー!いつもターミナルに print文をたくさん書いてデバッグしていた僕からすると、夢のようなツールですね。
![]()
【Yuki】
ふふ、そうですよね。わたしも以前はよく print文で画面を埋め尽くしてしまっていました...。でも、LangSmithのダッシュボードを見れば、ネストされた複雑なチェーンの動きもグラフィカルに確認できるんです。特に、最新のモデルである gemini-3-flash-preview のような高速なモデルを使っているとき、どこで遅延が発生しているかを特定するのにも役立つはずですよ。
![]()
【Hiroki】
gemini-3-flash-preview ですか!最新のモデルですね。そういった新しいモデルを使うときこそ、動作の安定性を確認するために可視化が必要になりそうです。
![]()
【Yuki】
はい。それに、LangSmithはただ眺めるだけではなくて、記録された実行結果をそのまま「テストデータ」として保存することもできるんです。「この回答は良かった」「この回答はイマイチだった」というのを蓄積して、後でまとめてテスト(評価)するための準備ができるんですよ。
LangSmithを使い始めるための準備
![]()
【Hiroki】
なんだか難しそうに見えますが、設定は大変なんですか?
![]()
【Yuki】
実は、思っているよりもずっと簡単なんです。まずは LangSmithの公式サイトでアカウントを作成して、APIキーを発行する必要があります。
![]()
【Yuki】
APIキーが取得できたら、環境変数に設定するだけで、LangChainが自動的にログを送信してくれるようになります。少し、コードの例を書いてみますね。
import os
# LangSmithの設定
os.environ["LANGSMITH_TRACING_V2"] = "true"
os.environ["LANGSMITH_ENDPOINT"] = "https://api.smith.langchain.com"
os.environ["LANGSMITH_API_KEY"] = "あなたのAPIキー"
os.environ["LANGSMITH_PROJECT"] = "my-first-project"
# LLMのAPIキー(ここでは最新のGoogle AI SDKを想定します)
os.environ["GOOGLE_API_KEY"] = "あなたのGoogle APIキー"
![]()
【Hiroki】
これだけでいいんですか?コード本体を書き換えなくても、環境変数だけでトレースが始まるなんて不思議です。
![]()
【Yuki】
そうなんです。LangChainというライブラリが、環境変数を見て「あ、今は LangSmithにデータを送る設定なんだな」と判断して、裏側でこっそり動いてくれるんですよ。誰かの役に立つために、目立たないところで一生懸命働いているツールって、なんだか健気で応援したくなりませんか...?
![]()
【Hiroki】
確かに、縁の下の力持ちって感じですね。Yukiさんがそう言うと、ツールにも感情があるみたいに思えてきます(笑)
最新の google-genai ライブラリと LangChain の連携
![]()
【Yuki】
えへへ、そうかもしれません。では、具体的に最新の google-genai ライブラリを使って、LangSmithに記録を残すコードの構成を見てみましょう。最新の Gemini モデルを利用する場合、langchain-google-genai パッケージを使うのが一般的です。
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
# 最新モデル gemini-3-flash-preview を指定
llm = ChatGoogleGenerativeAI(
model="gemini-3-flash-preview",
temperature=0.7
)
prompt = ChatPromptTemplate.from_template(
"{topic}について、高校生にも分かりやすく3行で教えてください。"
)
output_parser = StrOutputParser()
# チェーンの作成
chain = prompt | llm | output_parser
# 実行(このデータが自動的に LangSmith に送られます)
response = chain.invoke({"topic": "量子コンピュータ"})
print(response)
![]()
【Hiroki】
この chain.invoke を呼び出した瞬間に、LangSmith のウェブサイト上で「どんなプロンプトが送られたか」がリアルタイムで見られるようになるんですね。
![]()
【Yuki】
その通りです。もしエラーが起きたときも、どこで止まったのかが赤文字で表示されるので、原因究明がすごく早くなると思います。夜中に一人でコードを書いていて、どうしてもエラーが取れなくて泣きたくなるようなときも、これがあれば少し安心できるかもしれません...。
![]()
【Hiroki】
夜中にデバッグするのは辛いですもんね...。でも、これなら一人でも頑張れそうです!
評価(Evaluation)の重要性について
![]()
【Hiroki】
Yukiさん、さっき「テストデータとして保存できる」とおっしゃっていましたが、それは具体的にどう使うんですか?
![]()
【Yuki】
それは「評価(Evaluation)」というステップで使います。AIアプリを作っていると、プロンプトを少し変えただけで、今まで上手くいっていた質問への回答が急に悪くなってしまう「デグレ(退化)」がよく起きるんです。
![]()
【Hiroki】
あ、わかります!あっちを立てればこっちが立たず、みたいな状態ですよね。
![]()
【Yuki】
そうなんです。それを防ぐために、あらかじめ「正解となる質問と回答のセット(データセット)」を LangSmith 上で作っておくんです。そして、プログラムを修正するたびに、そのデータセットに対して一斉にテストを実行します。
![]()
【Hiroki】
人間が一人ずつ回答をチェックするんじゃなくて、自動でやってくれるんですか?
![]()
【Yuki】
はい、それも可能です。最近では「AIがAIの回答を評価する」という手法も一般的になってきています。LangSmith には、テスト結果を自動でスコアリングしてくれる機能も備わっているんですよ。
プロンプト・ハブでプロンプトを管理する
![]()
【Yuki】
もう一つ、LangSmith の便利な機能に「Prompt Hub」というものがあります。Hirokiくん、プロンプトをソースコードの中に直接書いて、管理が大変になったことはありませんか?
![]()
【Hiroki】
あります!長いプロンプトが Python の文字列としてコードを占領してしまって、すごく読みにくいんです。
![]()
【Yuki】
ふふ、分かります。Prompt Hub を使うと、プロンプトだけを LangSmith のサーバー上で管理できるんです。コード側からは「プロンプトの名前」を指定して呼び出すだけ。これなら、プロンプトを少し調整したいだけのときに、ソースコードを書き換えて再デプロイする必要がなくなるんですよ。
![]()
【Hiroki】
それは便利ですね!チームで開発するときなんかにも、プロンプト担当の人がコードを触らずに調整できて良さそうです。
![]()
【Yuki】
そうですね。Webデザインのフォントを微調整するように、プロンプトの言葉遣いやニュアンスを少しずつ変えて、一番いい結果を探る作業がとても楽になると思います。
プロダクション環境でのモニタリング
![]()
【Hiroki】
アプリを実際に公開した後も、LangSmith は役に立ちますか?
![]()
【Yuki】
もちろんです。むしろ公開してからが本番かもしれません。実際にユーザーがどんな入力をしているのか、それに対して AI が変な回答をしていないかを監視(モニタリング)することができます。
![]()
【Hiroki】
でも、ユーザーの入力が全部見えてしまうのは、少しプライバシーも気になりますね。
![]()
【Yuki】
鋭いですね。確かにそうです。ですから、特定のデータを除外したり、チーム内でも閲覧権限を制限したりといった機能も用意されています。運用のフェーズでは、そういった慎重さも大切になってくると思います。
![]()
【Hiroki】
なるほど。作るだけじゃなくて、育てていくためのツールでもあるんですね。
まとめ:LangSmithがもたらす開発の変化
![]()
【Yuki】
いかがでしたか?LangSmith を使うことで、AI開発が「暗闇の中を手探りで歩く」ような状態から、「ライトを持って地図を見ながら進む」ような状態に変わる感覚を、少しでも伝えられたら嬉しいです。
![]()
【Hiroki】
はい!今までなんとなくでやっていた部分が、LangSmith を使えばちゃんと数字やログとして管理できそうな気がしてきました。まずは APIキーを取るところからやってみます。
![]()
【Yuki】
その意気です、Hirokiくん。最新の google-genai ライブラリと組み合わせて、ぜひ素敵な AIアプリを作ってみてくださいね。もし行き詰まったら、いつでも聞いてください。わたしも...、Hirokiくんが作ったツールが誰かを笑顔にするのを、影ながら応援していますから。
![]()
【Hiroki】
ありがとうございます、Yukiさん!頑張ります!
![]()
【Yuki】
あ、最後に。公式のドキュメントもとっても充実しているので、困ったときはここを見てみるといいですよ。英語ですが、最近のブラウザの翻訳機能を使えば、きっと理解できるはずです。
![]()
【Yuki】
それでは、今日の講義はこれくらいにしましょうか。お疲れ様でした。外は少し冷えてきましたし、暖かくして作業してくださいね。
![]()
【Hiroki】
はい、Yukiさんもお疲れ様でした!また次回もよろしくお願いします!
この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。
「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。
- 専門家の知見に基づいた、保守性の高いコード設計
- AIの専門家による、Gemini API等の最新AIを組み合わせた高度な自動化
- ChatGPT等が生成したコードのデバッグ・最適化
「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。


