【初心者向け】LangChainの開発効率を爆上げする必須ツール「LangSmith」の入門

Featured image of the post

はじめに

LangSmithが便利と聞いて使ってみた!

本当にめちゃくちゃ便利だったので基本的な使い方を画像付きでまとめる😊

📎

この記事で伝えたいこと

✅LangSmithで何ができるか、どう便利かを理解する。

✅LangSmithの基本的な使い方を理解する。

結論

✅LangSmithは、LangChainの開発の補助にめっちゃ便利。

✅ログを残したり、モデルの評価したりできる。

✅環境変数を設定しておくだけで、自動でLangSmithと連携されて簡単に使える。

💡
LangChainを使うなら必須級

なぜ今まで使っていなかったのか後悔するくらい便利…!

LangSmithとは

✅LangChainの開発を助けてくれるツール。

LangChainを使っていない場合でもLangSmithパッケージを使えば利用可能◎

詳細は公式ドキュメントを参照。

できること

代表的なできることを紹介する。

ログが残る

事前にLangChainのAPIキーを環境変数に設定しておくだけで、LLMを実行するとき自動で「LangSmithのクラウドのデータベース」にログが蓄積される!

Image in a image block

消費トークン数を計測

ログと一緒に消費トークン数も蓄積される!

Image in a image block

チェーンの中身を確認する

複雑なチェーンでもどこで精度が悪くなっているか確認できる!

Image in a image block

実行結果を自動で評価してもらえる

サンプルとなる回答を用意すれば、実行結果を自動で評価してもらえる!

Image in a image block

📎
公式ドキュメントでより詳細に紹介されている。

https://docs.smith.langchain.com/overview

役立ちそうな場面
  • ログを残したいとき
  • カスタマイズしたモデルの評価をするとき
  • カスタマイズしたモデルの精度を向上させたいとき

基本的な使い方

使用技術

今回使用するものは以下のとおり。

言語
  • Python(もしくはTypeScript)
💡
今回はPythonで説明するが基本的な使い方はTypeScriptも同じ!
💡
Pythonとpipはインストール済みの前提。

ライブラリ
  • LangChain
  • LangSmith
  • tiktoken
  • OpenAI(OpenAIのモデルを使わない場合は不要)
  • python-dotenv
💡
ライブリラリのインストールは後で行う!

API
  • LangSmithのAPI
  • OpenAIのAPI(OpenAIのモデルを使わない場合は不要)
💡

💡
APIの準備は後で行う!
LangSmithの登録

✅以下のサイトからLangSmithに登録する。

📎
LangSmith公式サイト:https://smith.langchain.com/

💡
2023/8時点では会員登録後、ウェイトリストに登録する必要があった。

(利用可能になるまでしばらく待つ必要がある)

LangSmithのAPIキーを生成

✅以下のサイトからAPIキーを発行する。

Image in a image block

💡
APIキーは忘れないようにメモしておく!

OpenAIのAPIキーを生成

✅以下のサイトからAPIキーを発行する。

※OpenAIの以外のLLMを使う場合は、適宜他サービスのAPIキーを用意する。

📎
APIキー発行の流れなど、こちらで詳しく解説している。

📄ChatGPTのAPIを使うための知識まとめ【全プログラミング言語共通】

フォルダを作成

✅任意の名前の新規フォルダを作成する。

今回は「env_LangChainTest」というフォルダ名にした。

Image in a image block

各種ライブラリのインストール

✅Pythonのライブラリをインストールしていく。

(Python、pipはインストール済みの前提。)

プロジェクトのディレクトリに移動

cd env_LangChainTest

langchainをインストール

pip install langchain

langsmithをインストール

pip install langsmith

openaiをインストール

pip install openai

tiktokenをインストール

pip install tiktoken

python-dotenvをインストール

pip install python-dotenv

環境変数の設定

LangSmithを使うために必要な環境変数を.envに記述する。

プロジェクトディレクトリの直下に.envを作成する。

.env

LANGCHAIN_TRACING_V2 = true
LANGCHAIN_ENDPOINT = "https://api.smith.langchain.com"
LANGCHAIN_API_KEY = "your-api-key"    # LangSmithのAPIキーを入力してください
LANGCHAIN_PROJECT = "sample-project"  # 任意のプロジェクト名を入力してください
OPENAI_API_KEY = "your-api-key"       # OpenAIのAPIキーを入力してください

Image in a image block

サンプルコードの作成

最小限のサンプルコードを作成する。

Image in a image block

src/langsmith/min.py(ファイル名、保存場所は任意)

# 環境変数の準備
from dotenv import load_dotenv
load_dotenv()

# インポート
from langchain.chat_models import ChatOpenAI

# ✅質問の実行
llm = ChatOpenAI()
llm.invoke("Appleの創業者は誰ですか?")

