using AuthorBuddy.Web.Models; namespace AuthorBuddy.Web.Services; public interface ILLMBackend { string Name { get; } bool SupportsModelManagement { get; } Task TestConnectionAsync(); Task> GetModelsAsync(); Task ChatAsync(string model, string prompt, string? systemPrompt = null, double? temperature = null); Task ChatStreamAsync(string model, string prompt, Func onToken, string? systemPrompt = null, double? temperature = null); Task GetEmbeddingAsync(string text, string? model = null); Task PullModelAsync(string name, IProgress? progress = null); Task DeleteModelAsync(string name); Task GetContextSizeAsync(string model); Task MeasureLatencyAsync(string model); Task ModelExistsAsync(string model); Task<(bool Success, int ContextWindow)> GetModelContextWindowAsync(string model); bool TestEmbedding(string model); }