ホームページ >テクノロジー周辺機器 >AI >LANGSMITHでのLLMのデバッグとテストの紹介

LANGSMITHでのLLMのデバッグとテストの紹介

Joseph Gordon-Levitt
Joseph Gordon-Levittオリジナル
2025-03-08 09:35:13158ブラウズ

最近、あらゆる種類のメディアからフラッシュカードを自動的に生成するAIプラットフォームを見つけました。私は間隔の繰り返しでコンセプトを暗記するのが大好きなので、すぐにXgboostチュートリアルをアップロードし、AIに50のフラッシュカードを作成するように依頼しました。

しかし、私はがっかりしました。ほとんどの質問は簡単すぎて、コード構文に関するものはほとんどありませんでした。さらに奇妙なことに、質問の10%は同一であり、完全に範囲外でした。「フランスの首都は何ですか?」

これらのタイプの間違いは、AIサービスによって生成された出力の適切な評価と検証の欠如を示唆しています。たぶん彼らはラングスミスについて知らなかった。

Langsmithは、LLMアプリケーションをテスト、デバッグ、評価するための本格的なプラットフォームです。おそらく、その最も重要な機能は、LLM出力評価とパフォーマンス監視です。このチュートリアルでは、フレームワークが動作していることを確認し、独自のプロジェクトに適用するテクニックを学びます。

始めましょう!

なぜラングスミス?

上で述べたように、Langsmithは大規模な言語アプリケーションを評価するための包括的なプラットフォームです。以下は、その機能のいくつかと、彼らがもたらす具体的な現実世界の利点を紹介します。

クイックセットアップ

プログラマーは、数時間ではなく数分でラングスミスを実験することができます。これは、小さなチームまたはソロ開発者が週末にAIアプリケーションをプロトタイプすることができ、月曜日までに有料サービスを出荷する可能性があることを意味します。

品質保証

厳密な評価ツールを使用して、企業はAIリリースの欠陥の恥ずかしさとコストを回避できます(紹介で示した例のように)。 Langsmithを使用すると、LLMの出力を、有用性、一貫性、女性嫌悪、または「出力クリシェの内容ですか?」などの自然言語のカスタム評価などの組み込み基準に対して確認できます。または、フラッシュカードの世代の場合、「カードにはコーディングの質問が含まれていますか?」

リアルタイムの監視と視覚化

LangsmithはTracesを使用して、LLM実行のほぼすべての側面を記録します。これらには、レイテンシ、トークンカウント、ランの価格、あらゆる種類のメタデータなどのメトリックが含まれます。 Web UIを使用すると、エラー率、遅延、日付、または自然言語を使用したテキストコンテンツに基づいて、実行をすばやくフィルタリングできます。これは、たとえば、AIの家庭教師が実際の学生への応答に不平を言っている場合、数時間で修正をプッシュできることを意味します。 Langchainとの統合

Langchainは、LLMSの開発段階に特に焦点を当てたLangsmithの親フレームワークです。複数のLLM(エージェント)をチェーンし、YouTube、Google検索などの他のAPIと統合するためのモジュラーソフトウェア設計を提供します。 Langsmithは上のチェリーであり、Langchainで構築されたプロトタイプが強力な評価と監視ツールを使用して期待どおりに機能するようにします。

LANGCHAINチュートリアルを使用してLLMアプリケーションをチェックして、Langchainの詳細をご覧ください。

データセット

Langsmithのもう1つの優れた機能はデータセットです。それらは、展開前に一連の標準化された例に対してラングチェーンチェーン、エージェント、またはモデルを改善するために使用できます。たとえば、2つの列を含むCSVファイルがある場合があります。特定の形式のフラッシュカードの質問と回答です。 このファイルを参照データセットに変換することにより、LLMSに、前述の品質保証メトリックを使用して独自の出力を評価するよう指示できます。

これらの機能はすべて、例から1つずつ表示されます。

llmアプリケーション開発ワークフロー

