| name | java-spring-ai |
| description | Use when the user asks to add AI features, integrate Spring AI or LangChain4J, build a chatbot, implement RAG (retrieval-augmented generation), use vector stores, stream LLM responses, or call AI tools/functions in a Spring Boot project. |
| version | 1.0.0 |
| authors | ["java-plugins contributors"] |
| tags | ["java","spring-boot","spring-ai","langchain4j","llm","rag","vector-store","ai"] |
| allowed-tools | ["Read","Glob","Grep","Edit","Write"] |
Spring AI / LangChain4J Skill
Detect the framework in use, then apply the correct patterns.
Step 1 — Detect framework and version
Check pom.xml or build.gradle:
spring-ai-* dependency → Spring AI (note version: 1.0.x GA or 0.8.x milestone)
langchain4j-* dependency → LangChain4J (note version: 0.x or 1.x)
- Neither present → offer to add one (recommend Spring AI for Spring Boot 3.x, LangChain4J for Boot 2.x)
Check Spring Boot version:
- Boot 3.x → Spring AI 1.x preferred, LangChain4J 0.35+
- Boot 2.x → LangChain4J 0.30.x (Spring AI requires Boot 3.x)
Mode: review
User asks to review existing AI code. Check for:
Spring AI:
LangChain4J:
Mode: chat
User asks to add a basic chatbot or chat endpoint.
Spring AI
- Add dependency (see
references/patterns.md → Spring AI Setup)
- Inject
ChatClient.Builder, build a ChatClient bean
- Create
ChatController with @PostMapping("/chat")
- Use
chatClient.prompt().user(message).call().content() for simple response
- For streaming: return
Flux<String> with chatClient.prompt().user(message).stream().content()
- Add
ANTHROPIC_API_KEY / OPENAI_API_KEY to application.yml via ${env-var}
LangChain4J
- Add
langchain4j-spring-boot-starter + provider dependency
- Define
@AiService interface with @SystemMessage
- Register as Spring bean via
AiServices.builder(MyAssistant.class).chatLanguageModel(model).build()
- Expose via
@RestController
Mode: rag
User asks to implement RAG (chat over documents, knowledge base, semantic search).
Spring AI RAG
- Choose vector store: PgVector (PostgreSQL), Chroma, Redis, Weaviate, Qdrant (see
references/patterns.md)
- Add
spring-ai-{store}-store-spring-boot-starter
- Ingest pipeline:
DocumentReader (PDF, text, web) → TokenTextSplitter → VectorStore.add()
- Run at startup via
ApplicationRunner or dedicated @PostMapping("/ingest")
- Query pipeline:
- Attach
QuestionAnswerAdvisor(vectorStore) to ChatClient
- Spring AI auto-retrieves context and injects into prompt
- Tune:
SearchRequest.withTopK(5).withSimilarityThreshold(0.7)
LangChain4J RAG
- Add
EmbeddingStore (Chroma, Qdrant, in-memory for dev)
EmbeddingStoreIngestor with DocumentSplitter and EmbeddingModel
EmbeddingStoreContentRetriever → RetrievalAugmentor → AiServices builder
Mode: tools
User asks to give the AI the ability to call Java methods (function/tool calling).
Spring AI
- Define a
@Bean of type Function<Input, Output> — Spring AI auto-registers it
- Or use
@Description on a record parameter for rich schema
- Pass function names to
ChatClient: .options(OpenAiChatOptions.builder().withFunction("myFunction").build())
- Spring AI handles the tool call loop automatically
LangChain4J
- Annotate service methods with
@Tool("description of what this tool does")
- Register the service as a tool:
AiServices.builder(...).tools(myToolService).build()
- The model decides when to call — no manual dispatch needed
Mode: memory
User asks to add conversation memory / chat history.
Spring AI
MessageChatMemoryAdvisor with InMemoryChatMemory for single-instance apps
JdbcChatMemory for persistent / multi-instance memory (requires spring-ai-jdbc store)
- Key: pass
conversationId (e.g., session ID or user ID) to scope memory per user
LangChain4J
MessageWindowChatMemory.withMaxMessages(20) — keeps last N messages
TokenWindowChatMemory — keeps messages within token budget
- For persistence: implement
ChatMemoryStore backed by Redis or JDBC
Output format
For review mode: list findings as [CRITICAL] / [HIGH] / [MEDIUM] / [LOW] with file:line references.
For implementation modes (chat, rag, tools, memory):
- Show exact Maven/Gradle dependencies with versions
- Show full working code snippets (not pseudocode)
- Show
application.yml configuration
- Note: state the minimum Spring Boot and Java version required
Always note version-specific differences:
- Spring AI 1.0.x (GA) vs 0.8.x (milestone) — API changes between these
- LangChain4J 1.x vs 0.x —
AiServices API changed in 1.x
- Spring Boot 3.x required for Spring AI; Boot 2.x → use LangChain4J