LANGSMITHでのLLMのデバッグとテストの紹介
最近、あらゆる種類のメディアからフラッシュカードを自動的に生成する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でのプロジェクトの管理は、APIキーを介してプラットフォームに接続されているPython SDKでははるかに簡単です。のセットアップ
キーを取得するには、プラットフォームのキーアイコンをクリックして、どこかに安全な場所に保存します。次に、初期化された新しい仮想環境を備えた新しいディレクトリで、.ENVファイルを作成します。内部では、次の2行を貼り付けます:
find_dotenvおよびload_dotenv関数をインポートして、環境変数を読み取り、OSでセットアップします: LANGCHAIN_API_KEY="LangSmith-API-key" OPENAI_API_KEY="Your-OPENAI-key"
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピーpython-dotenv to read environment variables: pip install -U langsmith pip install python-dotenv
ログイン後にコピーログイン後にコピーログイン後にコピークライアントには、Langsmithのプロジェクトと資産を操作するための高レベルのコマンドが含まれています。使用するクライアントの最初のコマンドは、新しいプロジェクトを作成することです。
create_projectが正常に実行された後、Web UIのプロジェクトセクションにリストされているプロジェクトを確認できます。import warnings from dotenv import find_dotenv, load_dotenv warnings.filterwarnings("ignore")
ログイン後にコピーログイン後にコピーログイン後にコピー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"
ログイン後にコピーログイン後にコピーログイン後にコピー次に、別の環境変数を使用してデフォルトとして新しいプロジェクトを設定する必要があります。
さて、プロジェクトにはLLMが必要です。 GPT-3.5 Turboは安価なので行きますが、Langchainで入手可能な他の多くのモデルを使用できます。 Openaiモデルは、Chatopenaiクラスを通じて初期化されていますfrom langsmith import Client # Initialize a client client = Client()
ログイン後にコピーログイン後にコピーログイン後にコピー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からプロジェクトをすばやく確認すると、上記の実行がトレースされている(ログ)が表示されます。
環境変数とクライアントをセットアップすると、ロギングを自動的に有効にしました。ご覧のとおり、私たちはすでに実行についてたくさんのメタデータを持っています。
さらにいくつかのプロンプトを実行しましょう:基本的なテキストsummarizerを既に構築できます。最後の実行の出力を要約してみましょう:python-dotenv to read environment variables: pip install -U langsmith pip install python-dotenv
ログイン後にコピーログイン後にコピーログイン後にコピー素晴らしい、今は最初のデータセットを作成する時が来ました。import warnings from dotenv import find_dotenv, load_dotenv warnings.filterwarnings("ignore")
ログイン後にコピーログイン後にコピーログイン後にコピーLangsmith
で非標識データセットを作成します 「LLMアプリケーション開発ワークフロー」セクションで述べたように、LLMモデル、チェーン、またはエージェントを評価するには、数千のプロンプトを作成または収集する必要があります。だから、上で行ったようにそれらを1つに実行することはベストプラクティスではありません。 このため、Langsmithは3つのタイプのデータセットを提供していますLLMデータセット(LLM):入力と出力は、LLMSによって「完了スタイル」で定義されます-String In、String Out。
チャットデータセット(チャット):これらはLLMチャットから変換され、構造化された入力とシリアル化されたメッセージを使用して定義されたデータセットです。- さあ、それぞれがLLMに単一のフラッシュカードを作成するように依頼する3つの入力を追加しましょう:
- UIのデータセットタブを通過すると、null出力でリストされている各プロンプトが表示されます。
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を使用すると、組み込みの評価者を使用してそのようなチェックを実行できます。 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クラスを使用できます。
上記の上記では、評価者と呼ばれるリストに2つの基準を定義しています。これらの評価者をRUN_ON_DATASET関数の評価パラメーターに渡します:LANGCHAIN_API_KEY="LangSmith-API-key" OPENAI_API_KEY="Your-OPENAI-key"
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピーRUN_ON_DATASETは、提供されたLLMを使用してデータセットですべてのプロンプトを実行し、その場であらゆるタイプの評価を実行するのに役立つ機能です。その結果は、各データセットの専用ページに表示されます。python-dotenv to read environment variables: pip install -U langsmith pip install python-dotenv
ログイン後にコピーログイン後にコピーログイン後にコピー今回は、各プロンプトの一貫性と簡潔さのメトリックがあります。下部には、各メトリックの平均スコアも表示されます。
もちろん、すべての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()
ログイン後にコピーログイン後にコピーログイン後にコピーラベル付きのデータセットの作成
時々、予想される出力、例えばラベル付きデータセットを持つプロンプトのデータセットを作成することを決定することがあります。ラベル付きデータセットをさまざまな形式で作成できますが、おそらく最も一般的なデータセットはCSVファイルです。たとえば、Pytorchの構文に関する5つの質問を含むChatGPTで生成したファイルを次に示します。これからデータセットを作成するには、upload_csv関数を使用できます。
関数には、CSVパスと入力/出力列の名前の3つの必要なパラメーターがあります。アップロードが終了すると、データセットはUI:
に表示されますこのデータセットの前のセクションからカスタム基準を実行しましょう。
データセットページにアクセスして実行をチェックすると、各カスタム基準の平均スコアが表示されます。
自然言語で記述された組み込みおよびカスタム評価者は、ほとんどが無効なデータセット用です。アップロードしたCSVデータセットなどのラベル付きデータセットの場合、Langsmithは、プロンプトに対する応答の正しさを測定するためのより包括的な評価者を提供します。
- context_qa(コンテキストQ&A):正確性を評価しながら、サンプル出力をコンテキストとして使用します
- QA(Q&A):参照出力を使用して「正しい」または「正しくない」と直接A応答をグレーディングするようにLLMに指示します
- cot_qa(chain-of-thought Q&A):Context_qaに似ていますが、この評価者は、判決に到達する前にLLMにチェーンの推論を使用するように強制します。
- 例の最後のものを試してみましょう:
LANGCHAIN_API_KEY="LangSmith-API-key" OPENAI_API_KEY="Your-OPENAI-key"
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピーLangsmith DocsのLangchain Evaluatorsセクションにアクセスして、評価者について詳しく知りましょう。
このチュートリアルを読んだ後に、Langsmithが実際に迅速なエンジニアリングのための複雑なツールであるという印象を受けた場合、あなたは正しいでしょう!現在、Langsmithは、LLMSの指示と出力が実際にあなたが望むものであることを保証するための最良のフレームワークです。 また、生産グレードのLLMアプリケーションを構築するために必要な努力を実現したに違いありません。したがって、LLMプロジェクトの作業中にスムーズな体験にLangsmithを使用してください。
ラングスミスの概念の一部が意味をなさない場合、ラングチェーンの基本が不足している可能性があります。ここにいくつかのリソースがあります:Langchainの迅速なエンジニアリング
langchain
でLLMアプリケーションを構築する方法- langchain docs
- langsmith docs
以上がLANGSMITHでのLLMのデバッグとテストの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











