langchain4j-testing-strategies は何をしますか?
LangChain4j アプリケーション向けの単体テスト、統合テスト、モック AI パターンを提供します。モック LLM 応答の作成、検索チェーンのテスト、RAG ワークフローの検証、Testcontainers ベースの統合テストを実装します。AI サービスの単体テスト、LangChain4j コンポーネントの統合テスト、AI モデルのモック、LLM ベースの Java アプリケーションのテストに使用します。
概要
このスキルは Java の LangChain4j ライブラリを使用した AI アプリケーションのテスト戦略を文書化します。以下を含みます:
- モック LLM レスポンスを使用した単体テスト
- Testcontainers を使用した統合テスト
- RAG ワークフローのテストパターン
- AI モデルのモック戦略
使い方
前提条件
- Java 17+
- Maven または Gradle
- Testcontainers(統合テスト用)
- JUnit 5
単体テストの例
import static org.mockito.Mockito.*;
import dev.langchain4j.model.chat.ChatLanguageModel;
@Test
void shouldMockLLMResponse() {
ChatLanguageModel mockModel = mock(ChatLanguageModel.class);
when(mockModel.generate(anyString())).thenReturn("モックされた応答");
String result = myService.callModel(mockModel);
assertEquals("モックされた応答", result);
}
統合テストの例(Testcontainers)
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.containers.GenericContainer;
@Container
static GenericContainer<?> chroma = new GenericContainer<>("ghcr.io/chroma-core/chroma:latest")
.withExposedPorts(8000);
@Test
void shouldTestVectorStore() {
// ここで Chroma ベクトルストアに対するテストを実装
}
ベストプラクティス
- 外部サービスとの依存関係を避けるため、単体テストでは常に AI モデルをモックすること
- 統合テストでは Testcontainers を使用して、実際のインフラストラクチャに近い環境を再現すること
- RAG パイプラインのテストでは、各コンポーネント(埋め込みモデル、ベクトルストア、LLM)を分離してテストすること