mcpField
L
langchain4j-spring-boot-integration

langchain4j-spring-boot-integration

github.com/giuseppe-trisciuoglio開発3653.7k 回インストール7 週間前に更新
リポジトリ

langchain4j-spring-boot-integration について

Spring Boot アプリケーションに LangChain4j を組み込む開発者向けのスキルです。自動構成、宣言的 AI サービス、モデル設定のほか、会話メモリ、RAG、ツール連携、複数プロバイダーの構成を扱います。

主な機能

  1. 01プロパティと自動構成によるモデル設定
  2. 02宣言的 AI サービスの定義
  3. 03会話メモリとストリーミング応答の設定
  4. 04Spring Data を使った RAG 連携
  5. 05Spring コンポーネントのツール化
  6. 06複数モデルプロバイダーの明示的な配線

活用シーン

  1. 01既存の Spring Boot アプリへの AI 機能追加
  2. 02AI マイクロサービスの構築
  3. 03会話メモリを持つサービスの作成
  4. 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.md
examples.md
references.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. 統合を検証する

設定後、構成を検証します。

  1. アプリケーションを起動し、ログで LangChain4jSpringBootAutoConfiguration の有効化を確認します
  2. AI サービスの Bean が登録されていることを確認します。Spring コンテキストで CustomerSupportAssistant を探します
  3. サービスをテストします。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 キーは環境変数またはシークレット管理システムを使用して安全に保管してください
  • AI モデルの応答は非決定的です。テストでは変動性を考慮してください
  • AI プロバイダーにはレート制限が適用される場合があります。適切な再試行とバックオフの戦略を実装してください
  • メモリープロバイダーは会話履歴を保存します。複数ユーザーのシナリオに対応するため、クリーンアップを実装してください
  • トークンコストはすぐに積み上がります。使用量を監視し、トークン制限を実装してください
  • ストリーミング応答では、部分的な障害に対する適切なエラー処理が必要です
  • サポートされている機能について、プロバイダー固有のドキュメントを確認してください
  • 複数のチャットモデルを設定する場合は、明示的な配線モードを使用してください
  • 本番システムで使用する前に、AI が生成した出力を検証してください

コメント