AI を活用したテスト: Docker Model Runner と Microcks を使用した動的モック API

LLMは非決定論的な性質を持つため、動的でリッチなテストデータの生成に理想的であり、アプリの動作を検証し、一貫性のある高品質のユーザーエクスペリエンスを確保するのに最適です。今日は、 DockerのModel Runner とMicrocksを使用して、アプリケーションをテストするための動的モックAPIを生成する方法について説明します。

Microcksは、 開発者が開発とテストのためにモックサービスを迅速にスピンアップできる強力なCNCFツールです。事前定義されたモックレスポンスを提供するか、OpenAPIスキーマから直接生成することで、実際のAPIをヒットする代わりにこれらのモックを使用するようにアプリケーションをポイントでき、効率的で安全なテスト環境を実現できます。

Docker Model Runner は、Docker Desktop 内で LLM をローカルに実行 するための便利な方法です。OpenAIと互換性のあるAPIを提供し、ローカルのハードウェアリソースを使用して、高度なAI機能をプロジェクトにシームレスに統合できます。

MicrocksをDocker Model Runnerと統合することで、AIが生成したレスポンスでモックAPIを充実させ、静的な例よりも厳密でない現実的で多様なデータを作成できます。

このガイドでは、これら 2 つのツールを一緒に設定する方法を探り、ローカル AI を利用した動的モック生成の利点を提供します。

Docker Model Runner のセットアップ

まず、ローカルAIアシスタントのセットアップのためのGooseの設定に関する 以前のブログ で説明したように、Docker Model Runnerが有効になっていることを確認します。次に、Docker Hub から目的の LLM モデル を選択してプルします。例えば:

docker model pull ai/qwen3:8B-Q4_0

Docker Model Runner を使用した Microcks の構成

まず、Microcksリポジトリをクローンします。

git clone https://github.com/microcks/microcks --depth 1

Docker Compose セットアップ ディレクトリに移動します。

cd microcks/install/docker-compose

Microcks 内で AI Copilot 機能を有効にするには、一部の構成を調整する必要があります。
/config/application.properties ファイルで、Docker Model Runner を使用するように AI Copilot を構成します。

ai-copilot.enabled=true
ai-copilot.implementation=openai
ai-copilot.openai.api-key=irrelevant
ai-copilot.openai.api-url=http://model-runner.docker.internal:80/engines/llama.cpp/
ai-copilot.openai.timeout=600
ai-copilot.openai.maxTokens=10000
ai-copilot.openai.model=ai/qwen3:8B-Q4_0

私たちは、 model-runner.docker.internal:80OpenAI 互換 API のベース URL として。Docker Model Runner は、Docker Desktop で実行されているコンテナから利用できます。これを使用すると、コンテナとモデルランナー間の直接通信が保証され、ホストマシンポートを使用した不要なネットワークを回避できます。

次に、次の行を Microcks config/features.properties ファイルに追加して、copilot 機能自体を有効にします。

features.feature.ai-copilot.enabled=true

Microcksの実行

Docker Composeを使用してMicrocksを開発モードで起動します。

docker-compose -f docker-compose-devmode.yml up

立ち上がったら、http://localhost:8080で Microcks UI にアクセスします。

テスト用のサンプル API をインストールします。Microcksページで次のボタンをクリックしてください。
Microcks Hub → MicrocksIO サンプル API → pastry-api-openapi v.2.0。0→ Go → Direct import → をインストールします。

Pastry API 2のスクリーンショット。Microcks Hubの0 ページとインストールするオプション付き。

図 1: Pastry API 2のスクリーンショット。Microcks Hubの0 ページとインストールするオプションがあります。

AI Copilot サンプルの使用

Microcks UI内で、 インポートしたAPIのサービスページに移動し 、強化する操作を選択します。[AI Copilot Samples] ダイアログを開き、Docker Model Runner を介して構成された LLM をクエリするように Microcks に促します。

Microcks 内の [AI Copilot Samples] ダイアログの表示。

図 2:Microcks内の「AI Copilot Samples」ダイアログの表示。

モデルが要求を処理するときに、GPU アクティビティが増加することに気付く場合があります。

処理後、AIが生成したモックレスポンスが表示され、モック操作に直接レビューしたり追加したりできるようになります。

AI Copilot Suggested Samples on Microcks 内で生成されたモックデータ。

図 3:MicrocksのAI Copilot推奨サンプル内で生成されたモックデータ。

生成されたモックは、簡単な curl コマンドで簡単にテストできます。例えば:

curl -X PATCH 'http://localhost:8080/rest/API+Pastry+-+2.0/2.0.0/pastry/Chocolate+Cake' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"status":"out_of_stock"}'

{
  "name" : "Chocolate Cake",
  "description" : "Rich chocolate cake with vanilla frosting",
  "size" : "L",
  "price" : 12.99,
  "status" : "out_of_stock"
}

これにより、AIが生成した現実的な応答が返され、テストデータの品質と信頼性が向上します。 

これで、このアプローチをテストで使用できます。たとえば、ショッピング カート アプリケーションでは、アプリが在庫サービスに依存しています。現実的でありながらランダム化されたモック データを使用すると、同じ一連のテストでより多くのアプリケーションの動作をカバーできます。再現性を高めるために、Docker Model Runner の依存関係と選択したモデルを compose.ymlで明示的に指定することもできます。

models:
  qwen3:
    model: ai/qwen3:8B-Q4_0
    context_size: 8096

次に、コンポーズのセットアップを開始すると、コンテナの場合と同様に、モデルもプルされ、使用可能になるのを待ちます。

結論

Docker Model Runner は、 LLM を実行するための優れたローカル リソース であり、OpenAI API との互換性を提供し、既存のワークフローへのシームレスな統合を可能にします。Microcksのようなツールは、Model Runnerを活用して、モックAPIの動的なサンプルレスポンスを生成し、統合テストのためのより豊富で現実的な合成データを提供します。

ローカルのAIワークフローがある場合、またはLLMをローカルで実行している場合は、 Dockerフォーラムで話し合ってください。Docker とのローカル AI 統合をさらに進めたいと考えています。

さらに詳しく

投稿カテゴリ

関連記事