package com.kt.ai.client.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * Claude API 요청 DTO
 * API Docs: https://docs.anthropic.com/claude/reference/messages_post
 *
 * @author AI Service Team
 * @since 1.0.0
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ClaudeRequest {
    /**
     * 모델명 (예: claude-3-5-sonnet-20241022)
     */
    private String model;

    /**
     * 메시지 목록
     */
    private List<Message> messages;

    /**
     * 최대 토큰 수
     */
    @JsonProperty("max_tokens")
    private Integer maxTokens;

    /**
     * Temperature (0.0 ~ 1.0)
     */
    private Double temperature;

    /**
     * System 프롬프트 (선택)
     */
    private String system;

    /**
     * 메시지
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Message {
        /**
         * 역할 (user, assistant)
         */
        private String role;

        /**
         * 메시지 내용
         */
        private String content;
    }
}
