package cn.teammodel.model.dto.ai.deepseek;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.List;

/***
 * 请求体的数据内部结构，用于构建请求 json
 * {
 *   "messages": [
 *     {
 *       "content": "You are a helpful assistant",
 *       "role": "system"
 *     },
 *     {
 *       "content": "Hi",
 *       "role": "user"
 *     }
 *   ],
 *   "model": "deepseek-chat",
 *   "frequency_penalty": 0,
 *   "max_tokens": 2048,
 *   "presence_penalty": 0,
 *   "response_format": {
 *     "type": "text"
 *   },
 *   "stop": null,
 *   "stream": false,
 *   "stream_options": null,
 *   "temperature": 1,
 *   "top_p": 1,
 *   "tools": null,
 *   "tool_choice": "none",
 *   "logprobs": false,
 *   "top_logprobs": null
 * }
 */
@Data
public class DeepSeekChatRequestDto {
    @ApiModelProperty("会话模型")
    private String model;
    @ApiModelProperty("会话内容")
    private List<ChatReqDto> messages;
    /**
     * 采样温度，介于 0 和 2 之间。更高的值，如 0.8，会使输出更随机，而更低的值，如 0.2，会使其更加集中和确定。
     * 我们通常建议可以更改这个值或者更改 top_p，但不建议同时对两者进行修改。
     */
    private int temperature;
    /**
     * 介于 1 到 8192 间的整数，限制一次请求中模型生成 completion 的最大 token 数。输入 token 和输出 token 的总长度受模型的上下文长度的限制。
     * 如未指定 max_tokens参数，默认使用 4096。
     */
    @ApiModelProperty("最大生成token数")
    private int max_tokens = 2048;

    @ApiModelProperty("是否流式输出")
    private boolean stream = false;

    public boolean getStream() {
        return stream;
    }
}
