package com.pavis.admin.aigc.model.resp;

import lombok.Data;

import io.swagger.v3.oas.annotations.media.Schema;

import com.pavis.admin.common.model.resp.BaseResp;
import lombok.experimental.Accessors;

import java.io.Serial;
import java.time.*;

/**
 * AIGC模型配置信息
 *
 * @author semi
 * @since 2025/05/26 17:28
 */
@Data
@Schema(description = "AIGC模型配置信息")
@Accessors(chain = true)
public class ModelResp extends BaseResp {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 模型类型:Chat/Embedding/Image/Video/Audio
     */
    @Schema(description = "模型类型:Chat/Embedding/Image/Video/Audio")
    private String type;

    /**
     * 官方模型名称
     */
    @Schema(description = "官方模型名称")
    private String model;

    /**
     * 模型版本号
     */
    @Schema(description = "模型版本号")
    private String version;

    /**
     * 服务商
     */
    @Schema(description = "服务商")
    private String provider;

    /**
     * 自定义模型别名
     */
    @Schema(description = "自定义模型别名")
    private String name;

    /**
     * 模型描述
     */
    @Schema(description = "模型描述")
    private String description;

    /**
     * 状态:0停用 1启用
     */
    @Schema(description = "状态:0停用 1启用")
    private Boolean status;

    /**
     * 最大响应长度
     */
    @Schema(description = "最大响应长度")
    private Integer responseLimit;

    /**
     * 上下文最大token数
     */
    @Schema(description = "上下文最大token数")
    private Integer maxTokens;

    /**
     * 随机性控制
     */
    @Schema(description = "随机性控制")
    private Double temperature;

    /**
     * 核心采样概率
     */
    @Schema(description = "核心采样概率")
    private Double topP;

    /**
     * Azure部署名称
     */
    @Schema(description = "Azure部署名称")
    private String azureDeploymentName;

    /**
     * Google Cloud项目ID
     */
    @Schema(description = "Google Cloud项目ID")
    private String geminiProject;

    /**
     * Google Cloud服务区域
     */
    @Schema(description = "Google Cloud服务区域")
    private String geminiLocation;

    /**
     * 图片尺寸(支持1024x1024/1792x1024等)
     */
    @Schema(description = "图片尺寸(支持1024x1024/1792x1024等)")
    private String imageSize;

    /**
     * 图片质量:standard/hd
     */
    @Schema(description = "图片质量:standard/hd")
    private String imageQuality;

    /**
     * 图片风格:vivid/natural
     */
    @Schema(description = "图片风格:vivid/natural")
    private String imageStyle;

    /**
     * API超时时间(秒)
     */
    @Schema(description = "API超时时间(秒)")
    private Integer timeout;

    /**
     * 重试策略
     */
    @Schema(description = "重试策略")
    private String retryStrategy;

    /**
     * 每分钟最大请求数
     */
    @Schema(description = "每分钟最大请求数")
    private Integer rateLimit;

    /**
     * 修改人
     */
    @Schema(description = "修改人")
    private Long updateUser;

    /**
     * 修改时间
     */
    @Schema(description = "修改时间")
    private LocalDateTime updateTime;

    /**
     * API密钥
     */
    private String apiKey;

    /**
     * 密钥
     */
    private String secretKey;

    private String baseUrl;

    private Integer dimension;
}