MLアプリ開発では、データ、トレーニング、微調整、テスト、およびモデルの展開を収集します。手順は明確に定義されています。ただし、LLMアプリを使用すると、ベンダーの既製モデルから始めることがよくあります。微調整?それは高価になる可能性があります。したがって、適切なプロンプトの作成に重点を置くことができます。これは、LLMアプリに適切な質問をすることです。良いMLモデルにはたくさんのデータが必要なように、物事をテストするために多くのプロンプトが必要であると考えてください。

しかし、プロンプトでは、数字ではなく、出入りするテキストを扱っています。したがって、MSEやエントロピーなどのエラーや精度を測定する通常の方法は、ここでは機能しません。さらに、評価のためにすべての入力と出力を読むことを想像してください。評価するために何千ものプロンプトがある場合は数日かかります。

したがって、これらのプロンプトを効率的に作成してテストして、手動チェックでownれなくLLMアプリがどれだけうまく機能しているかを確認するワークフローが必要です。これがどのように見えるかもしれませんか:

1。開発

この段階では、Langchainなどのフレームワークを使用して、アプリケーションの岩盤をプロトタイプします。フラッシュカードジェネレータープロジェクトの場合、プロトタイプには、ベンダーから選択したLLMの上に複数のコンポーネントが含まれる場合があります。たとえば、次のようにチェーンする必要がある場合があります

レトリーバー:検索エンジンAPI、Webスクレーパー

ドキュメントローダー:ファイル入力 - PDF、テキスト、CSV、JSON、クリップボード、YouTube、検索など。

チャットローダー

