最近、あらゆる種類のメディアからフラッシュカードを自動的に生成するAIプラットフォームを見つけました。私は間隔の繰り返しでコンセプトを暗記するのが大好きなので、すぐにXgboostチュートリアルをアップロードし、AIに50のフラッシュカードを作成するように依頼しました。
しかし、私はがっかりしました。ほとんどの質問は簡単すぎて、コード構文に関するものはほとんどありませんでした。さらに奇妙なことに、質問の10%は同一であり、完全に範囲外でした。「フランスの首都は何ですか?」これらのタイプの間違いは、AIサービスによって生成された出力の適切な評価と検証の欠如を示唆しています。たぶん彼らはラングスミスについて知らなかった。
Langsmithは、LLMアプリケーションをテスト、デバッグ、評価するための本格的なプラットフォームです。おそらく、その最も重要な機能は、LLM出力評価とパフォーマンス監視です。このチュートリアルでは、フレームワークが動作していることを確認し、独自のプロジェクトに適用するテクニックを学びます。
始めましょう!なぜラングスミス?
上で述べたように、Langsmithは大規模な言語アプリケーションを評価するための包括的なプラットフォームです。以下は、その機能のいくつかと、彼らがもたらす具体的な現実世界の利点を紹介します。
プログラマーは、数時間ではなく数分でラングスミスを実験することができます。これは、小さなチームまたはソロ開発者が週末にAIアプリケーションをプロトタイプすることができ、月曜日までに有料サービスを出荷する可能性があることを意味します。
品質保証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モデルにはたくさんのデータが必要なように、物事をテストするために多くのプロンプトが必要であると考えてください。
1。開発
この段階では、Langchainなどのフレームワークを使用して、アプリケーションの岩盤をプロトタイプします。フラッシュカードジェネレータープロジェクトの場合、プロトタイプには、ベンダーから選択したLLMの上に複数のコンポーネントが含まれる場合があります。たとえば、次のようにチェーンする必要がある場合があります
レトリーバー:検索エンジンAPI、Webスクレーパー
ベクトルストア
実行可能なアプリケーションを取得したら、REST APIとして展開できます。 REST APIは、基本的に既存のLangchainチェーンまたはエージェントをHTTPSリンクに変換します。これで、デスクトップアプリケーションのようにサービスのユーザーインターフェイスを構築します。
今のところ、これを行う簡単な方法はありませんが、Langchain開発者はLangserveをリリースしようとしています。これはFastapiに統合されます(それはどれほど素晴らしいでしょうか?)。ドキュメントのこのページからスニークピークをご覧ください。さあ、ついにラングスミスをいじくり始めましょう。
Langsmith Platformの概要
2つの主要なセクションはプロジェクトとデータセットとテストであり、両方のセクションをPython SDKを介して操作できます。プラットフォームには、展開と注釈のキュー用のタブもありますが、この記事の範囲を超えています。
Langsmith Python SDK のセットアップ
キーを取得するには、プラットフォームのキーアイコンをクリックして、どこかに安全な場所に保存します。次に、初期化された新しい仮想環境を備えた新しいディレクトリで、.ENVファイルを作成します。内部では、次の2行を貼り付けます:
さて、コードを書く時間:
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")
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()
最初の実行をしましょう:
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からプロジェクトをすばやく確認すると、上記の実行がトレースされている(ログ)が表示されます。
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チャットから変換され、構造化された入力とシリアル化されたメッセージを使用して定義されたデータセットです。まず、出力なしでキー価値データセットを作成する方法を見てみましょう。クライアントのcreate_dataset関数を使用します:
さあ、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を使用すると、組み込みの評価者を使用してそのようなチェックを実行できます。 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"
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")
実行をチェックすると、各プロンプトの下で定義したカスタム基準が表示されます。あなたが浮かんでいる場合、あなたは次のように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()
ラベル付きのデータセットの作成
これからデータセットを作成するには、upload_csv関数を使用できます。
このデータセットの前のセクションからカスタム基準を実行しましょう。
データセットページにアクセスして実行をチェックすると、各カスタム基準の平均スコアが表示されます。
自然言語で記述された組み込みおよびカスタム評価者は、ほとんどが無効なデータセット用です。アップロードしたCSVデータセットなどのラベル付きデータセットの場合、Langsmithは、プロンプトに対する応答の正しさを測定するためのより包括的な評価者を提供します。
cotqa Criterionは、以下のGIFに示すように、コンテキスト精度と呼ばれるスコアを返します(UIにも):
LANGCHAIN_API_KEY="LangSmith-API-key" OPENAI_API_KEY="Your-OPENAI-key"
Langsmith DocsのLangchain Evaluatorsセクションにアクセスして、評価者について詳しく知りましょう。
このチュートリアルを読んだ後に、Langsmithが実際に迅速なエンジニアリングのための複雑なツールであるという印象を受けた場合、あなたは正しいでしょう!現在、Langsmithは、LLMSの指示と出力が実際にあなたが望むものであることを保証するための最良のフレームワークです。 また、生産グレードのLLMアプリケーションを構築するために必要な努力を実現したに違いありません。したがって、LLMプロジェクトの作業中にスムーズな体験にLangsmithを使用してください。
ラングスミスの概念の一部が意味をなさない場合、ラングチェーンの基本が不足している可能性があります。ここにいくつかのリソースがあります:Langchainのコンテキスト対応チャットボットを構築
Langchainの迅速なエンジニアリング
langchain
でLLMアプリケーションを構築する方法以上がLANGSMITHでのLLMのデバッグとテストの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。