package cn.iocoder.yudao.module.llm.controller.admin.application.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;

@Schema(description = "管理后台 - 大模型应用新增/修改 Request VO")
@Data
public class ApplicationSaveReqVO {

    @Schema(description = "应用ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25658")
    private Long id;

    @Schema(description = "应用名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
    @NotEmpty(message = "应用名称不能为空")
    private String appName;

    @Schema(description = "应用简介")
    private String appIntro;

    @Schema(description = "应用分类，使用字典（llm_application_category）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "应用分类，使用字典（llm_application_category）不能为空")
    private Long appCategory;

    @Schema(description = "应用标签，保存多个标签ID，用逗号分隔", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "应用标签，保存多个标签ID，用逗号分隔不能为空")
    private String appLabel;

    @Schema(description = "模型服务，模型服务ID")
    private Long appModel;

    @Schema(description = "废弃, 随机性")
    private Integer temperature;

    @Schema(description = "废弃, 采样性")
    private Integer topP;

    @Schema(description = "废弃, 单次回复限制")
    private Integer maxTokens;

    @Schema(description = "向量知识库，知识库ID", example = "15511")
    private Long modelServiceId;

    @Schema(description = "应用API地址", example = "https://www.iocoder.cn")
    private String appUrl;

    @Schema(description = "应用图标")
    private String appLogo;

    @Schema(description = "聊天人次", example = "20515")
    private Long chatCount;

    @Schema(description = "大模型服务的推理参数，以JSON格式存储")
    private String modelParams;

    @Schema(description = "系统Prompt")
    private String prompt;

    @Schema(description = "创建人id")
    private String creator;

    @Schema(description = "创建人")
    private String creatorName;
}