ベクトルストア
  • モデルの埋め込み
  • コールバック
  • など(Langchainドキュメントのこのページから追加できるコンポーネントの種類を参照)。ただし、一般的な高レベルのタスクにLangchainが提供する既製のチェーンを使用して、開発時間を大幅に削減できます。
  • 2。生産
  • この段階では、できるだけ多くのシナリオに対してアプリケーションをテストします。これは、追加されたすべてのコンポーネントがうまく機能し、うまく連鎖し、一貫した高品質の出力を生成する必要があることを意味します。 LLMが非決定的である場合(同じ入力に対して同じ出力を生成しない)、追加されたコンポーネントの複雑さを考慮すると、この段階でほとんどの時間を費やします。ラングスミスは、その時間をできるだけ短くすることを唯一の目的で開発しました。これについては、チュートリアル全体で詳しく説明します。
  • 3。デプロイ

    実行可能なアプリケーションを取得したら、REST APIとして展開できます。 REST APIは、基本的に既存のLangchainチェーンまたはエージェントをHTTPSリンクに変換します。これで、デスクトップアプリケーションのようにサービスのユーザーインターフェイスを構築します。

    今のところ、これを行う簡単な方法はありませんが、Langchain開発者はLangserveをリリースしようとしています。これはFastapiに統合されます(それはどれほど素晴らしいでしょうか?)。ドキュメントのこのページからスニークピークをご覧ください。

    さあ、ついにラングスミスをいじくり始めましょう。

    Langsmith Platformの概要

    Web UIの理解から始めます。 Smith.langchain.comリンクから入手できます。アクセスするには、現在クローズドベータ版であるため、サインアップしてWaitListからクリアされる必要があります。

    しかし、あなたが入ると、ランディングページは次のようになります:

    2つの主要なセクションはプロジェクトとデータセットとテストであり、両方のセクションをPython SDKを介して操作できます。プラットフォームには、展開と注釈のキュー用のタブもありますが、この記事の範囲を超えています。 Langsmith Python SDK LANGSMITHでのLLMのデバッグとテストの紹介のセットアップ

    Langsmithでのプロジェクトの管理は、APIキーを介してプラットフォームに接続されているPython SDKでははるかに簡単です。

    キーを取得するには、プラットフォームのキーアイコンをクリックして、どこかに安全な場所に保存します。次に、初期化された新しい仮想環境を備えた新しいディレクトリで、.ENVファイルを作成します。内部では、次の2行を貼り付けます:

    次に、ターミナルで、次のコマンドを実行してLangsmithとPython-Dotenvをインストールして環境変数を読み取ります。

    さて、コードを書く時間:

    find_dotenvおよびload_dotenv関数をインポートして、環境変数を読み取り、OSでセットアップします:
    LANGCHAIN_API_KEY="LangSmith-API-key"
    OPENAI_API_KEY="Your-OPENAI-key"

    langchain_tracing_v2をtrueに設定すると、LLMのデバッグに不可欠なトレース(ロギング)を有効にします。その後、クライアントを初期化してLangsmithプラットフォームと話をします。
    python-dotenv to read environment variables:
    pip install -U langsmith
    pip install python-dotenv

    クライアントには、Langsmithのプロジェクトと資産を操作するための高レベルのコマンドが含まれています。使用するクライアントの最初のコマンドは、新しいプロジェクトを作成することです。

    import warnings
    
    from dotenv import find_dotenv, load_dotenv
    
    warnings.filterwarnings("ignore")
    
    create_projectが正常に実行された後、Web UIのプロジェクトセクションにリストされているプロジェクトを確認できます。

    import os
    
    load_dotenv(find_dotenv())
    os.environ["LANGCHAIN_API_KEY"] = str(os.getenv("LANGCHAIN_API_KEY"))
    os.environ["LANGCHAIN_TRACING_V2"] = "true"
    os.environ["LANGCHAIN_ENDPOINT"] = "https://api.smith.langchain.com"
    

    次に、別の環境変数を使用してデフォルトとして新しいプロジェクトを設定する必要があります。

    from langsmith import Client
    
    # Initialize a client
    client = Client()
    
    さて、プロジェクトにはLLMが必要です。 GPT-3.5 Turboは安価なので行きますが、Langchainで入手可能な他の多くのモデルを使用できます。 Openaiモデルは、Chatopenaiクラスを通じて初期化されています

    最初の実行をしましょう:
    import uuid
    
    # Create id
    uid = uuid.uuid4()
    # Create a unique name
    PROJECT_NAME = "flashcards-generator-" + str(uid)
    # Create the project
    session = client.create_project(
       project_name=PROJECT_NAME,
       description="A project that generates flashcards from user input",
    )
    
    LANGCHAIN_API_KEY="LangSmith-API-key"
    OPENAI_API_KEY="Your-OPENAI-key"

    UIからプロジェクトをすばやく確認すると、上記の実行がトレースされている(ログ)が表示されます。

    LANGSMITHでのLLMのデバッグとテストの紹介

    環境変数とクライアントをセットアップすると、ロギングを自動的に有効にしました。ご覧のとおり、私たちはすでに実行についてたくさんのメタデータを持っています。

    LANGSMITHでのLLMのデバッグとテストの紹介

    さらにいくつかのプロンプトを実行しましょう:

    python-dotenv to read environment variables:
    pip install -U langsmith
    pip install python-dotenv
    基本的なテキストsummarizerを既に構築できます。最後の実行の出力を要約してみましょう:

    import warnings
    
    from dotenv import find_dotenv, load_dotenv
    
    warnings.filterwarnings("ignore")
    
    素晴らしい、今は最初のデータセットを作成する時が来ました。

    Langsmith

    で非標識データセットを作成します 「LLMアプリケーション開発ワークフロー」セクションで述べたように、LLMモデル、チェーン、またはエージェントを評価するには、数千のプロンプトを作成または収集する必要があります。だから、上で行ったようにそれらを1つに実行することはベストプラクティスではありません。 このため、Langsmithは3つのタイプのデータセットを提供しています

    Key-Value(KV) - デフォルト:入力を任意のキー値のペアとして定義します。それらは、複数の入力を必要とするチェーンやエージェントを評価したり、複数の出力を返したりする場合に役立ちます。

    LLMデータセット(LLM):入力と出力は、LLMSによって「完了スタイル」で定義されます-String In、String Out。

    チャットデータセット(チャット):これらはLLMチャットから変換され、構造化された入力とシリアル化されたメッセージを使用して定義されたデータセットです。

    まず、出力なしでキー価値データセットを作成する方法を見てみましょう。クライアントのcreate_dataset関数を使用します:
    • さあ、それぞれがLLMに単一のフラッシュカードを作成するように依頼する3つの入力を追加しましょう:
    • UIのデータセットタブを通過すると、null出力でリストされている各プロンプトが表示されます。

    さあ、run_on_dataset関数を使用して、すべてのプロンプトを単一のコードで実行してみましょう:
    import os
    
    load_dotenv(find_dotenv())
    os.environ["LANGCHAIN_API_KEY"] = str(os.getenv("LANGCHAIN_API_KEY"))
    os.environ["LANGCHAIN_TRACING_V2"] = "true"
    os.environ["LANGCHAIN_ENDPOINT"] = "https://api.smith.langchain.com"
    

    実行が終了すると、データセットページにリストされます。これがどのように見えるかです:
    from langsmith import Client
    
    # Initialize a client
    client = Client()
    

    LANGSMITHでのLLMのデバッグとテストの紹介非標識データセットでテスト実行を行いました。これは、プロンプトの例を備えたデータセットですが、出力の例はありません。私たちのテストは、単に各プロンプトに対する応答を生成しましたが、何も評価しませんでした。ただし、「出力は役に立ちますか?」などの基本的なチェックを実行したいと思います。または「応答は短くても長いですか?

    Langsmithを使用すると、組み込みの評価者を使用してそのようなチェックを実行できます。 LANGSMITHのLLMSを評価

    import uuid
    
    # Create id
    uid = uuid.uuid4()
    # Create a unique name
    PROJECT_NAME = "flashcards-generator-" + str(uid)
    # Create the project
    session = client.create_project(
       project_name=PROJECT_NAME,
       description="A project that generates flashcards from user input",
    )
    

    データセットにある3つのプロンプトを使用して簡潔さとコヒーレンスの評価を実行するには、runevalconfigクラスを使用できます。

    LANGCHAIN_API_KEY="LangSmith-API-key"
    OPENAI_API_KEY="Your-OPENAI-key"
    上記の上記では、評価者と呼ばれるリストに2つの基準を定義しています。これらの評価者をRUN_ON_DATASET関数の評価パラメーターに渡します:

    python-dotenv to read environment variables:
    pip install -U langsmith
    pip install python-dotenv
    RUN_ON_DATASETは、提供されたLLMを使用してデータセットですべてのプロンプトを実行し、その場であらゆるタイプの評価を実行するのに役立つ機能です。その結果は、各データセットの専用ページに表示されます。

    LANGSMITHでのLLMのデバッグとテストの紹介今回は、各プロンプトの一貫性と簡潔さのメトリックがあります。下部には、各メトリックの平均スコアも表示されます。

    すべての組み込みの基準のリストを表示するには、以下のスニペットを実行します。

    ラングスミスでカスタム評価者を書くことは、ラベル付けされていないデータセットのために

    もちろん、すべてのLLMユースケースを基本的な評価者で確認できるわけではありません。たとえば、フラッシュカードにコーディングの質問が含まれているかどうかを確認する評価者はありません。したがって、私たちはそれをよりよく定義します:

    import warnings
    
    from dotenv import find_dotenv, load_dotenv
    
    warnings.filterwarnings("ignore")
    

    自然言語でカスタム基準を渡すために、{“ Criteria_Name”:「条件を確認する」} criteriaクラスに渡すだけです。上記では、2つの追加の評価者を作成しているため、Langsmithはデータセットのプロンプトによって生成された出力の上に2つの追加のプロンプトを実行します。

    実行をチェックすると、各プロンプトの下で定義したカスタム基準が表示されます。あなたが浮かんでいる場合、あなたは次のようにLLMの理由を得るでしょう:

    import os
    
    load_dotenv(find_dotenv())
    os.environ["LANGCHAIN_API_KEY"] = str(os.getenv("LANGCHAIN_API_KEY"))
    os.environ["LANGCHAIN_TRACING_V2"] = "true"
    os.environ["LANGCHAIN_ENDPOINT"] = "https://api.smith.langchain.com"
    

    from langsmith import Client
    
    # Initialize a client
    client = Client()
    

    すべてのプロンプトの評価結果をチェックすることにより、私たちの基準が予想どおりに評価されていないことがわかります。だから、ここに考慮すべきことがあります - あなたは彼らが正しいことを確認するためにあなたの基準を促す必要があります。

    ラベル付きのデータセットの作成LANGSMITHでのLLMのデバッグとテストの紹介

    時々、予想される出力、例えばラベル付きデータセットを持つプロンプトのデータセットを作成することを決定することがあります。ラベル付きデータセットをさまざまな形式で作成できますが、おそらく最も一般的なデータセットはCSVファイルです。たとえば、Pytorchの構文に関する5つの質問を含むChatGPTで生成したファイルを次に示します。

    LANGSMITHでのLLMのデバッグとテストの紹介

    これからデータセットを作成するには、upload_csv関数を使用できます。

    関数には、CSVパスと入力/出力列の名前の3つの必要なパラメーターがあります。アップロードが終了すると、データセットはUI:

    に表示されます

    LANGSMITHでのLLMのデバッグとテストの紹介このデータセットの前のセクションからカスタム基準を実行しましょう。

    データセットページにアクセスして実行をチェックすると、各カスタム基準の平均スコアが表示されます。

    LANGSMITHでのLLMのデバッグとテストの紹介

    ラベル付きデータセットの評価

    自然言語で記述された組み込みおよびカスタム評価者は、ほとんどが無効なデータセット用です。アップロードしたCSVデータセットなどのラベル付きデータセットの場合、Langsmithは、プロンプトに対する応答の正しさを測定するためのより包括的な評価者を提供します。

      context_qa(コンテキストQ&A):正確性を評価しながら、サンプル出力をコンテキストとして使用します
    • QA(Q&A):参照出力を使用して「正しい」または「正しくない」と直接A応答をグレーディングするようにLLMに指示します
    • cot_qa(chain-of-thought Q&A):Context_qaに似ていますが、この評価者は、判決に到達する前にLLMにチェーンの推論を使用するように強制します。
    • 例の最後のものを試してみましょう:

    cotqa Criterionは、以下のGIFに示すように、コンテキスト精度と呼ばれるスコアを返します(UIにも):
    LANGCHAIN_API_KEY="LangSmith-API-key"
    OPENAI_API_KEY="Your-OPENAI-key"

    LANGSMITHでのLLMのデバッグとテストの紹介Langsmith DocsのLangchain Evaluatorsセクションにアクセスして、評価者について詳しく知りましょう。

    結論

    このチュートリアルを読んだ後に、Langsmithが実際に迅速なエンジニアリングのための複雑なツールであるという印象を受けた場合、あなたは正しいでしょう!現在、Langsmithは、LLMSの指示と出力が実際にあなたが望むものであることを保証するための最良のフレームワークです。 また、生産グレードのLLMアプリケーションを構築するために必要な努力を実現したに違いありません。したがって、LLMプロジェクトの作業中にスムーズな体験にLangsmithを使用してください。

    ラングスミスの概念の一部が意味をなさない場合、ラングチェーンの基本が不足している可能性があります。ここにいくつかのリソースがあります:

    データエンジニアリングのためのLangchainへのイントロ

    Langchainのコンテキスト対応チャットボットを構築

    Langchainの迅速なエンジニアリング

    langchain

    でLLMアプリケーションを構築する方法
      langchain docs
    • langsmith docs

以上がLANGSMITHでのLLMのデバッグとテストの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。