![見出し画像](https://assets.st-note.com/production/uploads/images/111809544/rectangle_large_type_2_8e3f900e49a5ff8077b8f6fa676f21b3.png?width=1200)
wandb による LangChain のトレースを試す
「wandb」による「LangChain」のトレースを試したので、まとめました。
1. wandb (Weights & Biases)
「wandb」 (Weights & Biases)は、機械学習の実験の追跡および可視化プラットフォームです。「LangChain」では環境変数を1つ指定するだけで、「LangChain」の内部状態をトレースすることができます。
「wandb」のサイトでアカウントを作成してください。個人利用は無料になります。詳しくは、「Pricing」を参照してください。
2. トレースするコードの準備
Google Colab でトレースするコードを準備します。
(1) パッケージのインストール。
# パッケージのインストール
!pip install langchain
!pip install openai
(2) 環境変数の準備。
以下のコードの <OpenAI_APIのAPIキー> にはOpenAI APIのAPIキーを指定します。(有料)
import openai
# OpenAI APIキーの準備
openai.api_key = "<OpenAI_APIのAPIキー>"
(3) LangChainのコードの準備。
今回は、「llm-math」ツールで計算するエージェントを使います。
from langchain.agents import initialize_agent, load_tools
from langchain.agents import AgentType
from langchain.llms import OpenAI
# エージェントの準備
llm = OpenAI(temperature=0)
tools = load_tools(["llm-math"], llm=llm)
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
# エージェントの実行
agent.run("123*4を計算機で計算してください")
> Entering new AgentExecutor chain...
I need to use the calculator to solve this
Action: Calculator
Action Input: 123*4
Observation: Answer: 492
Thought: I now know the final answer
Final Answer: 492
> Finished chain.
492
2. トレースの実行
トレースの実行手順は、次のとおりです。
(1) wandbパッケージのインストール。
# パッケージのインストール
!pip install wandb
(2) 環境変数の準備。
import os
os.environ["LANGCHAIN_WANDB_TRACING"] = "true"
(3) エージェントの実行。
# エージェントの実行
agent.run("123*4を計算機で計算してください")
「Google Colab」のログで、wandbのAPIキーの入力を促されたら、「https://wandb.ai/authorize」をクリックしてAPIキーをコピーし、テキストボックスに入力します。
![](https://assets.st-note.com/img/1690422439479-PaeWoEh4p3.png?width=1200)
(4) wandbのダッシュボードでトレース内容を確認。
「Google Colab」のログのリンク (https://wandb.ai/<user>/uncategorized/runs/<id>) からも開くことができます。
![](https://assets.st-note.com/img/1690422830072-0kZvhcTTRW.png?width=1200)
「LangChain」内部すべての「Prompt→Completion」を確認できるため、レスポンス失敗時にどの処理が原因なのかがわかります。
![](https://assets.st-note.com/img/1690422848822-Xvc5A2rEVg.png?width=1200)
【おまけ】 特定ブロックのみをトレース
アプリケーション全体ではなく、特定ブロックのみをトレースすることもできます。環境変数 (LANGCHAIN_WANDB_TRACING) を使わず、「wandb_tracing_enabled()」を使います。
from langchain.callbacks import wandb_tracing_enabled
# ブロック内のトレースの有効化
with wandb_tracing_enabled():
agent.run("123*4を計算機で計算してください")
参考
この記事が気に入ったらサポートをしてみませんか?