Azure OpenAI: l'intelligenza artificiale personalizzabile e sicura

Posted by danieleperugini on Tuesday, June 27, 2023

Azure OpenAI: l’intelligenza artificiale personalizzabile e sicura

Azure OpenAI è la nuova offerta inclusa in Azure Cognitive Services. Azure Cognitive Services è una collezione di servizi offerti da Microsoft che permette agli sviluppatori di incorporare facilmente intelligenza artificiale (AI) nelle loro applicazioni. Questi servizi forniscono funzionalità di AI come visione, linguaggio, ricerca e decisione, rendendo l’AI accessibile a tutti, indipendentemente dal livello di competenza.

I servizi di visione, ad esempio, possono essere utilizzati per identificare oggetti e persone nelle immagini, mentre i servizi di linguaggio possono essere utilizzati per tradurre testi, riconoscere il parlato e comprendere il significato del linguaggio naturale. I servizi di ricerca, d’altra parte, possono essere utilizzati per cercare informazioni in grandi quantità di testo, mentre i servizi di decisione possono aiutare a prendere decisioni informate basate sui dati.

Il Nuovo Servizio Azure OpenAI di Azure Cognitive Services

Recentemente, Microsoft ha introdotto un nuovo servizio all’interno di Azure Cognitive Services: Azure OpenAI. Questo servizio fornisce l’accesso ai potenti modelli linguistici di OpenAI, noti come Large Language Models (LLM). Un LLM è un modello di intelligenza artificiale che è stato addestrato su una vasta quantità di testo. Questi modelli hanno la capacità di generare testo che è coerente, pertinente e sorprendentemente umano.

I principali modelli integrati in Azure OpenAI includono:

  • GPT-3: Questo è un modello di generazione di contenuto in linguaggio naturale. È particolarmente utile per la generazione di contenuti, come la scrittura di articoli di blog o post sui social media.

  • Codex: Questo modello è dedicato alla generazione di codice. Può essere utilizzato per tradurre il linguaggio naturale in codice, rendendo più facile per gli sviluppatori scrivere codice.

  • DALL-E: Questo modello può generare immagini ex-novo o manipolare immagini pre-esistenti. È utile per la creazione di contenuti visivi personalizzati.

  • ChatGPT (gpt-3.5-turbo): Questo modello è progettato per le interfacce di conversazione. È ideale per la creazione di chatbot o assistenti virtuali.

Questi modelli possono essere facilmente adattati a specifiche attività, come la generazione di contenuti, il riepilogo, la ricerca semantica e la traduzione del linguaggio naturale in codice.

Come Azure OpenAI Differisce dagli Altri Servizi Cognitive

Azure OpenAI si distingue dagli altri servizi Cognitive Services per la sua capacità di generare contenuti in linguaggio naturale e codice. Questo lo rende particolarmente utile per applicazioni come assistenti di scrittura, generazione di codice e ragionamento sui dati.

Inoltre, Azure OpenAI offre la possibilità di personalizzare i modelli di intelligenza artificiale con dati aziendali e iperparametri specifici, sbloccando nuovi scenari di utilizzo. Questo è un vantaggio significativo rispetto ad altri servizi Cognitive Services, che offrono modelli pre-addestrati che potrebbero non essere perfettamente adatti alle tue esigenze specifiche.

In poche parole, significa che ogni azienda può prendere un modello di base che si avvicina il più possibile alle proprie esigenze e poi perfezionarlo con i dati proprietari! Ma di questa funzionalità ne parleremo tra poco…

Azure OpenAI VS Open AI

Da un primo punto di vista si potrebbe dire che Azure OpenAI non sia nient’altro che una “rivendita” di Open AI.

In effetti, il “motore” di OpenAI è proprio quello che Microsoft usa nel suo servizio Azure OpenAI.

Tuttavia ci sono delle differenze, o meglio, delle funzionalità ulteriori costruite attorno al “motore” di OpenAI che rendono il servizio di Azure OpenAI interessante in un contesto aziendale.

Ad esempio, mentre OpenAI offre una API per l’accesso ai suoi modelli, Azure OpenAI offre una piattaforma completamente integrata con la sicurezza, la scalabilità e l’integrazione dei servizi forniti dalla piattaforma cloud di Azure. Questo significa che gli sviluppatori possono sfruttare i modelli di OpenAI in un ambiente sicuro e scalabile, con l’accesso a tutti gli altri servizi offerti da Azure.

