Add ai-services module: prompt templates, per-id chat memory, tools, RAG, and the @MemoryId trap, each with a captured transcript

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01G8ikz8xdWuTP5yun8DZ1hk
This commit is contained in:
2026-10-11 07:41:41 +00:00
co-authored by Claude Sonnet 5.5
commit 16d6781675
16 changed files with 481 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
# langchain4j-demo
Companion code for the ankurm.com LangChain4j posts. Every number and transcript quoted in a post
comes from a file in a module's `output/` folder, and the tests that write those files also assert
the same facts, so the build fails when a claim stops being true.
| Module | Post | What it shows |
|---|---|---|
| `ai-services` | LangChain4j AI Services with Spring Boot 4: Declarative LLM Interfaces | prompt templates, chat memory, tools, RAG, and the `@MemoryId` trap |
## Versions (verified on Maven Central, 2026-10-11)
| Component | Version | Note |
|---|---|---|
| LangChain4j (`langchain4j`, `langchain4j-core`, BOM) | 1.22.0 | GA |
| LangChain4j beta modules (starters, embeddings, agentic) | 1.22.0-beta32 | beta only, no GA exists |
| JDK | 25 LTS | |
| JUnit | 6.1.3 | |
## Run
```bash
export JAVA_HOME=/path/to/jdk-25
mvn test
```
No API key is needed. The tests use `ScriptedChatModel`, a deterministic stand-in for an LLM, so
they can assert exactly which messages LangChain4j sent. Replace it with `OpenAiChatModel` or any
other `ChatModel` and the AI Service interfaces do not change.
Each module writes its transcripts to `<module>/output/` when you run the tests.