Vai al contenuto

Integrazione di Azure Content Safety con la gestione delle API per OpenAI

Scopri come combinare Azure Content Safety e gestire le API per proteggere i tuoi endpoint Azure OpenAI.

Nel panorama digitale odierno, garantire la sicurezza e l’integrità dei contenuti generati dall’IA è di fondamentale importanza. La sicurezza dei contenuti di Azure, combinata con la gestione delle API di Azure, offre una soluzione robusta per la gestione e la protezione degli endpoint Azure OpenAI. Questo articolo ti guiderà attraverso il processo di integrazione, focalizzandosi sull’analisi del testo e sui meccanismi di protezione dei prompt.

Cos’è Azure Content Safety?

Azure AI Content Safety fornisce un’analisi per contenuti generati sia dagli utenti che dall’IA. Le attuali API disponibili includono:

  • Prompt Shields: scannerizza il testo degli utenti e dei documenti per rilevare attacchi verso i modelli linguistici (LLM).
  • Groundedness Detection: verifica se la risposta generata dagli LLM è basata sulle fonti fornite.
  • Protected Material Text Detection: controlla la presenza di materiale protetto da copyright nelle risposte generate dall’IA.
  • Analyze Text/Image: identifica e categorizza la gravità del testo riguardante contenuti sessuali, odio, violenza e autolesionismo.

Perché integrare Azure Content Safety?

Azure Content Safety offre algoritmi avanzati per rilevare e mitigare contenuti dannosi sia nei prompt degli utenti che nelle uscite generate dall’IA. Integrandolo con la gestione delle API di Azure puoi:

  • Migliorare la sicurezza: Proteggi le tue applicazioni da contenuti dannosi.
  • Assicurare la conformità: Rispetta gli standard e le linee guida normative.
  • Migliorare l’esperienza utente: Offri un servizio più sicuro e affidabile ai tuoi utenti.

Onboard dell’API di Azure Content Safety alla gestione delle API di Azure

Come per qualsiasi altra API, possiamo integrare l’API di Azure Content Safety alla gestione delle API di Azure importando l’ultima specifica OpenAPI. La gestione delle API aiuta ad abilitare l’autenticazione basata su Managed Identity per l’API di Content Safety, oltre a comunicare privatamente utilizzando gli endpoint privati.

Onboard di Azure OpenAI alla gestione delle API di Azure

Integrare Azure OpenAI nella gestione delle API di Azure offre diversi vantaggi, ampiamente discussi. Esistono anche blog e repository dedicati che approfondiscono questo argomento.

Integrare la sicurezza dei contenuti con le API di Azure OpenAI nella gestione delle API

AI Gateway Labs è un’incredibile risorsa che esplora diversi modelli attraverso una serie di laboratori. Sono inclusi due scenari di sicurezza dei contenuti che dimostrano questa integrazione.

Il modello dietro questa integrazione è sfruttare la politica send-request nella gestione delle API per invocare la rispettiva API di Content Safety e decidere se inoltrare la richiesta a OpenAI, se considerata sicura.

Il frammento di codice seguente concatena tutti i prompt nella richiesta in arrivo a OpenAI e valida se viene rilevato un attacco.

                    @("https://" + context.Request.Headers.GetValueOrDefault("Host") + "/contentsafety/text:shieldPrompt?api-version=2024-02-15-preview")            POST                            @(context.Variables.GetValueOrDefault<string>("SubscriptionKey"))                                        application/json                        @{                string[] documents = new string[] {};                string[] messages = context.Request.Body.As<JObject>(preserveContent: true)["messages"].Select(m => m.Value<string>("content")).ToArray();                JObject obj = new JObject();		                JProperty userProperty = new JProperty("userPrompt", string.Concat(messages));                JProperty documentsProperty = new JProperty("documents", new JArray(documents));                obj.Add(userProperty);                obj.Add(documentsProperty);                return obj.ToString();            }                                                                                                                                                                        @{                         var errorResponse = new                        {                            error = new                            {                                message = "The prompt was identified as an attack by the Azure AI Content Safety service."                            }                        };                                                    return JsonConvert.SerializeObject(errorResponse);                    }                                                                                                                                                            

Questo frammento concatena tutti i prompt nella richiesta in arrivo a OpenAI e li verifica rispetto ai limiti consentiti per odio, contenuti sessuali, autolesionismo e violenza.

                    @("https://" + context.Request.Headers.GetValueOrDefault("Host") + "/contentsafety/text:analyze?api-version=2023-10-01")            POST                            @(context.Variables.GetValueOrDefault<string>("SubscriptionKey"))                                        application/json                        @{                string[] categories = new string[] {"Hate","Sexual","SelfHarm","Violence"};                JObject obj = new JObject();                JProperty textProperty = new JProperty("text", string.Concat(context.Request.Body.As<JObject>(preserveContent: true)["messages"].Select(m => m.Value<string>("content")).ToArray()));                JProperty categoriesProperty = new JProperty("categories", new JArray(categories));                JProperty outputTypeProperty = new JProperty("outputType", "EightSeverityLevels");                obj.Add(textProperty);                obj.Add(categoriesProperty);                obj.Add(outputTypeProperty);                return obj.ToString();            }                                             (string)c["category"] == category.Key);                        if (categoryAnalysis != null && (int)categoryAnalysis["severity"] > category.Value)                        {                            // Threshold exceeded for the category                            thresholdExceededCategory = category.Key;                            break;                        }                    }                    return thresholdExceededCategory;                }" />                                                                                                                    @{                                var errorResponse = new                                {                                    error = new                                    {                                        message = "The content was filtered by the Azure AI Content Safety service for the category: " + (string)context.Variables["thresholdExceededCategory"]                                    }                                };                                return JsonConvert.SerializeObject(errorResponse);                            }                                                                                                                                                            

L’integrazione di Azure Content Safety con la gestione delle API per gli endpoint Azure OpenAI è un modo potente per migliorare la sicurezza e l’affidabilità delle tue applicazioni AI. Seguendo questi passaggi, è possibile garantire che i contenuti generati dall’IA siano sicuri, conformi e user-friendly.

Per ulteriori informazioni dettagliate, fai riferimento alla documentazione di Azure Content Safety e alla documentazione di Azure API Management.