using System.ComponentModel.DataAnnotations; namespace DramaLing.Api.Models.Configuration; public class GeminiOptions { public const string SectionName = "Gemini"; [Required(ErrorMessage = "Gemini API Key is required")] public string ApiKey { get; set; } = string.Empty; /// /// API 請求超時時間(秒) /// [Range(1, 120, ErrorMessage = "Timeout must be between 1 and 120 seconds")] public int TimeoutSeconds { get; set; } = 30; /// /// API 請求最大重試次數 /// [Range(1, 10, ErrorMessage = "Max retries must be between 1 and 10")] public int MaxRetries { get; set; } = 3; /// /// AI 回應最大 Token 數量 /// [Range(100, 10000, ErrorMessage = "Max tokens must be between 100 and 10000")] public int MaxOutputTokens { get; set; } = 2000; /// /// AI 回應的隨機性程度(0.0-2.0) /// [Range(0.0, 2.0, ErrorMessage = "Temperature must be between 0 and 2")] public double Temperature { get; set; } = 0.7; /// /// 使用的 Gemini 模型名稱 /// public string Model { get; set; } = "gemini-2.0-flash"; /// /// Gemini API 基本 URL /// public string BaseUrl { get; set; } = "https://generativelanguage.googleapis.com"; }