using DramaLing.Api.Models.DTOs; namespace DramaLing.Api.Services.AI; /// /// AI 提供商抽象介面,支援多個 AI 服務提供商 /// public interface IAIProvider { /// /// 提供商名稱 /// string ProviderName { get; } /// /// 提供商是否可用 /// bool IsAvailable { get; } /// /// 每次請求的大概成本(用於選擇策略) /// decimal CostPerRequest { get; } /// /// 支援的最大輸入長度 /// int MaxInputLength { get; } /// /// 平均響應時間(毫秒) /// int AverageResponseTimeMs { get; } /// /// 分析英文句子 /// /// 輸入文本 /// 分析選項 /// 分析結果 Task AnalyzeSentenceAsync(string inputText, AnalysisOptions options); /// /// 檢查提供商健康狀態 /// /// 健康狀態 Task CheckHealthAsync(); /// /// 取得提供商使用統計 /// /// 使用統計 Task GetStatsAsync(); } /// /// AI 提供商健康狀態 /// public class AIProviderHealthStatus { public bool IsHealthy { get; set; } public string? ErrorMessage { get; set; } public DateTime CheckedAt { get; set; } public int ResponseTimeMs { get; set; } } /// /// AI 提供商使用統計 /// public class AIProviderStats { public int TotalRequests { get; set; } public int SuccessfulRequests { get; set; } public int FailedRequests { get; set; } public double SuccessRate => TotalRequests > 0 ? (double)SuccessfulRequests / TotalRequests : 0; public int AverageResponseTimeMs { get; set; } public DateTime LastUsedAt { get; set; } public decimal TotalCost { get; set; } }