Integrare OpenAI di Azure nell'app
Azure OpenAI offre SDK specifici del linguaggio e un'API REST che gli sviluppatori possono usare per aggiungere funzionalità di intelligenza artificiale alle applicazioni. Le funzionalità di intelligenza artificiale generativa di Azure OpenAI vengono fornite tramite modelli. I modelli disponibili nel servizio Azure OpenAI appartengono a famiglie diverse, ognuna con il proprio ambito. Per usare uno di questi modelli, è necessario distribuirlo tramite il Servizio OpenAI di Azure.
Creare una risorsa OpenAI di Azure
Una risorsa di OpenAI di Azure può essere distribuita sia tramite l'interfaccia della riga di comando di Azure sia tramite il portale di Azure. La creazione della risorsa OpenAl di Azure tramite il portale di Azure è simile alla distribuzione di singole risorse di Servizi di Azure AI e fa parte dei Servizi di Azure AI.
- Passare al portale di Azure
- Cercare Azure OpenAI, selezionare la voce e fare clic su Crea.
- Immettere i valori appropriati nei campi vuoti e creare la risorsa.
Le possibili aree per una risorsa di Azure OpenAI sono attualmente limitate. Scegliere l'area più vicina alla posizione fisica o quella più vicina con la disponibilità per i modelli da usare.
Dopo aver creato la risorsa, si disporrà delle chiavi e di un endpoint da usare nell'app.
Scegliere e distribuire un modello
Ogni famiglia di modelli eccelle nell'esecuzione di attività diverse e le funzionalità dei modelli all'interno di ciascuna famiglia sono diverse. Le famiglie di modelli si suddividono in tre famiglie principali:
- Trasformatore generativo pre-addestrato (GPT): modelli che comprendono e generano il linguaggio naturale e del codice. Questi modelli sono ideali per le attività generali, le conversazioni e i formati di chat.
- Codice (
gpt-3
e versioni precedenti): i modelli di codice sono basati sui modelli GPT e il training di questi modelli viene eseguito su milioni di righe di codice. Sono in grado di comprendere e generare codice, inclusa l'interpretazione di commenti o linguaggio naturale per generare codice.gpt-35-turbo
e i modelli successivi includono questa funzionalità di codice senza la necessità di un modello di codice separato. - Incorporamenti: questi modelli sono in grado di comprendere e usare incorporamenti, che sono un formato speciale di dati che possono essere usati dai modelli e dagli algoritmi di Machine Learning.
Questo modulo è incentrato sui modelli GPT generali, mentre gli altri modelli sono illustrati in altri moduli.
Per i modelli meno recenti, la famiglia di modelli e la relativa capacità sono indicate nel nome del modello di base, ad esempio text-davinci-003
, che specifica che si tratta di un modello di testo, con capacità di livello davinci
e identificatore 3
. I dettagli su modelli, livelli di funzionalità e convenzioni di denominazione sono disponibili nella pagina della documentazione dei modelli del Servizio OpenAI di Azure.
I modelli più recenti specificano quale generazione gpt
e se sono la versione turbo
, ad esempio gpt-35-turbo
che rappresenta il modello GPT 3.5 Turbo.
Per distribuire un modello da usare, passare ad Azure AI Studio e passare alla pagina Distribuzioni . Il lab più avanti in questo modulo illustra nel dettaglio questa procedura.
Autenticazione e specifica del modello distribuito
Quando si distribuisce un modello in OpenAI di Azure, occorre scegliere un nome di distribuzione da assegnargli. Durante la configurazione dell'app, è necessario specificare l'endpoint della risorsa, la chiave e il nome della distribuzione per indicare il modello di distribuzione a cui inviare la richiesta. Questo consente di distribuire vari modelli all'interno della stessa risorsa e di inviare richieste al modello appropriato a seconda dell'attività.
Progettazione dei prompt
Il modo in cui il prompt di input viene scritto svolge un ruolo importante nel modo in cui il modello di intelligenza artificiale risponderà. Ad esempio, se il prompt è una semplice richiesta come ad esempio "What is Azure OpenAI", spesso si ottiene una risposta generica simile a quella di un motore di ricerca.
Se invece si forniscono più dettagli su ciò che deve contenere la risposta, si ottiene una risposta più specifica. Ad esempio, dato questo prompt:
Classify the following news headline into 1 of the following categories: Business, Tech, Politics, Sport, Entertainment
Headline 1: Donna Steffensen Is Cooking Up a New Kind of Perfection. The Internet’s most beloved cooking guru has a buzzy new book and a fresh new perspective
Category: Entertainment
Headline 2: Major Retailer Announces Plans to Close Over 100 Stores
Category:
La categoria vuota sotto il titolo verrà probabilmente completata con "Business".
Diversi esempi simili a questo sono disponibili nell'elenco a discesa Esempi di prompt in Azure AI Studio Playground. È importante cercare di essere il più specifici possibile sulla risposta che si vuole ottenere dal modello, che potrebbe essere sorprendentemente approfondita.
Nota
Non è mai un bene presupporre che le risposte di un modello di intelligenza artificiale siano fattuali o corrette. I team o i singoli utenti incaricati di sviluppare e distribuire sistemi di intelligenza artificiale devono lavorare per identificare, misurare e mitigare i danni. È responsabilità dell'azienda verificare le risposte di un modello di intelligenza artificiale e usare l'IA in modo responsabile. Per altre indicazioni sull'uso responsabile dei modelli OpenAI di Azure, vedere le note sulla trasparenza di Microsoft per Azure OpenAI.
Altri dettagli sono disponibili nella pagina della documentazione sulla progettazione dei prompt.
Endpoint disponibili
È possibile accedere ad Azure OpenAI tramite un'API REST o un SDK disponibile per Python, C#, JavaScript e altro ancora. Gli endpoint disponibili per l'interazione con un modello distribuito vengono usati in modi diversi e determinati endpoint possono usare solo determinati modelli. Gli endpoint disponibili sono:
- Completion: il modello accetta un prompt di input e genera uno o più completamenti stimati. Questo playground verrà visualizzato nello studio, ma non verrà trattato in dettaglio in questo modulo.
- ChatCompletion: il modello accetta input sotto forma di conversazione di chat (dove i ruoli vengono specificati con il messaggio che inviano) e viene generato il completamento successivo della chat.
- Embeddings: il modello accetta l'input e ne restituisce una rappresentazione vettoriale.
Per esempio, l'input per ChatCompletion
è invece una conversazione con ruoli chiaramente definiti per ogni messaggio:
{"role": "system", "content": "You are a helpful assistant, teaching people about AI."},
{"role": "user", "content": "Does Azure OpenAI support multiple languages?"},
{"role": "assistant", "content": "Yes, Azure OpenAI supports several languages, and can translate between them."},
{"role": "user", "content": "Do other Azure AI Services support translation too?"}
Quando si alimenta il modello di intelligenza artificiale con una conversazione reale, questo può generare una risposta migliore con un tono, una formulazione e un contesto più accurati. L'endpoint ChatCompletion
consente al modello ChatGPT di avere una conversazione più realistica inviando la cronologia della chat con il messaggio utente successivo.
ChatCompletion
supporta anche scenari non di chat, ad esempio il riepilogo o l'estrazione di entità. A tale scopo si può fornire una breve conversazione, specificando le informazioni di sistema e ciò che si desidera ottenere, insieme all'input dell'utente. Ad esempio, se si vuole generare la descrizione di un lavoro, fornire a ChatCompletion
un elemento simile all'input di conversazione seguente.
{"role": "system", "content": "You are an assistant designed to write intriguing job descriptions. "},
{"role": "user", "content": "Write a job description for the following job title: 'Business Intelligence Analyst'. It should include responsibilities, required qualifications, and highlight benefits like time off and flexible hours."}
Nota
Completion
è disponibile per tutti i modelli di generazione gpt-3
, mentre ChatCompletion
è l'unica opzione supportata per i modelli gpt-4
ed è l'endpoint preferito quando si usa il modello gpt-35-turbo
. Il lab di questo modulo usa gpt-35-turbo
con l'endpoint ChatCompletion
.