Infatti, una grossa differenza è che Azure OpenAI include anche funzionalità integrate per garantire l’uso responsabile dell’IA. Questo include la possibilità di filtrare e moderare il contenuto delle richieste e delle risposte degli utenti, garantendo che i modelli di intelligenza artificiale siano utilizzati in modo responsabile e per il loro scopo previsto.

Quello dell’uso responsabile dell’IA è un tema davvero importante, e quindi ho deciso che dedicherò un intero articolo a questo tema.

Inoltre, altra grossa differenza, è che Azure OpenAI offre sicurezza a livello aziendale con controllo degli accessi basato sui ruoli (RBAC) e reti private. Questo significa che si può avere la certezza che i dati e i modelli di intelligenza artificiale sono protetti e sicuri.

Scenari di Utilizzo di Azure OpenAI

Azure OpenAI può essere utilizzato in una serie di scenari. Ad esempio:

  • Generare codice da un linguaggio naturale: Con il modello Codex, gli sviluppatori possono semplicemente descrivere in linguaggio naturale la funzione che desiderano creare, e il modello genererà il codice corrispondente. Questo può accelerare notevolmente il processo di sviluppo del software.

  • Ragionare sui dati, fornendo intuizioni e risposte a domande complesse basate sui dati: Ad esempio, un’azienda potrebbe utilizzare Azure OpenAI per analizzare i dati delle vendite e rispondere a domande come “Quali prodotti hanno avuto le vendite più alte nel trimestre scorso?” o “Quali tendenze emergono dai dati delle vendite?”.

  • Generare contenuti in linguaggio naturale: Ad esempio, un’azienda potrebbe utilizzare GPT-3 per generare descrizioni di prodotti per il suo sito web di e-commerce, o per creare post sui social media che suonano come se fossero stati scritti da un umano.

La Nuova Funzionalità “Your Data” di Azure OpenAI

Una delle caratteristiche più interessanti di Azure OpenAI è la funzionalità “Your Data”. Questa funzionalità permette agli utenti di importare i propri dati per addestrare i modelli di OpenAI. Questo significa che gli utenti possono personalizzare i modelli di OpenAI per adattarsi meglio alle loro specifiche esigenze.

Microsoft assicura che i prompt (input) e i completamenti (output), gli embeddings e i dati di addestramento:

  • NON sono disponibili per altri clienti.

  • NON sono disponibili per OpenAI.

  • NON vengono utilizzati per migliorare i modelli di OpenAI.

  • NON vengono utilizzati per migliorare qualsiasi prodotto o servizio di Microsoft o di terze parti.

  • NON vengono utilizzati per migliorare automaticamente i modelli di Azure OpenAI per il tuo uso nella tua risorsa (I modelli sono senza stato, a meno che tu non affini esplicitamente i modelli con i tuoi dati di addestramento).

  • I tuoi modelli di Azure OpenAI affinati sono disponibili esclusivamente per il tuo uso.

  • Il servizio Azure OpenAI è completamente controllato da Microsoft; Microsoft ospita i modelli di OpenAI nell’ambiente Azure di Microsoft e il servizio NON interagisce con nessun servizio gestito da OpenAI (ad esempio, ChatGPT o l’API OpenAI).

L’Importanza dell’Importazione dei Propri Dati

L’importazione dei propri dati può essere estremamente utile per addestrare i modelli di OpenAI. Ad esempio, un’azienda potrebbe avere una grande quantità di dati di testo non strutturati, come recensioni diprodotti o feedback dei clienti. Importando questi dati in Azure OpenAI, l’azienda può addestrare un modello per comprendere meglio il linguaggio e il tono utilizzati dai suoi clienti. Questo può aiutare l’azienda a migliorare i suoi prodotti e servizi in base al feedback dei clienti.

Inoltre, con la funzionalità “Your Data”, è possibile utilizzare lo storage in cloud per gestire e organizzare i dati. Questo rende l’intero processo di addestramento del modello più efficiente e gestibile.

Modelli di Prezzo

Il prezzo per Azure OpenAI Service si basa su un modello di consumo pay-as-you-go con un prezzo per unità per ciascun modello. Questo offre flessibilità e permette agli utenti di pagare solo per quello che effettivamente utilizzano.

Un aspetto importante da considerare nel prezzo di Azure OpenAI è il concetto di tokenizzazione. I modelli di linguaggio di OpenAI lavorano con i “token” del testo. Un token può essere un carattere o una parola, a seconda della lingua. Ad esempio, in inglese, un token è solitamente una parola. Il numero di token in un testo influisce sul costo delle operazioni di Azure OpenAI. Ad esempio, un testo più lungo richiederà più token, il che aumenterà il costo.

