diff --git a/Directory.Packages.props b/Directory.Packages.props
index a0d29eb311..e6680a6590 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -57,6 +57,7 @@
+
diff --git a/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPaste.csproj b/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPaste.csproj
index c8ea965a4d..f021076e98 100644
--- a/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPaste.csproj
+++ b/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPaste.csproj
@@ -62,6 +62,7 @@
+
diff --git a/src/modules/AdvancedPaste/AdvancedPaste/Helpers/AICompletionsHelper.cs b/src/modules/AdvancedPaste/AdvancedPaste/Helpers/AICompletionsHelper.cs
index d9586638b8..2b4ebe3bee 100644
--- a/src/modules/AdvancedPaste/AdvancedPaste/Helpers/AICompletionsHelper.cs
+++ b/src/modules/AdvancedPaste/AdvancedPaste/Helpers/AICompletionsHelper.cs
@@ -12,6 +12,7 @@ using Azure.AI.OpenAI;
using ManagedCommon;
using Microsoft.PowerToys.Settings.UI.Library;
using Microsoft.PowerToys.Telemetry;
+using OpenAI.Moderations;
using Windows.Security.Credentials;
namespace AdvancedPaste.Helpers
@@ -76,13 +77,28 @@ namespace AdvancedPaste.Helpers
{
OpenAIClient azureAIClient = new OpenAIClient(_openAIKey);
+ string inputString = systemInstructions + "\n\n" + userMessage;
+
+ ModerationClient moderationClient = new("omni-moderation-latest", _openAIKey);
+
+ // TODO: Run this as async along with the chat completion result to maintain speed
+ ModerationResult moderationResult = moderationClient.ClassifyText(inputString);
+
+ if (moderationResult.Flagged)
+ {
+#pragma warning disable CA2201 // Use explicit type
+ // TODO: Use a more explicit type and handle the error more gracefully
+ throw new Exception("Flagged by moderation");
+#pragma warning restore CA2201 // Use explicit type
+ }
+
var response = azureAIClient.GetCompletions(
new CompletionsOptions()
{
DeploymentName = _modelName,
Prompts =
{
- systemInstructions + "\n\n" + userMessage,
+ inputString,
},
Temperature = 0.01F,
MaxTokens = 2000,