package cn.iocoder.yudao.module.llm.service.http.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;


import java.util.List;
import java.util.Map;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class AigcFineTuningCreateRespVO {
    private int id;
    private String jobId;
    private String baseModel;
    private int trainEpoch;
    private String trainStatus;
    private String trainDuration;
    private int process;
    private String fineTunedModel;
    private String remark;
    private String finishedAt;
    private String createdAt;
    private String trainPublisher;
    private String trainLog;
    private String errorMessage;
    private boolean lora;
    private TrainAnalysis trainAnalysis;
    private String suffix;
    private int modelMaxLength;
    private int trainBatchSize;
    private String learningRate; // Note: This is a string to preserve precision or format
    private String fileUrl;
    private String fileId;
    private String startTrainTime;
    private int procPerNode;
    private int evalBatchSize;
    private int accumulationSteps;
    private String scenario;
    private Map<String, Object> diagnosis;


    public static class TrainAnalysis {
        private EpochAnalysis epoch;
        private LossAnalysis loss;
        private LearningRateAnalysis learningRate;
    }

    // Nested class for EpochAnalysis
    public static class EpochAnalysis {
        private List<Integer> list;
    }

    // Nested class for LossAnalysis
    public static class LossAnalysis {
        private List<Double> list;

    }

    // Nested class for LearningRateAnalysis
    public static class LearningRateAnalysis {

        private List<Double> list; // Or String list if learning rates are represented as strings
    }

}

