Embabel

An agentic AI framework for Java and the JVM, created by Rod Johnson, founder of the Spring Framework. DICE ships as a module of it, and Embabel DICE is that module’s implementation.


Shape of the API

From the worked example in Agents That Extract and Use Preferences from Conversations, the programming model is annotation-driven in the Spring idiom:

  • @Action methods, optionally with canRerun and a trigger type, run in response to typed events such as a UserMessage.
  • An OperationContext / ActionContext carries process state, including the identity of the user the process is bound to.
  • LLM calls are composed fluently — context.ai().withLlmByRole(...).withReferences(...).withSystemPrompt(...).respond(...).

Models are selected by role, not by name. The sample binds the responding call to a CHEAPEST role, proposition revision to STANDARD, and the embedder to FAST, with the mapping configured in application.yml. That is model tiering as a first-class configuration concern — the same discipline Agentic Memory for Search Personalization argues for, expressed in the framework rather than bolted on.

References — RAG sources, memory — are passed to a call as a list, so agent memory enters the prompt through the same mechanism as retrieved documents.

  • Embabel DICE — the DICE module: proposition extraction, entity resolution, memory projection
  • django-dice — an independent Python implementation of the same DICE design

Articles