package org.xyzh.ai.client.dto;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import java.util.List;
import java.util.Map;
import org.xyzh.api.ai.dto.DifyFileInfo;

/**
 * @description 对话请求
 * @filename ChatRequest.java
 * @author AI Assistant
 * @copyright xyzh
 * @since 2025-12-15
 */
@Data
public class ChatRequest {

    /**
     * 输入变量（Dify API 必需字段）
     */
    @JSONField(serializeFeatures = com.alibaba.fastjson2.JSONWriter.Feature.WriteMapNullValue)
    private Map<String, Object> inputs = new java.util.HashMap<>();

    /**
     * 用户问题
     */
    private String query;

    /**
     * 响应模式：streaming（流式）、blocking（阻塞）
     */
    @JSONField(name = "response_mode")
    private String responseMode = "streaming";

    /**
     * 对话ID（继续对话时传入）
     */
    @JSONField(name = "conversation_id")
    private String conversationId;

    /**
     * 用户标识
     */
    private String user;

    /**
     * 上传的文件列表
     */
    private List<DifyFileInfo> files;

    /**
     * 自动生成标题
     */
    @JSONField(name = "auto_generate_name")
    private Boolean autoGenerateName = true;

    /**
     * 指定的数据集ID列表（知识库检索）
     */
    @JSONField(name = "dataset_ids")
    private List<String> datasetIds;

    /**
     * 温度参数（0.0-1.0）
     */
    private Double temperature;

    /**
     * 最大token数
     */
    @JSONField(name = "max_tokens")
    private Integer maxTokens;

}

