CtrlK
BlogDocsLog inGet started
Tessl Logo

jbaruch/langchain4j-ai-agent

Build AI agents with LangChain4j - basic agent, memory, tools/MCP, agentic workflows, guardrails, and observability

90

2.90x
Quality

90%

Does it follow best practices?

Impact

90%

2.90x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-3/

{
  "context": "Tests whether the agent correctly uses LangChain4j's per-user memory isolation pattern with @MemoryId and chatMemoryProvider, implements the ChatMemoryStore persistence interface with the required methods, uses MessageWindowChatMemory with the standard builder, and sets up the Maven BOM correctly.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "BOM version",
      "description": "pom.xml declares langchain4j-bom version 1.13.0 in dependencyManagement with type 'pom' and scope 'import'",
      "max_score": 8
    },
    {
      "name": "BOM-managed versions",
      "description": "Core langchain4j dependencies in pom.xml do NOT specify a version tag (version managed by BOM)",
      "max_score": 7
    },
    {
      "name": "@MemoryId annotation",
      "description": "The AI service interface method uses @MemoryId on the user/session identifier parameter",
      "max_score": 12
    },
    {
      "name": "chatMemoryProvider used",
      "description": "Agent is built using .chatMemoryProvider(memoryId -> ...) rather than a single shared .chatMemory()",
      "max_score": 12
    },
    {
      "name": "MessageWindowChatMemory builder",
      "description": "chatMemoryProvider creates MessageWindowChatMemory instances using the builder with .id() and .maxMessages() calls",
      "max_score": 10
    },
    {
      "name": "ChatMemoryStore interface",
      "description": "Custom store class implements ChatMemoryStore (from dev.langchain4j.store.memory.chat) rather than an ad-hoc solution",
      "max_score": 10
    },
    {
      "name": "Store method signatures",
      "description": "ChatMemoryStore implementation defines all three required methods: getMessages(), updateMessages(), and deleteMessages()",
      "max_score": 10
    },
    {
      "name": "@MemoryId import package",
      "description": "Code imports @MemoryId from dev.langchain4j.service package",
      "max_score": 8
    },
    {
      "name": "Memory linked to store",
      "description": "MessageWindowChatMemory builder calls .chatMemoryStore(store) to connect the custom persistence backend",
      "max_score": 8
    },
    {
      "name": "Per-user isolation documented",
      "description": "design-notes.md mentions per-user memory isolation, the @MemoryId mechanism, or chatMemoryProvider",
      "max_score": 7
    },
    {
      "name": "AiServices builder pattern",
      "description": "Agent is created using AiServices.builder(Interface.class).chatModel(model).build() pattern",
      "max_score": 8
    }
  ]
}

evals

tile.json