package com.sonic.cow.domain.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 提示词配置实体类
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("prompt_config")
public class PromptConfig {

    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 提示词类型
     */
    @TableField("prompt_type")
    private String promptType;

    /**
     * 提示词名称
     */
    @TableField("prompt_name")
    private String promptName;

    /**
     * 提示词描述
     */
    @TableField("prompt_desc")
    private String promptDesc;

    /**
     * 提示词具体内容
     */
    @TableField("prompt_template")
    private String promptTemplate;

    /**
     * 提示词具体内容
     */
    @TableField("prompt_template_1")
    private String promptTemplate1;

    /**
     * 提示词温度
     */
    @TableField("temperature")
    private Double temperature;

    /**
     * 模型
     */
    @TableField("model")
    private String model;

    /**
     * 召回率
     */
    @TableField("topp")
    private Double topp;

    /**
     * 频率惩罚
     */
    @TableField("frequency")
    private Double frequency;

    /**
     * 存在惩罚
     */
    @TableField("presence")
    private Double presence;

    /**
     * 结构化输出模式
     */
    @TableField("structured_output_schema")
    private String structuredOutputSchema;

    /**
     * 结构化输出模式名称
     */
    @TableField("structured_output_schema_name")
    private String structuredOutputSchemaName;

    /**
     * 结构化输出模式描述
     */
    @TableField("structured_output_schema_desc")
    private String structuredOutputSchemaDesc;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 创建时间
     */
    @TableField("is_delete")
    private Boolean isDelete;

    /**
     * 编辑时间
     */
    @TableField(value = "edit_time")
    private LocalDateTime editTime;

}
