freks blog

about

LangSmithを使ってみる

created: 2024-05-01
おすすめ記事: 出会ってよかったプログラマー本

LangChainでRAGを試す でRAGをつかってみましたが、途中何やってるか見たかったので LangSmith を使ってみました
LangChain + LangSmith の組み合わせでやります

Getting started with LangSmith | 🦜️🛠️ LangSmith は、LangChainを使わないときのものです
LangSmith Walkthrough | 🦜️🔗 LangChain が参考になります

LangSmithを動かしてみる

LangSmith のサイトでアカウントを作ってAPI keyを取得します

必要な環境変数へセットします

export LANGCHAIN_TRACING_V2="true"
export LANGCHAIN_API_KEY = "<さっき取得したAPI key>"
export LANGCHAIN_PROJECT = "<プロジェクト名>"

これがLangSmithに必要です LANGCHAIN_PROJECT は省略すると、default になります

LangChainを動かす場合は、これだけでいいです

試しに

import os
from langchain_openai import AzureChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_community.callbacks import get_openai_callback

os.environ["AZURE_OPENAI_API_KEY"] = os.getenv("AZURE_OPENAI_API_KEY", "")
os.environ["AZURE_OPENAI_ENDPOINT"] = os.getenv("AZURE_OPENAI_ENDPOINT", "")
os.environ["AZURE_OPENAI_API_VERSION"] = "2024-02-01"
os.environ["AZURE_OPENAI_CHAT_DEPLOYMENT_NAME"] = "gpt-35-turbo"
os.environ["AZURE_OPENAI_CHAT_MODEL_VERSION"] = "0613"

llm = AzureChatOpenAI(
    azure_deployment=os.environ["AZURE_OPENAI_CHAT_DEPLOYMENT_NAME"],
    api_version=os.environ["AZURE_OPENAI_API_VERSION"],
    model_version=os.environ["AZURE_OPENAI_CHAT_MODEL_VERSION"],
)

prompt = ChatPromptTemplate.from_messages(
    [
        (
            "system",
            "You are a science guy. Response in japanese.",
        ),
        ("user", "{input}"),
    ]
)
output_parser = StrOutputParser()

chain = prompt | llm | output_parser

with get_openai_callback() as cb:
    message = chain.invoke({"input": "Tell me a joke"})
    print(message)
    print(f"Total Cost (USD): ${format(cb.total_cost, '.6f')}")

を動かすと、LangSmith のサイトで

LangSmith debug log

をいった感じで何やっているかが確認できます

LangSmithにログを送りたくなくなったら

export LANGCHAIN_TRACING_V2="false"

しておくといいです
RAGを実行させると途中で裏でやってたことが見れるので便利です

他にもデータセットを保存したり、LLMの結果を検証したりする機能があるようです

まとめ

さくっと便利なものが使えていいですね

PR

Pythonプログラミングパーフェクトマスター

Pythonプログラミングパーフェクトマスター

このリンクは、アフィリエイトリンクです


Amazonのアソシエイトとして、blog.freks.jp は適格販売により収入を得ています。
This site is managed by freks