国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ ウェブフロントエンド jsチュートリアル LLM アプリケーションのテスト: SDK のモックと直接 HTTP リクエストにおける不運

LLM アプリケーションのテスト: SDK のモックと直接 HTTP リクエストにおける不運

Dec 04, 2024 am 11:03 AM

Testing LLM Applications: Misadventures in Mocking SDKs vs Direct HTTP Requests

導(dǎo)入

このブログは、タスクを完了するまでの手順を順を追って説明する他のブログとは違うということを前置きさせていただきます。むしろ、これは、プロジェクト gimme_readme にテストを追加しようとして遭遇した課題と、その過程で LLM を利用したアプリケーションのテストについて學んだことを反映したものです。

コンテキスト

今週、オープンソース開発のクラスメートと私は、大規(guī)模言語モデル (LLM) を組み込んだコマンドライン ツールにテストを追加するという任務(wù)を與えられました。最初は簡単そうに見えましたが、予想していなかった複雑なテストのウサギの穴に私を?qū)Г蓼筏俊?/p>

私のテストの旅

最初のアプローチ

初めて gimme_readme を構(gòu)築したとき、Jest.js を使用していくつかの基本的なテストを追加しました。これらのテストは非常に単純で、主に次の點に焦點を當てていました。

  • 関數(shù)の出力を検証する
  • 基本的なエラー処理の確認
  • 単純なユーティリティ関數(shù)のテスト

これらのテストはある程度の範囲をカバーしましたが、アプリケーションの最も重要な部分の 1 つである LLM インタラクションをテストしていませんでした。

課題: LLM インタラクションのテスト

より包括的なテストを追加しようとしたとき、アプリケーションが LLM とどのように通信するかについて興味深いことに気づきました。當初、私は Nock.js を使用して、これらの言語モデルへの HTTP リクエストを模擬できると考えました。結(jié)局のところ、Nock が得意とするのは、テストのために HTTP リクエストをインターセプトしてモックすることです。

しかし、私が LLM を使用している方法では、Nock を使用してテストを書くのが難しくなっていることがわかりました。

SDK とダイレクト HTTP リクエストのジレンマ

ここからが興味深いところです。私のアプリケーションは、Google の Gemini や Groq などの LLM サービスによって提供される公式 SDK クライアントを使用します。これらの SDK は、すべての HTTP 通信をバックグラウンドで処理する抽象化レイヤーとして機能します。これにより、コードがよりクリーンになり、運用環(huán)境での作業(yè)が容易になりますが、興味深いテスト上の課題が生じます。

LLM 機能を?qū)g裝するには、次の 2 つのアプローチを検討してください。

// Approach 1: Using SDK
const groq = new Groq({ apiKey });
const response = await groq.chat.completions.create({
  messages: [{ role: "user", content: prompt }],
  model: "mixtral-8x7b-32768"
});

// Approach 2: Direct HTTP requests
const response = await fetch('https://api.groq.com/v1/completions', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    messages: [{ role: "user", content: prompt }],
    model: "mixtral-8x7b-32768"
  })
});

SDK アプローチはよりクリーンで、開発者エクスペリエンスが向上しますが、Nock のような従來の HTTP モック ツールの有用性が低くなります。 HTTP リクエストは SDK 內(nèi)で発生するため、Nock による傍受が困難になります。

學んだ教訓

  1. 早期にテスト戦略を検討する: SDK と直接 HTTP リクエストのどちらを選択する場合は、実裝をテストする方法を検討してください。場合によっては、実稼働コードが「よりクリーン」になると、テストがより困難になる場合があります。

  2. SDK テストにはさまざまなツールが必要です: SDK を使用する場合、HTTP レベルではなく SDK レベルでモックする必要があります。これは次のことを意味します:

    • SDK クライアント全體をモックする
    • HTTP リクエストではなく SDK のインターフェースに焦點を當てます
    • HTTP インターセプターの代わりに Jest のモジュール モック機能を使用する
  3. 利便性とテスト容易性のバランス: SDK は優(yōu)れた開発者エクスペリエンスを提供しますが、特定のテスト手法をより困難にする可能性があります。アプリケーションを設(shè)計する際には、このトレードオフを考慮する価値があります。

今後の展開

テストの課題はまだ完全には解決していませんが、この経験から、SDK を介した外部サービスに依存するアプリケーションのテストについて貴重な教訓を得ることができました。同様のアプリケーションを構(gòu)築している人には、以下をお勧めします。

  1. SDK と直接 API 呼び出しのどちらかを選択する場合は、テスト戦略を考慮してください
  2. SDK を使用する場合は、HTTP レベルではなく SDK レベルでモックすることを計畫してください
  3. SDK をテストしやすくするために、SDK の周囲に薄いラッパーを作成することを検討してください
  4. プロジェクトに取り組む他の人のためにテストのアプローチを文書化します

結(jié)論

