dramaling-vocab-learning/backend/DramaLing.Api/Models/Configuration/ReplicateOptions.cs

57 lines
1.9 KiB
C#

using System.ComponentModel.DataAnnotations;
namespace DramaLing.Api.Models.Configuration;
public class ReplicateOptions
{
public const string SectionName = "Replicate";
[Required(ErrorMessage = "Replicate API Key is required")]
public string ApiKey { get; set; } = string.Empty;
public string BaseUrl { get; set; } = "https://api.replicate.com/v1";
[Range(60, 600, ErrorMessage = "Timeout must be between 60 and 600 seconds")]
public int TimeoutSeconds { get; set; } = 300;
public string DefaultModel { get; set; } = "ideogram-v2a-turbo";
public Dictionary<string, ModelConfig> Models { get; set; } = new()
{
["ideogram-v2a-turbo"] = new ModelConfig
{
Version = "c169dbd9a03b7bd35c3b05aa91e83bc4ad23ee2a4b8f93f2b6cbdda4f466de4a",
CostPerGeneration = 0.025m,
DefaultWidth = 512,
DefaultHeight = 512,
StyleType = "General",
AspectRatio = "ASPECT_1_1",
Model = "V_2_TURBO"
},
["flux-1-dev"] = new ModelConfig
{
Version = "dev",
CostPerGeneration = 0.05m,
DefaultWidth = 512,
DefaultHeight = 512
},
["stable-diffusion-xl"] = new ModelConfig
{
Version = "39ed52f2a78e934b3ba6e2a89f5b1c712de7dfea535525255b1aa35c5565e08b",
CostPerGeneration = 0.04m,
DefaultWidth = 512,
DefaultHeight = 512
}
};
}
public class ModelConfig
{
public string Version { get; set; } = string.Empty;
public decimal CostPerGeneration { get; set; }
public int DefaultWidth { get; set; } = 512;
public int DefaultHeight { get; set; } = 512;
public string? StyleType { get; set; }
public string? AspectRatio { get; set; }
public string? Model { get; set; }
}