namespace BotSharp.Abstraction.MLTasks.Settings; public class LlmModelSetting { /// /// Model Id, like "gpt-4", "gpt-4o", "o1". /// public string Id { get; set; } = null!; /// /// Deployment model name /// public string Name { get; set; } = null!; /// /// Model version /// public string Version { get; set; } = "1106-Preview"; /// /// Api version /// public string? ApiVersion { get; set; } /// /// Deployment same functional model in a group. /// It can be used to deploy same model in different regions. /// public string? Group { get; set; } public string ApiKey { get; set; } = null!; public string? Endpoint { get; set; } public LlmModelType Type { get; set; } = LlmModelType.Chat; /// /// If true, allow sending images/vidoes to this model /// public bool MultiModal { get; set; } /// /// If true, allow real-time interaction /// public bool RealTime { get; set; } /// /// If true, allow generating images /// public bool ImageGeneration { get; set; } /// /// Prompt cost per 1K token /// public float PromptCost { get; set; } /// /// Completion cost per 1K token /// public float CompletionCost { get; set; } /// /// Embedding dimension /// public int Dimension { get; set; } public LlmCost AdditionalCost { get; set; } = new(); public override string ToString() { return $"[{Type}] {Name} {Endpoint}"; } } public class LlmCost { public float CachedPromptCost { get; set; } = 0f; public float AudioPromptCost { get; set; } = 0f; public float ReasoningCompletionCost { get; } = 0f; public float AudioCompletionCost { get; } = 0f; } public enum LlmModelType { Text = 1, Chat = 2, Image = 3, Embedding = 4, Audio = 5 }