{"record":{"id":"96576f2530e5c36a","repo":"alibaba/spring-ai-alibaba","slug":"input-reference-output","errorCode":null,"errorMessage":"评测集列配置错误，必须包含input和reference_output两列","messagePattern":"评测集列配置错误，必须包含input和reference_output两列","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/service/impl/DatasetServiceImpl.java","lineNumber":54,"sourceCode":"\n\n    private static final String INPUT_COLUMN_TYPE = \"input\";\n    private static final String REFERENCE_OUTPUT_COLUMN_TYPE = \"reference_output\";\n\n\n    @Override\n    @Transactional\n    public Dataset create(DatasetCreateRequest request) {\n        log.info(\"创建评测集: {}\", request);\n\n        if (!StringUtils.hasText(request.getName())) {\n            throw new IllegalArgumentException(\"评测集名称不能为空\");\n        }\n\n\n        if (request == null || request.getColumnsConfig() == null ||\n                !hasRequiredColumns(request.getColumnsConfig())) {\n            throw new IllegalArgumentException(\"评测集列配置错误，必须包含input和reference_output两列\");\n        }\n\n        DatasetDO datasetDO = DatasetDO.builder()\n                .name(request.getName())\n                .description(request.getDescription())\n                .columnsConfig(JSONObject.toJSONString(request.getColumnsConfig()))\n                .build();\n\n        datasetMapper.insert(datasetDO);\n        log.info(\"评测集创建成功: {}\", datasetDO);\n        return Dataset.fromDO(datasetDO);\n    }\n\n    @Override\n    public PageResult<Dataset> list(DatasetListRequest request) {\n        log.info(\"查询评测集列表: {}\", request);\n\n        // 计算分页参数","sourceCodeStart":36,"sourceCodeEnd":72,"githubUrl":"https://github.com/alibaba/spring-ai-alibaba/blob/f82da0b50f35744c13968191be2b1cd2452ef550/spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/service/impl/DatasetServiceImpl.java#L36-L72","documentation":"Thrown by DatasetServiceImpl.create() when columnsConfig is missing or does not contain the required 'input' and 'reference_output' columns, as checked by hasRequiredColumns(). Evaluation datasets must have this fixed schema.","triggerScenarios":"Creating a dataset whose columnsConfig JSON lacks 'input' or 'reference_output' column definitions; passing null columnsConfig; importing a dataset exported from another tool with a different schema.","commonSituations":"Hand-written columns config missing a column; renamed columns; upstream export format changed; deserialization typo in the columns key.","solutions":["Ensure columnsConfig includes both an 'input' column and a 'reference_output' column","Use the schema produced by the platform's dataset-creation UI/export as a template","Add client-side validation of column names before submitting","Call hasRequiredColumns-equivalent check (or the validation API) before create"],"exampleFix":"// before\ncolumnsConfig = [{\"name\":\"question\"},{\"name\":\"answer\"}];\n// after\ncolumnsConfig = [{\"name\":\"input\"},{\"name\":\"reference_output\"}];","handlingStrategy":"validation","validationCode":"Set<String> names = columns.stream().map(ColumnDef::getName).collect(Collectors.toSet());\nif (!names.contains(\"input\") || !names.contains(\"reference_output\")) { throw new IllegalArgumentException(\"columnsConfig must define input and reference_output\"); }","typeGuard":"boolean hasRequiredColumns(List<ColumnConfig> cols) { return cols != null && cols.stream().map(ColumnConfig::getName).collect(Collectors.toSet()).containsAll(Set.of(\"input\",\"reference_output\")); }","tryCatchPattern":"try { datasetService.create(req); } catch (IllegalArgumentException e) { if (e.getMessage().contains(\"列配置\")) { showSchemaErrorToUser(); } else { throw e; } }","preventionTips":["Generate columnsConfig from the platform's official schema template","Validate column names client-side against the required set","Lock schema for evaluation datasets instead of free-form columns"],"tags":["validation","schema","dataset"],"backgroundTag":"schema-validation-failed","analyzedSha":"f82da0b50f35744c13968191be2b1cd2452ef550","analyzedAt":"2026-09-09T15:32:42.421Z","contentChangedAt":"2026-09-09T15:32:42.421Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}