はじめに
LangChainは、言語モデルを使ったアプリケーション開発のための人気のフレームワークです。ClearMLを使うと、LangChainのアセットやメトリクスを記録するためのClearML Taskを作成することができます。この記事では、LangChainにClearMLを統合する方法を初心者向けに丁寧に解説します。
コールバックとは
コールバックとは、ある処理が完了した後に呼び出される関数のことです。LangChainでは、モデルのリクエストが完了した後に、その結果を処理するためのコールバックを設定することができます。
ClearMLのコールバックを使うと、LangChainのモデルリクエストの結果をClearMLに自動的に記録することができます。これにより、モデルの性能や挙動を簡単に追跡し、分析することができます。
必要なパッケージのインストール
まず、必要なパッケージをインストールします。以下のコードを実行してください。
!pip install -U langchain-community langchain-openai spacy textstat clearml langchain openai
!python -m spacy download en_core_web_sm
langchain-community
: LangChainのコミュニティ版パッケージlangchain-openai
: LangChainとOpenAIを連携させるためのパッケージspacy
: 自然言語処理ライブラリtextstat
: テキストの複雑さを計算するためのライブラリclearml
: ClearMLのパッケージlangchain
: LangChainのメインパッケージopenai
: OpenAIのパッケージ
ClearMLの設定
ClearMLを使うには、環境変数を設定する必要があります。以下のコードを実行して、ClearMLの設定を行います。
%env CLEARML_WEB_HOST=http://localhost:8080/
%env CLEARML_API_HOST=http://localhost:8008
%env CLEARML_FILES_HOST=http://localhost:8081
%env CLEARML_API_ACCESS_KEY=XXXX
%env CLEARML_API_SECRET_KEY=XXXX
%env OPENAI_API_KEY=sk-XXXX
CLEARML_WEB_HOST
: ClearMLのWebUIのURLCLEARML_API_HOST
: ClearMLのAPIのURLCLEARML_FILES_HOST
: ClearMLのファイルサーバーのURLCLEARML_API_ACCESS_KEY
: ClearMLのAPIアクセスキーCLEARML_API_SECRET_KEY
: ClearMLのAPIシークレットキーOPENAI_API_KEY
: OpenAIのAPIキー
ClearMLCallbackHandlerの設定
次に、ClearMLCallbackHandler
を設定します。このコールバックは、LangChainのアセットやメトリクスを記録するためのClearML Taskを作成します。
from langchain.callbacks import ClearMLCallbackHandler
from langchain_openai import OpenAI
# ClearMLコールバックの設定
clearml_callback = ClearMLCallbackHandler(
task_type="inference",
project_name="langchain_callback_demo",
task_name="llm",
tags=["test"],
# 追跡する詳細度に応じて以下のパラメータを変更
visualize=True,
complexity_metrics=True,
stream_logs=True,
)
llm = OpenAI(temperature=0, callbacks=[clearml_callback])
task_type
: 作成するClearML Taskのタイプ(タスクタイプを参照)project_name
: ClearML Taskを作成するプロジェクト名task_name
: ClearML Taskの名前tags
: ClearML Taskに追加するタグのリストvisualize
:True
に設定すると、ClearMLは実行の依存関係とエンティティプロットをキャプチャしますcomplexity_metrics
:True
に設定すると、複雑さのメトリクスを記録しますstream_logs
:True
に設定すると、コールバックアクションをClearMLパラメータにストリーミングします
ここでは、OpenAI
のコンストラクタにcallbacks
パラメータを渡して、ClearMLCallbackHandler
をセットしています。これにより、OpenAIのモデルリクエストが完了するたびに、その結果がClearMLに自動的に記録されます。
モデルのリクエストとログの記録
最後に、モデルのリクエストを行い、flush_tracker()
メソッドを使ってメトリクスやプロンプトなどの出力をClearMLに記録します。
llm_result = llm.generate(["Tell me a joke", "Tell me a poem"] * 3)
clearml_callback.flush_tracker(langchain_asset=llm, name="simple_sequential")
langchain_asset
: 保存するLangChainのアセット(モデルやエージェントなど)name
: 記録する情報のコンテキストを識別する文字列(ヒント:異なる名前を使用して、異なるモデルの会話を記録します)
llm.generate()
でモデルのリクエストを行った後、flush_tracker()
を呼び出すことで、リクエストの結果がClearMLに記録されます。
まとめ
この記事では、LangChainにClearMLを統合する方法を初心者向けに解説しました。コールバックを使うことで、LangChainのモデルリクエストの結果を自動的にClearMLに記録することができます。
以下の手順でClearMLとLangChainを連携させることができます。
- 必要なパッケージをインストールする
- ClearMLの環境変数を設定する
ClearMLCallbackHandler
を設定し、LangChainのモデルにセットする- モデルのリクエストを行い、
flush_tracker()
メソッドでログを記録する
これらの手順に従うことで、LangChainのアセットやメトリクスをClearMLで簡単に記録し、管理することができます。コールバックを活用することで、モデルの性能や挙動を追跡し、分析するための強力なツールになります。
コメント