✅質問の実行
# ✅質問の実行
llm = ChatOpenAI()
llm.invoke("Appleの創業者は誰ですか?")
  • 「Appleの創業者は誰ですか?」という質問をしているだけ。
  • LangSmithに関する処理は一切ないが、ログを自動でLangSmithに出力してくれる✨

💡
環境変数のLANGCHAIN_TRACING_V2trueに設定されている場合、質問のログを自動でLangSmithに出力してくれる✨

サンプルコードを実行する

以下のコマンドを実行するだけ。

※パス、ファイル名は環境に応じて変える。

python src/langsmith/min.py

実行結果を確認する

✅LangSmithの管理画面で実行結果を確認できる!

💡
間違った回答の原因調査などに便利!
プロジェクトの画面へ移動する

まずLangSmithのページを開く。

📎
LangSmith管理画面:https://smith.langchain.com/

Projectsを選択。

Image in a image block

「sample-project」を選択。

※プロジェクト名は環境変数LANGCHAIN_PROJECTで指定したもの。

Image in a image block

実行の過程を確認する

確認したいログを選択する。

Image in a image block

Runタブで入力、出力が確認できる。

※今回はシンプルな例だったので細かい実行過程が存在しない。

Image in a image block


例:Agent(LangChainの機能)を使ったプログラミングを実行した場合

答えが出るまでの詳しい過程を1つずつ確認できる。

Image in a image block

💡
間違った回答をされても、どこで間違いが発生しているのか特定できる!

その他の便利な機能

実行結果の確認以外にも管理画面でさまざまなことができる😊

代表的な機能は以下のとおり。

  • その場でLLMのパラメータを変更して再実行する
    💡
    どのパラメータがいいか?を微調整するのに便利!

  • テスト実行と自動評価
    💡
    カスタマイズしたモデルの精度を評価するのに便利!

その場でLLMのパラメータを変更して再実行する

プロジェクト画面で、確認したいログを選択する。

Image in a image block

Playgroundを選択

Image in a image block

パラメータや質問文を変更して、再実行。

Image in a image block

💡
わざわざコードを修正せずに管理画面上で微調整できてめっちゃ楽!

回答が合っているか自動で評価してもらう
💡
評価してもらうまでの流れ
  1. まずサンプルとなる質問と回答を用意する。
  2. 評価用のプログラムを作成する。
  3. 評価用のプログラムを実行後、管理画面で評価結果を確認する。


✅まずはサンプルとなる質問と回答を用意する。

サンプルの用意の仕方は主に2種類ある。

プロジェクト画面で、サンプルとして登録したいログを選択する。

Image in a image block

Add to Datasetを選択

Image in a image block

データセットの名前を入力する

(今回はデータセット名をsample-datasetとする)

Image in a image block

Submitを選択

Image in a image block

これでデータセット(サンプル)が登録できた😊

サイドバーのDatasets & Testingを選択すると登録したデータセットを確認できる

Image in a image block


✅評価用のプログラムを作成する。

src/langsmith/eval.py(ファイル名、保存場所は任意)

# 環境変数の準備
from dotenv import load_dotenv
load_dotenv()

# インポート
from langchain.chat_models import ChatOpenAI
from langchain.smith import run_on_dataset, RunEvalConfig
from langsmith import Client

# データセット名
dataset_name = "sample-dataset"

# LangSmithのクライアント
client = Client()

# LLMを準備
llm = ChatOpenAI(temperature=0)

# 評価の設定
eval_config = RunEvalConfig(
  evaluators=[
    "qa"
  ]
)

# 評価の実行
run_on_dataset(
    dataset_name=dataset_name,
    llm_or_chain_factory=llm,       # LLMのインスタンス
    evaluation=eval_config,         # 評価の設定
    client=client,                  # LangSmithのクライアント
    verbose=True,                   # 実行ログを表示
    project_name="sample-test-1",   # 任意のプロジェクト名
)
📎
プログラムの詳細は公式ドキュメントを参照。

https://docs.smith.langchain.com/evaluation/quickstart

プログラムを実行する

※パス、ファイル名は環境に応じて変える。

python src/langsmith/eval.py


管理画面で評価結果を確認する。

サイドバーのDatasets & Testing

→ Testsタブ

→ プロジェクト名(今回はsample-test-1)を選択

Image in a image block

評価ログを選択

Image in a image block

事前に用意したサンプルと、実行結果を確認できる

Image in a image block

Feedbackタブで評価結果(Score)を確認できる

※Scoreは1が最高点。

Image in a image block

よくある質問

公式ドキュメントでよくある質問がまとめられている。

💡
LangSmithに慣れてきたら一度読んで見るといいかも!

参考サイト

公式ドキュメント

公式のLangSmith紹介記事

分かりやすい解説サイト