Il prezzo per 1.000 token varia in base al modello utilizzato. Ad esempio, per il modello Text-Davinci, il costo è di circa €0.018 (a seconda del tasso di cambio corrente) per 1.000 token, mentre per il modello Code-Davinci, il costo è di circa €0.09 per 1.000 token.

Inoltre, ci sono costi associati all’addestramento e all’hosting dei modelli. Ad esempio, l’addestramento del modello Text-Davinci costa circa €76 per ora di calcolo, mentre l’hosting del modello costa circa €2.70 all’ora.

È importante notare che questi prezzi sono solo stime e il costo effettivo può variare in base a vari fattori, tra cui la regione in cui si trova il tuo servizio Azure e il tipo di accordo che hai con Microsoft. Ti consigliamo di controllare la pagina dei prezzi di Azure OpenAI per ottenere le informazioni più aggiornate e accurate.

Detto questo, come è possibile interagire con questi potenti servizi?

Gestione dei modelli tramite “Azure OpenAI Studio”

Azure OpenAI può essere gestito tramite l’applicazione web “Azure OpenAI Studio”. Questa interfaccia offre un ambiente intuitivo e facile da usare per lavorare con i modelli di OpenAI. Gli utenti possono accedere al servizio tramite API REST, Python SDK o direttamente tramite l’interfaccia di Azure OpenAI Studio.

Prima di arrivare ad utilizzare Azure OpenAI Studio va creata la risorsa. Per farlo si dovrà accedere ai cognitive services, e creare un nuovo servizio Open AI. Attenzione, ad oggi, per farlo, è necessario seguire il link proposto dal portale per fare richiesta a Microsoft di utilizzo del servizio.

Nella richiesta si fa menzione di quali servizi di Open AI si vuole utilizzare, scopi, e l’accettazione delle regole di condotta. Nel mio caso è stato sufficiente un giorno lavorativo per avere accesso al servizio.

Una volta creato il servizio OpenAI è possibile accedervi, e da li, è possibile aprire Azure OpenAI Studio.

Azure OpenAI Studio home page

Una delle prime cose da fare è pubblicare un modello, o meglio “distribuirlo”. Questo permetterà di poter utilizzare tale modello in tutte le attività sia tramite OpenAI Studio che tramite le API che vedremo dopo.

Per pubblicare un modello in OpenAI Studio si dovrà cliccare su “Deployments” e creare una nuova distribuzione seguendo il wizard che essenzialmente chiederà quale modello linguistico di base utilizzare.

distribuzione di un nuovo modello in Azure OpenAI Studio

Come si vede nell’immagine, avevo già creato un modello per eseguire dei test. Ma è possibile distribuirne più di uno.

Come è possibile quindi utilizzare questo modello, ad esempio, tramite le API?

Accesso ai modelli pubblicati tramite python

Per accedere ai modelli pubblicati di Azure OpenAI tramite Python, sono necessarie la chiave API e l’URL dell’API. E’ possibile ottenere queste informazioni dalla pagine del servizio open ai nei cognitive services (attenzione, non da Open AI Studio). Quindi nel portale Azure si deve entrare nella risorsa Cognitive Services, e successivamente nella risorsa Open AI creata all’inizio.

Accesso alla risorsa cognitive services e successivamente Azure OpenAI.

1 - Accesso alla risorsa cognitive services e successivamente Azure OpenAI.

Una volta entrati nel pannello di Azure OpenAI, tramite il menu “Keys and endpoint” è possibile ottenere l’API key e l’url.

dal menu “Keys and Endpoint” è possibile ottenere tutti i dati di accesso all’API

2 - dal menu “Keys and Endpoint” è possibile ottenere tutti i dati di accesso all’API

Una volta che si ha a disposizione la chiave API e l’URL dell’API, è possibile utilizzare la libreria Python openai per interagire con Azure OpenAI. E’ da notare che con questa libreria, sviluppata da OpenAI, è possibile connettersi direttamente ad Open AI.

Ecco un esempio di come farlo secondo la documentazione Microsoft:

import openai

# Setting up the deployment name
deployment_name = """ il nome del modello pubblicato in Open AI Studio """

# "azure" è un parametro fisso per usare Azure OpenAI
openai.api_type = "azure"

openai.api_key = """ The API key for your Azure OpenAI resource. """

# The base URL for your Azure OpenAI resource. e.g. "https://<your resource name>.openai.azure.com"
openai.api_base = " ... "

# Currently OPENAI API have the following versions available: 2022-12-01
openai.api_version = " ... "

prompt = "Hello world"

