alibaba/spring-ai-alibaba · warning · IllegalArgumentException
Evaluator version ID cannot be null
Error message
Evaluator version ID cannot be null
What it means
Thrown by ExperimentServiceImpl.getResult when request.getEvaluatorVersionId() is null. Fetching paged experiment results requires both an experiment ID and an evaluator version ID, and this guard rejects the missing version before paging math runs.
Source
Thrown at spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/service/impl/ExperimentServiceImpl.java:228
.evaluatorVersionId(evaluatorVersionId)
.progress(progress)
.completeItemsCount(completeItemsCount)
.totalItemsCount(finalDataCount)
.build();
}).collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
}
@Override
public PageResult<ExperimentEvaluatorResultDetail> getResult(ExperimentEvaluatorResultDetailListRequest request){
// 先检查实验是否存在
ExperimentDO experiment = experimentMapper.selectById(request.getExperimentId());
if (experiment == null) {
log.warn("实验不存在: {}", request.getExperimentId());
return null;
}
if (request.getEvaluatorVersionId() == null) {
throw new IllegalArgumentException("Evaluator version ID cannot be null");
}
Integer offset = (request.getPageNumber() - 1) * request.getPageSize();
Integer limit = request.getPageSize();
if (offset < 0 || limit <= 0) {
throw new IllegalArgumentException("Invalid page number or page size");
}
Integer totalCount = experimentResultMapper.selectCountByExperimentIdAndEvaluator(request.getExperimentId(), request.getEvaluatorVersionId());
List<ExperimentResultDO> resultList = experimentResultMapper.selectByExperimentAndEvaluatorWithPageble(request.getExperimentId(),request.getEvaluatorVersionId(),offset,request.getPageSize());
List<ExperimentEvaluatorResultDetail> resultItems = resultList.stream()View on GitHub (pinned to f82da0b50f)
Solutions
- Set request.evaluatorVersionId from the selected evaluator version before calling getResult
- Fix property-name mismatches in the client JSON payload
- Add @NotNull validation on the request DTO so the API returns 400 automatically
- Handle the null case in the UI by prompting the user to select a version
Example fix
// before
ExperimentResultRequest req = new ExperimentResultRequest();
req.setExperimentId(experimentId);
experimentService.getResult(req); // throws
// after
if (evaluatorVersionId == null) {
throw new IllegalArgumentException("evaluatorVersionId is required");
}
req.setEvaluatorVersionId(evaluatorVersionId); Defensive patterns
Strategy: validation
Validate before calling
if (request.getExperimentId() == null || request.getEvaluatorVersionId() == null) throw new IllegalArgumentException("experimentId and evaluatorVersionId are required"); Type guard
boolean resultQueryReady(ExperimentResultRequest r) { return r != null && r.getExperimentId() != null && r.getEvaluatorVersionId() != null; } Try / catch
try { return experimentService.getResult(request); } catch (IllegalArgumentException e) { throw new ResponseStatusException(HttpStatus.BAD_REQUEST, e.getMessage()); } Prevention
- Require evaluator version selection in the UI before querying results
- Match DTO property names exactly in client payloads
- Add @NotNull on the request DTO fields
When it happens
Trigger: Submitting a result-query request whose evaluatorVersionId field was never set — e.g. client omitted the field, bound the wrong DTO property, or the UI did not select an evaluator version.
Common situations: Frontend filter form submitted without choosing an evaluator version; JSON payload using a mismatched property name (evaluatorId vs evaluatorVersionId); older API clients predating the field.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- oss object name is invalid
- Experiment ID cannot be null
- Invalid page number or page size
- Status value cannot be null
- threadId is not allow null
AI-assisted analysis of alibaba/spring-ai-alibaba@f82da0b50f (2026-09-09).
Data as JSON: /api/errors/e47294d20e5c16e5.
Report an issue: GitHub.