LLM アプリケーションのテストには、特に SD??K などの最新の開発の利便性と徹底的なテストの必要性のバランスを取る場合に、特有の課題が伴います。私はまだ gimme_readme のテスト カバレッジの改善に取り組んでいますが、この経験により、外部サービスや SDK が関與する將來のプロジェクトでのテストへのアプローチ方法についてより深く理解できるようになりました。

LLM SDK を使用するアプリケーションをテストするときに、同様の課題に遭遇した人はいますか?コメントであなたの経験や解決策をぜひお聞かせください!

以上がLLM アプリケーションのテスト: SDK のモックと直接 HTTP リクエストにおける不運の詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Java vs. JavaScript:混亂を解消します Java vs. JavaScript:混亂を解消します Jun 20, 2025 am 12:27 AM

JavaとJavaScriptは異なるプログラミング言語であり、それぞれ異なるアプリケーションシナリオに適しています。 Javaは大規(guī)模なエンタープライズおよびモバイルアプリケーション開発に使用されますが、JavaScriptは主にWebページ開発に使用されます。

JavaScriptコメント:短い説明 JavaScriptコメント:短い説明 Jun 19, 2025 am 12:40 AM

JavaScriptcommentsEareEssentialential-formaining、およびGuidingCodeexecution.1)single-linecommentseared forquickexplanations.2)多LinecommentsexplaincomplexlogiCorprovidededocumentation.3)clarifyspartsofcode.bestpractic

JSで日付と時間を操作する方法は? JSで日付と時間を操作する方法は? Jul 01, 2025 am 01:27 AM

JavaScriptで日付と時間を処理する場合は、次の點に注意する必要があります。1。日付オブジェクトを作成するには多くの方法があります。 ISO形式の文字列を使用して、互換性を確保することをお勧めします。 2。時間情報を取得および設(shè)定して、メソッドを設(shè)定でき、月は0から始まることに注意してください。 3.手動でのフォーマット日付には文字列が必要であり、サードパーティライブラリも使用できます。 4.ルクソンなどのタイムゾーンをサポートするライブラリを使用することをお勧めします。これらの重要なポイントを習得すると、一般的な間違いを効果的に回避できます。

なぜの下部にタグを配置する必要があるのですか? なぜの下部にタグを配置する必要があるのですか? Jul 02, 2025 am 01:22 AM

PLACSTHETTHETTHE BOTTOMOFABLOGPOSTORWEBPAGESERVESPAGESPORCICALPURPOSESESFORSEO、userexperience、andDesign.1.IthelpswithiobyAllowingseNStoAccessKeysword-relevanttagwithtagwithtagwithtagwithemaincontent.2.iTimrovesexperiencebyepingepintepepinedeeping

JavaScript vs. Java:開発者向けの包括的な比較 JavaScript vs. Java:開発者向けの包括的な比較 Jun 20, 2025 am 12:21 AM

javascriptispreferredforwebdevelopment、whilejavaisbetterforlge-scalebackendsystemsandroidapps.1)javascriptexcelsininintingtivewebexperiences withitsdynAmicnature anddommanipulation.2)javaofferstruntypyping-dobject-reientedpeatures

JavaScript:効率的なコーディングのためのデータ型の調(diào)査 JavaScript:効率的なコーディングのためのデータ型の調(diào)査 Jun 20, 2025 am 12:46 AM

javascripthassevenfundamentaldatypes:number、string、boolean、undefined、null、object、andsymbol.1)numberseadouble-precisionformat、有用であるため、有用性の高いものであるため、but-for-loating-pointarithmetic.2)ストリングリムムット、使用率が有用であること

DOMでのイベントの泡立ちとキャプチャとは何ですか? DOMでのイベントの泡立ちとキャプチャとは何ですか? Jul 02, 2025 am 01:19 AM

イベントキャプチャとバブルは、DOMのイベント伝播の2つの段階です。キャプチャは最上層からターゲット要素までであり、バブルはターゲット要素から上層までです。 1.イベントキャプチャは、AddEventListenerのUseCaptureパラメーターをTrueに設(shè)定することにより実裝されます。 2。イベントバブルはデフォルトの動作であり、UseCaptureはfalseに設(shè)定されているか、省略されます。 3。イベントの伝播を使用して、イベントの伝播を防ぐことができます。 4.イベントバブルは、動的なコンテンツ処理効率を改善するためにイベント委任をサポートします。 5.キャプチャを使用して、ロギングやエラー処理など、事前にイベントを傍受できます。これらの2つのフェーズを理解することは、タイミングとJavaScriptがユーザー操作にどのように反応するかを正確に制御するのに役立ちます。

JavaとJavaScriptの違いは何ですか? JavaとJavaScriptの違いは何ですか? Jun 17, 2025 am 09:17 AM

JavaとJavaScriptは、異なるプログラミング言語です。 1.Javaは、エンタープライズアプリケーションや大規(guī)模なシステムに適した、靜的に型付けされ、コンパイルされた言語です。 2。JavaScriptは動的なタイプと解釈された言語であり、主にWebインタラクションとフロントエンド開発に使用されます。

See all articles