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; }
}