diff --git a/blotztask-api/Modules/BreakDown/Commands/BreakdownTask.cs b/blotztask-api/Modules/BreakDown/Commands/BreakdownTask.cs index 8e20db6ae..35fdc45fa 100644 --- a/blotztask-api/Modules/BreakDown/Commands/BreakdownTask.cs +++ b/blotztask-api/Modules/BreakDown/Commands/BreakdownTask.cs @@ -1,5 +1,6 @@ using System.ComponentModel; using System.ComponentModel.DataAnnotations; +using System.ClientModel; using Azure.AI.Projects; using BlotzTask.Extension; using BlotzTask.Modules.AiUsage.Services; @@ -110,15 +111,13 @@ await recordAiUsageService.RecordAiUsageAsync(new RecordAiUsageRequest logger.LogWarning(oce, "Task breakdown was canceled"); throw new AiTaskGenerationException(AiErrorCode.Canceled, "The request was canceled.", oce); } - catch (Exception ex) when ( - ex.Message.Contains("429", StringComparison.OrdinalIgnoreCase) || - ex.Message.Contains("quota", StringComparison.OrdinalIgnoreCase) || - ex.Message.Contains("token", StringComparison.OrdinalIgnoreCase)) + catch (ClientResultException ex) when (ex.Status == 429) { - logger.LogWarning(ex, "Token limit exceeded during task breakdown."); + logger.LogError(ex, "Azure AI rate limit hit during task breakdown."); throw new AzureAiException(); } - catch (Exception ex) when ( + catch (ClientResultException ex) when ( + ex.Status == 400 && ex.Message.Contains("content_filter", StringComparison.OrdinalIgnoreCase)) { logger.LogWarning(ex, "Request blocked by content filter during task breakdown."); diff --git a/blotztask-api/Modules/ChatTaskGenerator/Services/AiChatService.cs b/blotztask-api/Modules/ChatTaskGenerator/Services/AiChatService.cs index 8b2ef12a3..664206106 100644 --- a/blotztask-api/Modules/ChatTaskGenerator/Services/AiChatService.cs +++ b/blotztask-api/Modules/ChatTaskGenerator/Services/AiChatService.cs @@ -1,4 +1,5 @@ using System.Diagnostics; +using System.ClientModel; using Azure.AI.Projects; using BlotzTask.Extension; using BlotzTask.Modules.AiUsage.Services; @@ -117,15 +118,13 @@ await recordAiUsageService.RecordAiUsageAsync(new RecordAiUsageRequest logger.LogInformation(oce, "AI task generation cancelled."); throw new AiTaskGenerationException(AiErrorCode.Canceled, "The request was canceled.", oce); } - catch (Exception ex) when ( - ex.Message.Contains("429", StringComparison.OrdinalIgnoreCase) || - ex.Message.Contains("quota", StringComparison.OrdinalIgnoreCase) || - ex.Message.Contains("token", StringComparison.OrdinalIgnoreCase)) + catch (ClientResultException ex) when (ex.Status == 429) { - logger.LogWarning(ex, "Token limit exceeded during AI task generation."); + logger.LogError(ex, "Azure AI rate limit hit during AI task generation."); throw new AzureAiException(); } - catch (Exception ex) when ( + catch (ClientResultException ex) when ( + ex.Status == 400 && ex.Message.Contains("content_filter", StringComparison.OrdinalIgnoreCase)) { logger.LogWarning(ex, "Request blocked by content filter."); @@ -138,4 +137,4 @@ await recordAiUsageService.RecordAiUsageAsync(new RecordAiUsageRequest "An unhandled exception occurred during AI task generation.", ex); } } -} \ No newline at end of file +}