langchain4j-spring-boot-integration について
Spring Boot アプリケーションに LangChain4j を組み込む開発者向けのスキルです。自動構成、宣言的 AI サービス、モデル設定のほか、会話メモリ、RAG、ツール連携、複数プロバイダーの構成を扱います。
主な機能
- 01プロパティと自動構成によるモデル設定
- 02宣言的 AI サービスの定義
- 03会話メモリとストリーミング応答の設定
- 04Spring Data を使った RAG 連携
- 05Spring コンポーネントのツール化
- 06複数モデルプロバイダーの明示的な配線
活用シーン
- 01既存の Spring Boot アプリへの AI 機能追加
- 02AI マイクロサービスの構築
- 03会話メモリを持つサービスの作成
- 04Spring アプリでの RAG とツール利用の実装
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ giuseppe-trisciuoglio/ developer-kit --skill langchain4j-spring-boot-integrationインストール後、Claude Code で/langchain4j-spring-boot-integrationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/configuration.mdexamples.mdreferences.md詳細
LangChain4j Spring Boot 統合
宣言型 AI サービス、自動構成、Spring Boot スターターを使用して、LangChain4j を Spring Boot と統合します。AI モデル Bean を構成し、チャットメモリを設定し、Spring Data を使用して RAG パイプラインを実装し、本番環境に対応した AI アプリケーションを構築します。
使用する場面
次のような場合に、このスキルを使用します。
- 既存の Spring Boot アプリケーションに LangChain4j を統合する
- Spring Boot で AI 搭載のマイクロサービスを構築する
@Beanアノテーションで AI モデル Bean を構成する- AI モデルとサービスの自動構成を設定する
- Spring の依存性注入を使用して宣言型 AI サービスを作成する
- Spring Data 統合を使用して RAG システムを実装する
- Spring コンテキスト管理を使用してチャットメモリを設定する
- 複数の AI プロバイダー(OpenAI、Azure、Ollama、Anthropic)を構成する
- Spring Boot で本番環境に対応した AI アプリケーションを構築する
概要
LangChain4j Spring Boot 統合は、Spring Boot スターターを通じて宣言型 AI サービスを提供し、プロパティに基づいて AI コンポーネントを自動構成できます。インターフェースベースの定義とアノテーションを使用して、Spring の依存性注入と LangChain4j の AI 機能を組み合わせます。
手順
1. 依存関係を追加する
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring-boot-starter</artifactId>
<version>1.8.0</version>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
<version>1.8.0</version>
</dependency>
2. アプリケーションプロパティを構成する
# application.properties
langchain4j.open-ai.chat-model.api-key=${OPENAI_API_KEY}
langchain4j.open-ai.chat-model.model-name=gpt-4o-mini
langchain4j.open-ai.chat-model.temperature=0.7
langchain4j.open-ai.chat-model.timeout=PT60S
langchain4j.open-ai.chat-model.max-tokens=1000
または、YAML を使用します。
langchain4j:
open-ai:
chat-model:
api-key: ${OPENAI_API_KEY}
model-name: gpt-4o-mini
temperature: 0.7
timeout: 60s
max-tokens: 1000
3. 宣言型 AI サービスを作成する
import dev.langchain4j.service.spring.AiService;
@AiService
public interface CustomerSupportAssistant {
@SystemMessage("You are a helpful customer support agent for TechCorp.")
String handleInquiry(String customerMessage);
@UserMessage("Translate to {{language}}: {{text}}")
String translate(String text, String language);
}
4. コンポーネントスキャンを有効にする
@SpringBootApplication
@ComponentScan(basePackages = {
"com.yourcompany",
"dev.langchain4j.service.spring"
})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
5. AI サービスを注入して使用する
@Service
public class CustomerService {
private final CustomerSupportAssistant assistant;
public CustomerService(CustomerSupportAssistant assistant) {
this.assistant = assistant;
}
public String processCustomerQuery(String query) {
return assistant.handleInquiry(query);
}
}
6. 統合を検証する
設定後、構成を検証します。
- アプリケーションを起動し、ログで
LangChain4jSpringBootAutoConfigurationの有効化を確認します - AI サービスの Bean が登録されていることを確認します。Spring コンテキストで
CustomerSupportAssistantを探します - サービスをテストします。
assistant.handleInquiry("test")を呼び出し、応答が返されることを確認します
構成
プロパティベースの構成: プロバイダーごとに application.properties で AI モデルを構成します。
手動 Bean 構成: 高度な構成では、Bean を手動で定義します。
@Configuration
public class AiConfig {
@Bean
public ChatModel chatModel(@Value("${OPENAI_API_KEY}") String apiKey) {
return OpenAiChatModel.builder()
.apiKey(apiKey)
.modelName("gpt-4o-mini")
.temperature(0.7)
.build();
}
}
複数プロバイダー: 複数の AI プロバイダーを構成する場合は、明示的に配線します。
@AiService(wiringMode = WiringMode.EXPLICIT)
interface MultiProviderAssistant {
@AiServiceAnnotation
ChatModel openAiModel;
@AiServiceAnnotation
ChatModel azureModel;
}
宣言型 AI サービス
基本的な AI サービス: @AiService アノテーションを付けたインターフェースを作成し、メッセージテンプレートを使用するメソッドを定義します。
ストリーミング AI サービス: Project Reactor を使用してストリーミング応答を実装します。
@AiService
public interface StreamingAssistant {
@SystemMessage("You are a helpful assistant.")
Flux<String> chatStream(String message);
}
チャットメモリ: Spring コンテキストで会話メモリを設定します。
@AiService
public interface ConversationalAssistant {
@SystemMessage("You are a helpful assistant with memory.")
String chat(@MemoryId String userId, String message);
}
RAG の実装
埋め込みストア: Spring Data を使用して RAG パイプライン向けの埋め込みストアを構成します。
@Configuration
public class RagConfig {
@Bean
public EmbeddingStore<TextSegment> embeddingStore() {
return PgVectorEmbeddingStore.builder()
.host("localhost")
.port(5432)
.database("vectordb")
.table("embeddings")
.dimension(1536)
.build();
}
@Bean
public EmbeddingModel embeddingModel() {
return OpenAiEmbeddingModel.withApiKey(System.getenv("OPENAI_API_KEY"));
}
}
@AiService
public interface RagAssistant {
String answer(@UserMessage("Question: {{question}}") String question);
}
ドキュメントの取り込み: ContentInjector と DocumentSplitter を使用してドキュメントを処理します。
コンテンツの取得: EmbeddingStoreContentRetriever を構成してナレッジを拡張します。
ツール統合
Spring コンポーネントツール: ツールを Spring コンポーネントとして定義します。
@Component
public class Calculator {
@Tool("Calculate the sum of two numbers")
public double add(double a, double b) {
return a + b;
}
}
@AiService
public interface MathAssistant {
String solve(String problem);
}
例
基本的な AI サービス
@AiService
public interface ChatAssistant {
@SystemMessage("You are a helpful assistant.")
String chat(String message);
}
メモリ付き AI サービス
@AiService
public interface ConversationalAssistant {
@SystemMessage("You are a helpful assistant with memory of conversations.")
String chat(@MemoryId String userId, String message);
}
ツール付き AI サービス
@Component
public class WeatherService {
@Tool("Get weather for a city")
public String getWeather(String city) {
return "Sunny, 22°C in " + city;
}
}
@AiService
public interface WeatherAssistant {
String getWeatherForCity(String city);
}
RAG の構成、ストリーミングアシスタント、複数プロバイダーの設定など、その他の例については、references/examples.md を参照してください。
ベストプラクティス
- プロパティベースの構成を使用する: 値をハードコードせず、外部構成を使用します
- プロファイルを使用する: 開発、テスト、本番環境の構成を分離します
- 適切なロギングを追加する: AI サービスの呼び出しをデバッグし、パフォーマンスを監視します
- リトライ機構を実装する: バックオフ戦略を用いて一時的な障害に対処します
- トークン使用量を監視する: トークン消費量を追跡し、上限を設定します
参考資料
API の詳細や高度な構成については、以下を参照してください。
- API リファレンス - API ドキュメント一式
- 例 - 実装例の詳細
- 構成ガイド - 構成オプションの詳細な解説
制約と警告
- API キーは環境変数またはシークレット管理システムを使用して安全に保管してください
- AI モデルの応答は非決定的です。テストでは変動性を考慮してください
- AI プロバイダーにはレート制限が適用される場合があります。適切な再試行とバックオフの戦略を実装してください
- メモリープロバイダーは会話履歴を保存します。複数ユーザーのシナリオに対応するため、クリーンアップを実装してください
- トークンコストはすぐに積み上がります。使用量を監視し、トークン制限を実装してください
- ストリーミング応答では、部分的な障害に対する適切なエラー処理が必要です
- サポートされている機能について、プロバイダー固有のドキュメントを確認してください
- 複数のチャットモデルを設定する場合は、明示的な配線モードを使用してください
- 本番システムで使用する前に、AI が生成した出力を検証してください