メタのラマ3.2:マルチモーダルとモバイルAIの前進 メタは最近、ラマ3.2を発表しました。これは、モバイルデバイス向けに最適化された強力なビジョン機能と軽量テキストモデルを特徴とするAIの大幅な進歩です。 成功に基づいてo

ねえ、忍者をコーディング!その日はどのようなコーディング関連のタスクを計画していますか?このブログにさらに飛び込む前に、コーディング関連のすべての問題について考えてほしいです。 終わり? - &#8217を見てみましょう

今週のAIの風景:進歩、倫理的考慮、規制の議論の旋風。 Openai、Google、Meta、Microsoftのような主要なプレーヤーは、画期的な新しいモデルからLEの重要な変化まで、アップデートの急流を解き放ちました

Shopify CEOのTobiLütkeの最近のメモは、AIの能力がすべての従業員にとって基本的な期待であると大胆に宣言し、会社内の重大な文化的変化を示しています。 これはつかの間の傾向ではありません。これは、pに統合された新しい運用パラダイムです

導入 鮮やかな絵画や彫刻に囲まれたアートギャラリーを歩くことを想像してください。さて、各ピースに質問をして意味のある答えを得ることができたらどうでしょうか?あなたは尋ねるかもしれません、「あなたはどんな話を言っていますか?

導入 Openaiは、待望の「Strawberry」アーキテクチャに基づいて新しいモデルをリリースしました。 O1として知られるこの革新的なモデルは、推論能力を強化し、問題を通じて考えられるようになりました

SQLの変更テーブルステートメント:データベースに列を動的に追加する データ管理では、SQLの適応性が重要です。 その場でデータベース構造を調整する必要がありますか? Alter Tableステートメントはあなたの解決策です。このガイドの詳細は、コルを追加します

スタンフォード大学ヒト指向の人工知能研究所によってリリースされた2025年の人工知能インデックスレポートは、進行中の人工知能革命の良い概要を提供します。 4つの単純な概念で解釈しましょう:認知(何が起こっているのかを理解する)、感謝(利益を見る)、受け入れ(顔の課題)、責任(責任を見つける)。 認知:人工知能はどこにでもあり、急速に発展しています 私たちは、人工知能がどれほど速く発展し、広がっているかを強く認識する必要があります。人工知能システムは絶えず改善されており、数学と複雑な思考テストで優れた結果を達成しており、わずか1年前にこれらのテストで惨めに失敗しました。 2023年以来、複雑なコーディングの問題や大学院レベルの科学的問題を解決することを想像してみてください