try:
    # Create a completion for the provided prompt and parameters
    # To know more about the parameters, checkout this documentation: https://learn.microsoft.com/en-us/azure/cognitive-services/openai/reference
    completion = openai.Completion.create(
                    prompt=prompt,
                    temperature=0,
                    max_tokens=30,
                    engine=deployment_name)

    # print the completion
    print(completion.choices[0].text.strip(" \n"))
    
    # Here indicating if the response is filtered
    if completion.choices[0].finish_reason == "content_filter":
        print("The generated content is filtered.")
        
except openai.error.APIError as e:
    # Handle API error here, e.g. retry or log
    print(f"OpenAI API returned an API Error: {e}")

except openai.error.AuthenticationError as e:
    # Handle Authentication error here, e.g. invalid API key
    print(f"OpenAI API returned an Authentication Error: {e}")

except openai.error.APIConnectionError as e:
    # Handle connection error here
    print(f"Failed to connect to OpenAI API: {e}")

except openai.error.InvalidRequestError as e:
    # Handle connection error here
    print(f"Invalid Request Error: {e}")

except openai.error.RateLimitError as e:
    # Handle rate limit error
    print(f"OpenAI API request exceeded rate limit: {e}")

except openai.error.ServiceUnavailableError as e:
    # Handle Service Unavailable error
    print(f"Service Unavailable: {e}")

except openai.error.Timeout as e:
    # Handle request timeout
    print(f"Request timed out: {e}")

L’Intelligenza Artificiale nelle Aziende

Come abbiamo visto, Microsoft sta investendo molto nell’intelligenza artificiale. E la partnership con OpenAI assieme alla propensione di Azure verso il mondo industriale rende Azure OpenAI un servizio che ciascuna azienda dovrebbe prendere in seria considerazione.

Siamo in un periodo ancora di scoperta. Tuttavia, come è possibile vedere dai dettagli sui prezzi, oggi l’utilizzo di grossi modelli di IA è a portata di mano praticamente per tutti. Cinque o dieci anni fa sarebbe stato impensabile.

E dal momento che questa non è solo una moda, ma è una tecnologia che si prevede verrà integrata sempre più estensivamente nel day by day aziendale, c’è seriamente da chiedersi come potrebbe essere integrabile nella propria azienda. Per risparmiare tempo, o per automatizzare task ripetitivi, o ancora per analizzare dati.

Una cosa è certa: cloud e intelligenza artificiale sono due tecnologie complementari che vale la pena approfondire seriamente.

Sei interessato a saperne di più su come Azure OpenAI può aiutare la tua azienda? O come poter migrare al cloud ed avere accesso a tecnologie importanti per il tuo business?

Non esitare a contattarmi. Sarò lieto di mettermi a disposizione tramite una consulenza gratuita per analizzare insieme a te i vantaggi offerti dal cloud e dall’intelligenza artificiale.

Alla prossima informazione!


IL MIO LIBRO: WHY YOUR DATA MATTER

Il libro dedicato ai manager e CIO che hanno a cuore i dati della propria azienda e vogliono avere sonni tranquilli (anticipando problematiche poco piacevoli legate al recupero, alla gestione o alla sicurezza dei dati)

Leggi il libro

REGISTRATI ALLA NEWSLETTER

Una piccola newsletter su data, azure e AI.

Dicono di me

Ricordo ancora bene cosa mi spinse a coinvolgerlo per la prima volta. Oltre che a trasmettermi competenza ed affidabilità, Daniele mi è sembrato fin da subito propenso a mettersi in gioco e a fare squadra con Fapim. Ho percepito in maniera marcata che questa persona avrebbe fatto suo il problema e avrebbe cercato di risolverlo concretamente.

(Leggi la testimonianza completa)

Fapim S.p.a.Ombretta Pacini, responsabile comunicazione e immagine aziendale
È orbitando nell’area Microsoft che abbiamo conosciuto Daniele. Abbiamo iniziato a collaborarci nel 2016 in un momento nel quale, dopo aver introdotto in azienda la metodologia di Agile grazie ad un lungo periodo di formazione interna su questo argomento, iniziavamo a metterla in pratica su nuovi progetti e necessitavamo di Project Manager e Team Leader con esperienza.

(Leggi la testimonianza completa)

Vivido S.r.l.Claudio Menzani, Paolo Ciccioni
Ho conosciuto Daniele grazie ad una sua ex collega che mi ha parlato molto bene di lui e dei suoi servizi di consulenza e collaborazione nel campo della consulenza. Mi ha spinta a rivolgermi a Daniele la sua preparazione, professionalità e disponibilità.

(Leggi la testimonianza completa)