LangSmithは、LLMアプリケーションの開発やデバッグを効率化するプラットフォームです。
LangSmithはLLMアプリケーションのログ記録やモデル評価、パフォーマンスの監視ができます。
この記事では、LangSmithのアカウント作成から、APIキーの発行方法、簡単な使い方まで解説しています。
ざっくり言うと
- LangSmithはLLMアプリケーションのログ記録やモデル評価、監視が可能
- LangSmithのアカウント作成、APIキーの発行方法、簡単な使い方を解説
LangSmithとは
LangSmithは、LLMアプリケーションの開発やデバッグを効率化するプラットフォームです。
LangSmithはLLMアプリケーションのログ記録やモデル評価、パフォーマンスの監視ができます。
これによりLLMアプリケーションの品質向上と開発効率の向上が可能になります。
LangSmithのアカウント作成
LangSmithを使用するために、まずアカウント作成をします。
LangSmithの公式ページにアクセスし、「Sign up with email」をクリックします。
「メールアドレス」と「パスワード」を入力し、「Continue」をクリックします。
登録したメールアドレスに認証メールが届きますので「Confirm your email」をクリックします。
LangSmithのAPIキーの設定
LangSmithのAPIキーの設定方法を解説していきます。
LangSmithの公式ページにログインし、サイドバーの「歯車アイコン」をクリックします。
サイドバーの「API Keys」を開き、「Create API Key」ボタンをクリックします。
「Description」に任意の名前を入力し、「Key Type」を選択し、「Create API Key」をクリックします。
作成したAPIキーは「Copy」ボタンでコピーできます。
LangChainの実行環境
LangSmithでは、LangChainでの実行ログを扱いますので、ここではLangChainの環境を構築します。
この記事で用意した実行環境は以下のとおりです。
- GPU:NVIDIA A100 80GB
- GPUメモリ(VRAM):80GB
- OS :Ubuntu 22.04
- Docker
Dockerで環境構築
Dockerを使用してLangChainの環境構築をします
Dockerの使い方は以下の記事をご覧ください。
コンテナにインストールするパッケージは以下のとおりです。
LLMはOllamaのライブラリを使って動かしますので、PyTorchやTransformerは別途インストール不要です。
- CUDA:12.1
- Python:3.10
- ollama
- langchain
- langsmith
- langchain-community
- langchain_core
Ubuntuのコマンドラインで、Dockerfileを作成します。
mkdir langsmith_test
cd langsmith_test
nano Dockerfile
Dockerfileに以下の記述を貼り付けます。
# ベースイメージ(CUDA)の指定
FROM nvidia/cuda:12.1.0-cudnn8-devel-ubuntu22.04
# 必要なパッケージをインストール
RUN apt-get update && apt-get install -y python3-pip python3-venv git nano curl
RUN curl -fsSL https://ollama.com/install.sh | sh
# 作業ディレクトリを設定
WORKDIR /app
# アプリケーションコードをコピー
COPY . /app
# Python仮想環境の作成
RUN python3 -m venv /app/.venv
# 仮想環境をアクティベートするコマンドを.bashrcに追加
RUN echo "source /app/.venv/bin/activate" >> /root/.bashrc
# JupyterLabのインストール
RUN /app/.venv/bin/pip install Jupyter jupyterlab
# LangChain関連のインストール
RUN /app/.venv/bin/pip install ollama langchain langsmith langchain-community langchain_core
# コンテナの起動時にbashを実行
CMD ["/bin/bash"]
docker-compose.ymlでDockerコンテナの設定をします。
docker-compose.ymlのYAMLファイルを作成して開きます。
nano docker-compose.yml
以下のコードをコピーして、YAMLファイルに貼り付けます。
services:
langsmith_test:
build:
context: .
dockerfile: Dockerfile
image: langsmith_test
runtime: nvidia
container_name: langsmith_test
ports:
- "8888:8888"
volumes:
- .:/app/langsmith_test
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
command: >
bash -c '/usr/local/bin/ollama serve & /app/.venv/bin/jupyter lab --ip="*" --port=8888 --NotebookApp.token="" --NotebookApp.password="" --no-browser --allow-root'
Dockerfileからビルドしてコンテナを起動します。
docker compose up
Dockerの起動後にブラウザの検索窓に”localhost:8888″を入力すると、Jupyter Labをブラウザで表示できます。
localhost:8888
環境変数の設定、LLMの設定、チェーンの構築
Dockerコンテナで起動したJupyter Lab上で、LangSmithの環境変数の設定から、LangChainを使ったチェーンの構築まで行います。
LangSmithのAPIに関する環境変数を設定します。
import os
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_ENDPOINT"] = "https://api.smith.langchain.com"
os.environ["LANGCHAIN_PROJECT"] = "langsmith-test"
os.environ["LANGCHAIN_API_KEY"] = "***************************"
os.environ[“LANGCHAIN_TRACING_V2”] = “true”
LangChainのトレーシング機能を有効にします。LLMの実行ログやトレース情報がLangSmithに送信され、後から確認できるようになります。
os.environ[“LANGCHAIN_ENDPOINT”] = “https://api.smith.langchain.com”
LangSmithのAPIエンドポイントを指定します。LangChainがこのエンドポイントにリクエストを送信することで、LangSmithのサービスと通信します。
os.environ[“LANGCHAIN_PROJECT”] = “langsmith-test”
使用するLangSmithプロジェクトの名前を指定します。ログやトレースはこのプロジェクト単位で管理されます。
os.environ[“LANGCHAIN_API_KEY”] = “***************************”
LangSmithで発行したAPIキーを指定します。
日本語LLMモデル「Llama-3-ELYZA-JP-8B-q4_k_m.gguf」をダウンロードします。
!curl -L -o Llama-3-ELYZA-JP-8B-q4_k_m.gguf "https://huggingface.co/elyza/Llama-3-ELYZA-JP-8B-GGUF/resolve/main/Llama-3-ELYZA-JP-8B-q4_k_m.gguf?download=true"
Llama-3-ELYZA-JPについては、別記事で詳しく解説しています。
LLMの実行にはOllamaのツールを使用します。
LLMのモデルがOllama使えるようにプロンプトテンプレートを指定して、モデルを作成します。
import ollama
from langchain_community.chat_models import ChatOllama
modelfile='''
FROM ./Llama-3-ELYZA-JP-8B-q4_k_m.gguf
TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|>
{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
{{ .Response }}<|eot_id|>"""
PARAMETER stop "<|start_header_id|>"
PARAMETER stop "<|end_header_id|>"
PARAMETER stop "<|eot_id|>"
PARAMETER stop "<|reserved_special_token"
'''
ollama.create(model='elyza8b', modelfile=modelfile)
FROM ./Llama-3-ELYZA-JP-8B-q4_k_m.gguf
ダウンロードしたモデルのパスが入ります。
TEMPLATE “””{{ if .System }}<|start_header_id|>system<|end_header_id|>…
モデルで使用するプロンプトテンプレートが入ります。
ollama.create(model=’elyza8b’, modelfile=modelfile)
モデルとプロンプトテンプレートを使ってOllama用のモデルを作成します。model
にはOllamaで呼び出す際に使用する名前をつけられます。
プロンプト、LLM、出力パーサーを処理するチェーンを構築して実行します。
from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
llm = ChatOllama(model="elyza8b", temperature=0.7)
prompt = PromptTemplate(
input_variables=["keyword"],
template="以下のキーワードに関するFAQを作成してください: {keyword}。具体的な質問とそれに対する簡潔な回答を含めてください。"
)
chain = prompt | llm | StrOutputParser()
result = chain.invoke({"keyword":"RPA"})
print(result)
ChatOllama(model=”elyza8b”, temperature=0.7)
ChatOllamaをインスタンス化してLLMモデルを実行できる状態にしています。
PromptTemplate()
input_variables
: プロンプトで使用する変数のリストです。ここでは"keyword"
という変数を指定しています。
template
: 実際のプロンプトのテンプレートです。{keyword}
がプレースホルダーで、実際のキーワードがこの部分に挿入されます。
chain = prompt | llm | StrOutputParser()
プロンプト、LLM、出力パーサーをつなげたチェーンを構築します。プロンプトがLLMに送られ、LLMの応答が文字列として出力されます。
chain.invoke({“keyword”:”RPA”})
指定した入力{"keyword":"RPA"}
)に基づいてチェーンを実行します。
以下のキーワードに関するFAQを作成してください: RPA。
具体的な質問とそれに対する簡潔な回答を含めてください。
RPA(Robotic Process Automation)に関するFAQです。
Q1: RPAとは何ですか?
A1: RPAは、ソフトウェアロボットが人間の操作を自動化する技術です。
Q2: RPAとAIは同じ意味ですか?
A2: いいえ。RPAは主に定型作業の自動化を目的としていますが、AIは機械学習や自然言語処理などを用いて複雑なタスクを実行する技術です。
Q3: RPAで何ができるのですか?
A3: RPAでは、データ入力、帳票作成、メール操作、システム連携などの定型作業を自動化できます。
Q4: RPAは人間の仕事を奪うのではありませんか?
A4: RPAは、人間の判断や創造性が必要な部分を除き、単純で反復的な作業を代替することで生産性向上に貢献します。人間の仕事を奪うことはないと考えられます。
Q5: RPAの導入にはどのようなメリットがありますか?
A5: RPAの導入により、作業効率化、コスト削減、ミス防止が期待できます。
Q6: RPAはセキュアですか?
A6: はい。RPAツールは、セキュリティ対策として認証や暗号化などを実施し、安全に運用することが可能です。
Q7: RPAの学習方法はありますか?
A7: はい。各RPAツールの提供元が公式に提供しているトレーニングや研修プログラムがあり、また、書籍やオンラインコースなどを通じてスキルを身につけることができます。
Q8: RPAはどのような業界で活用されていますか?
A8: RPAは、金融、製造、ヘルスケア、ITなど多くの業界で導入され、生産性向上やコスト削減に貢献しています。
LangSmithでログを確認
LangSmithにログインし、実行ログを確認します。
LangSmithにログインし、トップページから「Projects」を選択します。
環境変数で指定したプロジェクト名を選択します。
各ステップでの実行ログが確認できます。
生成AI・LLMのコストでお困りなら
GPUのスペック不足で生成AIの開発が思うように進まないことはありませんか?
そんなときには、高性能なGPUをリーズナブルな価格で使えるGPUクラウドサービスがおすすめです!
GPUSOROBANは、高性能GPU「NVIDIA H200」を業界最安級の料金で使用することができます。
NVIDIA H200は、生成AI・LLMの計算にかかる時間を大幅に短縮することが可能です。
クラウドで使えるため、大規模な設備投資の必要がなく、煩雑なサーバー管理からも解放されます。