Build AI agents with Spring AI 2.0 - basic agent, memory, tools/MCP, agentic workflows, guardrails, and observability
86
85%
Does it follow best practices?
Impact
90%
2.43xAverage score across 3 eval scenarios
Passed
No known issues
{
"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
}
]
}