CtrlK
BlogDocsLog inGet started
Tessl Logo

jbaruch/spring-ai-agent

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

86

2.43x
Quality

85%

Does it follow best practices?

Impact

90%

2.43x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-2/

{
  "context": "Tests whether the agent correctly migrates a Spring AI 1.1.x project to Spring AI 2.0, applying all required dependency changes, configuration updates, and API replacements. The migrated files are checked for correct artifact IDs, version numbers, package imports, and deprecated API replacements.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Milestone repository",
      "description": "The output pom.xml includes the Spring Milestones repository entry with URL https://repo.spring.io/milestone",
      "max_score": 10
    },
    {
      "name": "BOM version",
      "description": "The output pom.xml uses spring-ai-bom version 2.0.0-M4 (not 1.1.0 or any other version)",
      "max_score": 8
    },
    {
      "name": "OpenAI SDK starter",
      "description": "The output pom.xml uses spring-ai-starter-model-openai-sdk (not the legacy spring-ai-starter-model-openai)",
      "max_score": 10
    },
    {
      "name": "Vertex AI removed",
      "description": "The output pom.xml does NOT contain spring-ai-starter-model-vertex-ai (it is deprecated in 2.0)",
      "max_score": 8
    },
    {
      "name": "MCP transport groupId",
      "description": "MCP transport dependencies use groupId org.springframework.ai (not io.modelcontextprotocol.sdk)",
      "max_score": 9
    },
    {
      "name": "Explicit temperature",
      "description": "The output application.properties or application.yml explicitly sets a temperature value (e.g., spring.ai.openai-sdk.chat.options.temperature=...)",
      "max_score": 9
    },
    {
      "name": "MCP annotation import",
      "description": "Java source files import @McpTool and @McpToolParam from org.springframework.ai.mcp.annotation (not from org.springframework.ai.mcp.spring.annotations)",
      "max_score": 10
    },
    {
      "name": "McpClientCustomizer generic",
      "description": "Java source uses McpClientCustomizer<McpClient.SyncSpec> (or AsyncSpec) instead of the removed McpSyncClientCustomizer / McpAsyncClientCustomizer interface",
      "max_score": 10
    },
    {
      "name": "Jackson 3 package",
      "description": "Custom serializer/deserializer imports use tools.jackson package (not com.fasterxml.jackson)",
      "max_score": 9
    },
    {
      "name": "Spring Boot 4.0.x",
      "description": "The parent or Spring Boot version in pom.xml references Spring Boot 4.0.x (not 3.x)",
      "max_score": 8
    }
  ]
}

evals

tile.json