Introduzione alla creazione di soluzioni di intelligenza artificiale generative per sviluppatori
L'intelligenza artificiale generativa, abilitata da modelli di linguaggio di grandi dimensioni ,apre nuove possibilità interessanti per sviluppatori di software e organizzazioni. I servizi come Azure OpenAI democratizzano lo sviluppo di intelligenza artificiale offrendo API facili da usare, consentendo agli sviluppatori di qualsiasi livello di competenza di integrare funzionalità avanzate di intelligenza artificiale nelle applicazioni senza bisogno di conoscenze specializzate o richiedere alle organizzazioni di investire nell'hardware.
In qualità di sviluppatore di applicazioni, si potrebbe faticare a comprendere il ruolo che è possibile svolgere e dove ci si adatta. Ad esempio, forse ti stai chiedendo a quale livello nello "stack di intelligenza artificiale" dovresti concentrarti sull'apprendimento? O ci si potrebbe chiedere cosa si è in grado di costruire data le tecnologie esistenti?
Per rispondere a queste domande, è importante sviluppare prima di tutto un modello mentale che mappa come tutte le nuove terminologie e tecnologie si adattino a ciò che si capisce già. Lo sviluppo di un modello mentale consente di progettare e creare funzionalità di intelligenza artificiale generative nelle applicazioni. A tal fine, lo scopo di questa serie di articoli è illustrare come si applica l'esperienza di sviluppo software corrente all'intelligenza artificiale generativa. Gli articoli forniscono anche un set di livelli su parole chiave e concetti quando si inizia a sviluppare le prime soluzioni di intelligenza artificiale generative.
Cosa sperano le aziende a raggiungere con l'IA generativa?
Per comprendere come si applica l'esperienza di sviluppo software corrente all'IA generativa, è importante iniziare comprendendo come le aziende intendono trarre vantaggio da esso.
Le aziende considerano l'IA generativa come mezzo per migliorare il coinvolgimento dei clienti, aumentare l'efficienza operativa e migliorare la risoluzione dei problemi e la creatività. L'integrazione dell'IA generativa nei sistemi esistenti consente alle aziende di migliorare gli ecosistemi software. Può integrare le funzionalità software tradizionali con funzionalità avanzate di intelligenza artificiale, ad esempio raccomandazioni personalizzate per gli utenti o un agente intelligente in grado di rispondere a domande specifiche dell'organizzazione o del prodotto.
Ecco alcuni scenari comuni in cui l'IA generativa può aiutare le aziende:
- Generazione di contenuti
- Generare testo, codice, immagini e suoni. Questo può essere utile per marketing, vendite, IT, comunicazioni interne e altro ancora.
- Elaborazione del linguaggio naturale
- Comporre o migliorare le comunicazioni aziendali tramite suggerimenti o generazione completa di messaggi.
- "Chattare con i dati", o in altre parole, consentendo a un utente di porre domande in un'esperienza di chat usando i dati archiviati nei database o nei documenti come base per le risposte.
- Riepilogo, organizzazione e semplificazione di grandi corpi di contenuto per rendere il contenuto più accessibile.
- "Ricerca semantica", o piuttosto, consente agli utenti di cercare documenti e dati senza usare corrispondenze esatte di parole chiave.
- Traduzione della lingua per aumentare la portata e l'accessibilità del contenuto.
- Analisi dei dati
- Analizzare i mercati e identificare le tendenze nei dati.
- Modellare gli scenari di "simulazione" per aiutare le aziende a pianificare possibili cambiamenti o sfide in ogni area dell'azienda.
- Analizzare il codice per suggerire miglioramenti, correggere i bug e generare la documentazione.
Come si può notare, gli sviluppatori di software hanno l'opportunità di aumentare notevolmente il loro impatto integrando applicazioni di intelligenza artificiale generative e funzionalità nel software su cui si basano le organizzazioni.
Come si compilano questi tipi di applicazioni?
Sebbene il modello LLM (Large Language Model) esegua il carico elevato, si creano sistemi che si integrano, orchestrano e monitorano i risultati. Anche se c'è molto da imparare, è possibile applicare le competenze già apprese:
- Esecuzione di chiamate alle API tramite REST, JSON o SDK (Software Development Kit) specifici del linguaggio
- Orchestrazione delle chiamate alle API e esecuzione della logica di business
- Archiviazione e recupero da archivi dati
- Integrazione di input e risultati nell'esperienza utente
- Creazione di API che possono essere chiamate da VM
In questo modo, lo sviluppo di soluzioni di intelligenza artificiale generative si basa sulle competenze esistenti.
Quali strumenti e servizi sono disponibili?
Microsoft investe nello sviluppo di strumenti, servizi, API, esempi e risorse di apprendimento per iniziare il percorso di sviluppo di intelligenza artificiale generativo. Ognuno evidenzia alcune importanti preoccupazioni o responsabilità necessarie per costruire una soluzione di IA generativa. Per usare un determinato servizio, API o risorsa in modo efficace, la sfida consiste nell'assicurarsi di:
- Comprendere le funzioni, i ruoli e le responsabilità tipici in un determinato tipo di funzionalità di intelligenza artificiale generativa? Ad esempio, come si discute a lungo negli articoli concettuali che descrivono i sistemi di chat basati su Recupero di generazione aumentata (RAG), esistono molte responsabilità architetturali nel sistema. È importante comprendere il dominio del problema e i vincoli intimamente prima di progettare un sistema che risolve il problema.
- Comprendere l'esistenza di API, servizi e strumenti per una determinata funzione, ruolo o responsabilità? Ora che si conoscono i vincoli e il dominio del problema, è possibile scegliere di compilare tale aspetto del sistema manualmente con codice personalizzato o usare strumenti con poco codice o senza codice o chiamare le API per i servizi esistenti.
- Comprendere le opzioni, tra cui soluzioni incentrate sul codice e senza codice o con poco codice. Potresti costruire tutto da solo, ma è un uso efficiente del tuo tempo e della tua abilità? A seconda dei requisiti, in genere è possibile unire una combinazione di tecnologie e approcci (codice, no-code, low-code, strumenti).
Il punto è che non esiste un unico modo giusto per creare funzionalità di intelligenza artificiale generative nelle applicazioni. Esistono molti strumenti e approcci. È importante valutare i compromessi.
Iniziare con un focus sul livello dell'applicazione
Non è necessario comprendere tutto sul lavoro generativo dell'intelligenza artificiale per iniziare e essere produttivi. Come indicato in precedenza, probabilmente si conosce già abbastanza perché è possibile usare le API e applicare le competenze esistenti.
Ad esempio, non è necessario eseguire il training del proprio LLM da zero. La formazione di un LLM richiederebbe tempo e risorse che la maggior parte delle aziende non è disposta a impegnarsi. Si basa invece su modelli di base con training preliminare esistenti, ad esempio GPT-4, effettuando chiamate API a servizi ospitati esistenti come l'API OpenAI di Azure. In questo modo, l'aggiunta di funzionalità di intelligenza artificiale generative in un'applicazione esistente non è diversa dall'aggiunta di altre funzionalità in base a una chiamata API.
Ricercando come vengono addestrati i LLMs o come funzionano per soddisfare la curiosità intellettuale, ma comprendendo veramente il funzionamento delle VM richiede una conoscenza approfondita della data science e del background matematico per supportarlo. Questo può includere corsi di livello laurea su statistiche, probabilità e teoria delle informazioni.
Se si proviene da una base di informatica, è possibile apprezzare che la maggior parte dello sviluppo di applicazioni avviene a un "livello superiore nello stack" di ricerca e tecnologie. Si potrebbe avere una certa comprensione di ogni livello, ma probabilmente si è specializzati nel livello di sviluppo dell'applicazione, con un focus su un linguaggio di programmazione e una piattaforma specifici (API disponibili, strumenti, modelli e così via).
Lo stesso vale per il campo dell'intelligenza artificiale. È possibile comprendere e apprezzare la teoria che si basa su LLMs, ma probabilmente si concentrerà l'attenzione sul livello dell'applicazione o aiutare a implementare modelli o processi per abilitare uno sforzo generativo di intelligenza artificiale nell'azienda.
Ecco una rappresentazione semplificata dei livelli di conoscenza necessari per implementare le funzionalità di intelligenza artificiale generative in un'applicazione nuova o esistente:
Al livello più basso, si hanno data scientist che eseguono ricerche di data science per risolvere o migliorare l'IA in base a una conoscenza matematica approfondita delle statistiche, della teoria della probabilità e così via. Un livello verso l'alto, basato sul livello di base più basso, si dispone di data scientist che implementano concetti teorici in VM, creando le reti neurali e addestrando i pesi e le distorsioni per fornire una parte pratica di software in grado di accettare input (prompt) e generare risultati (completamenti). Il processo di calcolo di composizione dei completamenti in base alle richieste è noto come inferenza. Ci sono coloro che sono responsabili dell'implementazione del modo in cui i neuroni della rete neurale stimano la parola o il pixel successivo da generare.
Data la quantità di potenza di elaborazione necessaria per eseguire il training dei modelli e generare risultati in base a un input. I modelli vengono spesso sottoposti a training e ospitati in data center di grandi dimensioni. È possibile eseguire il training o l'hosting di un modello in un computer locale, ma i risultati sono spesso lenti (senza schede video GPU dedicate per gestire il calcolo necessario per generare i risultati).
Se ospitato in data center di grandi dimensioni, l'accesso a livello di codice a questi modelli viene fornito tramite le API REST e questi vengono talvolta "sottoposti a wrapping" dagli SDK e disponibili per gli sviluppatori di applicazioni per semplificare l'uso. Altri strumenti possono contribuire a migliorare l'esperienza di sviluppo, fornendo osservabilità o altre utilità. Gli sviluppatori di applicazioni possono effettuare chiamate a queste API per implementare funzionalità aziendali.
Oltre a richiedere i modelli a livello di codice, esistono modelli e processi emergenti per aiutare le aziende a creare funzionalità aziendali affidabili basate sull'intelligenza artificiale generativa. Ad esempio, esistono modelli emergenti per aiutare le aziende a garantire che il testo generato, il codice, le immagini e il suono siano conformi agli standard etici e di sicurezza, nonché impegni per la privacy dei dati dei clienti.
In questo stack di problemi o livelli, se si è uno sviluppatore di applicazioni responsabile della creazione di funzionalità aziendali, è possibile eseguire il push oltre il livello dell'applicazione nello sviluppo e nel training del proprio LLM. Ma questo livello di comprensione richiede un nuovo set di competenze che sono spesso disponibili solo a livello accademico. Se non è possibile impegnarsi a sviluppare competenze in ambito accademico di data science per creare il "livello successivo verso il basso nello stack" (in modo da parlare), concentrarsi sugli argomenti del livello applicazione, ad esempio:
- Informazioni sulle API e sugli SDK disponibili, sulle funzionalità disponibili, sui vari endpoint prodotti e così via.
- Informazioni su strumenti e servizi correlati per creare tutte le funzionalità necessarie per una soluzione di intelligenza artificiale generativa pronta per la produzione.
- Comprendere l'ingegneria dei prompt, ad esempio come ottenere i risultati migliori facendo domande o riformulando le domande.
- Comprendere dove emergono i colli di bottiglia e come ridimensionare una soluzione. Informazioni sulle attività coinvolte nella registrazione o nell'acquisizione dei dati di telemetria senza violare i problemi di privacy dei clienti.
- Comprendere le caratteristiche delle varie VM (punti di forza, casi d'uso, quali sono i benchmark e cosa misurano, differenze chiave tra fornitori e modelli prodotti da ogni fornitore e così via) per scegliere il modello giusto per le esigenze dell'azienda.
- Comprendere i modelli, i flussi di lavoro e i processi più recenti usati per creare funzionalità di intelligenza artificiale efficaci e resilienti nelle applicazioni.
Servizi e strumenti disponibili da Microsoft
Sono disponibili strumenti e servizi di intelligenza artificiale senza codice bassi e senza codice disponibili da Microsoft per facilitare la compilazione di parte o l'intera soluzione. Vari servizi di Azure possono svolgere ruoli fondamentali, ognuno dei quali contribuisce all'efficienza, alla scalabilità e all'affidabilità della soluzione:
API e SDK per un approccio incentrato sul codice
Al centro di ogni soluzione di intelligenza artificiale generativa è presente un modello LLM e Azure OpenAI fornisce l'accesso a tutte le funzionalità disponibili nei modelli come GPT-4.
Prodotto | Descrizione |
---|---|
OpenAI di Azure | Un servizio ospitato che fornisce l'accesso a potenti modelli linguistici come GPT-4. Esistono diverse API che consentono di eseguire tutte le funzioni tipiche di un LLM, ad esempio la creazione di incorporamenti, la creazione di un'esperienza di chat e così via, con accesso completo alle impostazioni e modifiche per personalizzare i risultati in base alle esigenze. |
Ambienti di esecuzione
Poiché si sta creando logica di business, logica di presentazione o API per integrare l'intelligenza artificiale generativa nelle applicazioni dell'organizzazione, è necessario ospitare ed eseguire tale logica.
Prodotto | Descrizione |
---|---|
servizio app Azure (o uno dei diversi servizi cloud basati su contenitori) | Questa piattaforma può ospitare le interfacce Web o le API tramite cui gli utenti interagiscono con il sistema rag-chat. Supporta lo sviluppo rapido, la distribuzione e il ridimensionamento delle applicazioni Web, semplificando la gestione dei componenti front-end del sistema. |
Funzioni di Azure | Usare il calcolo serverless per gestire le attività guidate dagli eventi all'interno del sistema rag-chat. Ad esempio, usarlo per attivare processi di recupero dati, elaborare query utente o gestire attività in background come la sincronizzazione e la pulizia dei dati. Consente un approccio più modulare e scalabile alla creazione del back-end del sistema. |
Low-code/No-code
In alternativa, alcune delle logiche richieste dalla soluzione potrebbero essere compilate rapidamente e ospitate in modo affidabile da soluzioni con poco codice o senza codice.
Prodotto | Descrizione |
---|---|
Studio AI della piattaforma Azure | Azure AI Studio può essere usato per il training, il test e la distribuzione di modelli di Machine Learning personalizzati che potrebbero migliorare il sistema rag-chat. Ad esempio, usare Azure AI Studio per personalizzare la generazione di risposte o migliorare la pertinenza delle informazioni recuperate. |
Database vettoriale
Alcune soluzioni di intelligenza artificiale generative potrebbero richiedere l'archiviazione e il recupero dei dati usati per aumentare la generazione, ad esempio sistemi di chat basati su RAG che consentono agli utenti di chattare con i dati dell'organizzazione. In questo caso d'uso è necessario un archivio dati vettoriale.
Prodotto | Descrizione |
---|---|
Azure AI Search | Questo servizio può essere usato per eseguire una ricerca efficiente in set di dati di grandi dimensioni per trovare informazioni pertinenti che possono essere usate per informare le risposte generate dai modelli linguistici. È utile per il componente di recupero di un sistema RAG, assicurandosi che le risposte generate siano più informative e contestualmente pertinenti. |
Cosmos DB | Questo servizio di database multimodello distribuito a livello globale potrebbe archiviare grandi quantità di dati strutturati e non strutturati a cui deve accedere il sistema rag-chat. Le sue funzionalità di lettura e scrittura veloci lo rendono ideale per gestire i dati in tempo reale al modello linguistico e archiviare le interazioni utente per un'ulteriore analisi. |
Cache Redis di Azure | Questo archivio dati in memoria completamente gestito può essere usato per memorizzare nella cache le informazioni a cui si accede di frequente, riducendo la latenza e migliorando le prestazioni del sistema rag-chat. È particolarmente utile per archiviare dati di sessione, preferenze utente e query comuni. |
Database di Azure per PostgreSQL - Server flessibile | Questo servizio di database gestito può archiviare i dati dell'applicazione, inclusi i log, i profili utente e i dati cronologici delle chat. La flessibilità e la scalabilità supportano le esigenze dinamiche di un sistema rag-chat, assicurando che i dati siano costantemente disponibili e sicuri. |
Ognuno di questi servizi di Azure contribuisce alla creazione di un'architettura completa, scalabile ed efficiente per una soluzione di intelligenza artificiale generativa, consentendo agli sviluppatori di usare le migliori funzionalità cloud e tecnologie di intelligenza artificiale di Azure.
Sviluppo di intelligenza artificiale incentrato sul codice con l'API OpenAI di Azure
In questa sezione viene illustrato l'API OpenAI di Azure. Come indicato in precedenza, si accede alla funzionalità LLM a livello di codice tramite un'API Web RESTful. È possibile usare letteralmente qualsiasi linguaggio di programmazione moderno per chiamare queste API. In molti casi, gli SDK specifici della lingua o della piattaforma funzionano come "wrapper" per le chiamate API REST per rendere l'esperienza più idiotica.
- Libreria client OpenAI di Azure per .NET
- Libreria client OpenAI di Azure per Java
- Libreria client OpenAI di Azure per JavaScript
- Modulo client OpenAI di Azure per Go
- Python non ha una libreria client specifica di Azure. Si usa il pacchetto Python OpenAI e si modificano diverse opzioni.
Se un linguaggio o un SDK della piattaforma non è disponibile, lo scenario peggiore è che è necessario effettuare chiamate REST direttamente all'API Web. Tuttavia, la maggior parte degli sviluppatori ha familiarità con la chiamata alle API Web.
Azure OpenAI offre una gamma di API progettate per facilitare diversi tipi di attività basate sull'intelligenza artificiale, consentendo agli sviluppatori di integrare funzionalità avanzate di intelligenza artificiale nelle applicazioni. Ecco una panoramica delle API principali disponibili in OpenAI:
- API Completamento chat: questa API è incentrata sugli scenari di generazione di testo, incluse le funzionalità di conversazione, consentendo la creazione di chatbot e assistenti virtuali che possono impegnarsi in un dialogo naturale e simile a quello umano. È ottimizzato per casi d'uso interattivi, tra cui supporto clienti, assistenti personali e ambienti di apprendimento interattivo. Tuttavia, viene usato anche per tutti gli scenari di generazione di testo, tra cui riepilogo, completamento automatico, scrittura di documenti, analisi di testo, traduzione e così via. Si tratta del punto di ingresso per le funzionalità di visione attualmente in anteprima( ovvero caricare un'immagine e porre domande su di esso).
- API di moderazione: questa API è progettata per aiutare gli sviluppatori a identificare e filtrare contenuti potenzialmente dannosi all'interno del testo, fornendo uno strumento per garantire interazioni utente più sicure rilevando automaticamente materiale offensivo, non sicuro o altrimenti inappropriato.
- API Incorporamenti: l'API Incorporamenti genera rappresentazioni vettoriali di input di testo, conversione di parole, frasi o paragrafi in vettori ad alta dimensione. Questi incorporamenti possono essere usati per la ricerca semantica, il clustering, l'analisi della somiglianza del contenuto e altro ancora. Acquisisce il significato sottostante e le relazioni semantiche nel testo.
- API di generazione di immagini: questa API consente di generare immagini originali, di alta qualità e arte da descrizioni testuali. Si basa su DALL di OpenAI· Modello E, che può creare immagini che corrispondono a un'ampia gamma di stili e soggetti in base alle richieste ricevute.
- API audio: questa API fornisce l'accesso al modello audio openAI, progettato per il riconoscimento vocale automatico. Può trascrivere la lingua parlata in testo o testo in parlato, supportando varie lingue e dialetti. È utile per le applicazioni che richiedono comandi vocali, trascrizione del contenuto audio e altro ancora.
Anche se l'intelligenza artificiale generativa può essere usata per lavorare con molte modalità diverse dei supporti, il resto di questo articolo è incentrato sulle soluzioni di intelligenza artificiale generative basate su testo. Vengono illustrati scenari come chat, riepilogo e così via.
Come iniziare a sviluppare applicazioni con intelligenza artificiale generativa
Gli sviluppatori di software che non hanno familiarità con un linguaggio, un'API o una tecnologia non familiari iniziano a imparare seguendo esercitazioni o moduli di training per creare applicazioni di piccole dimensioni. Alcuni sviluppatori di software preferiscono adottare un approccio autoguidato e creare piccole applicazioni sperimentali. Entrambi gli approcci sono validi e utili.
Quando si inizia, è consigliabile iniziare con piccole dimensioni, promettere poco, iterare e creare la comprensione e la competenza, poiché lo sviluppo con l'intelligenza artificiale generativa presenta sfide uniche. Ad esempio, nello sviluppo di software tradizionale è possibile basarsi sull'output deterministico, per qualsiasi set di input, è possibile prevedere lo stesso output esattamente ogni volta. Tuttavia, Generative è non deterministico: non si otterrà mai la stessa risposta esattamente due volte per un determinato prompt, che è alla radice di molte nuove sfide. Quando si inizia, considerare i suggerimenti seguenti prima di arrivare troppo lontano:
Suggerimento n. 1: ottenere informazioni chiare su ciò che si sta tentando di ottenere.
- Ottenere informazioni specifiche sul problema che si sta tentando di risolvere: l'intelligenza artificiale generativa può risolvere un'ampia gamma di problemi, ma il successo deriva dalla definizione chiara del problema specifico che si sta cercando di risolvere. Si sta tentando di generare testo, immagini, codice o altro? Più specifici sono, meglio è possibile personalizzare l'intelligenza artificiale in base alle proprie esigenze.
- Comprendere il pubblico: conoscere il pubblico aiuta a personalizzare l'output dell'IA in base alle proprie aspettative, sia che si tratti di utenti casuali o esperti in un particolare campo.
Suggerimento n. 2: Gioca con i punti di forza delle macchine virtuali.
- Comprendere le limitazioni e le distorsioni delle macchine virtuali: mentre le macchine virtuali di scalabilità sono potenti, presentano limitazioni e distorsioni intrinseche. Conoscere le limitazioni e le distorsioni può aiutare a progettarli o a incorporare le mitigazioni.
- Comprendere la posizione in cui le macchine virtuali di avvio eseguono excel in attività come la creazione di contenuti, il riepilogo, la traduzione della lingua e così via. Sebbene le funzionalità decisionali e le funzionalità discriminanti siano sempre più avanzate con ogni nuova versione, potrebbero esserci altri tipi di intelligenza artificiale più appropriati per lo scenario o il caso d'uso. Scegliere lo strumento appropriato per il processo.
Suggerimento n. 3: i risultati migliori iniziano con buone richieste.
- Informazioni sulle procedure consigliate per la progettazione dei prompt: la creazione di richieste efficaci è un'arte. Sperimentare con richieste diverse per vedere come influiscono sull'output. Essere conciso ma descrittivo.
- Commit al perfezionamento iterativo: spesso, la prima richiesta potrebbe non restituire il risultato desiderato. Si tratta di un processo di prova ed errore. Usare gli output per perfezionare ulteriormente le richieste.
Creare la prima soluzione di intelligenza artificiale generativa
Se si vuole iniziare subito a sperimentare la creazione di una soluzione di intelligenza artificiale generativa, è consigliabile esaminare Introduzione alla chat usando un esempio di dati personalizzato per Python. Sono disponibili versioni dell'esercitazione anche in .NET, Java e JavaScript.
Considerazioni finali che possono influenzare le decisioni di progettazione dell'applicazione
Ecco un breve elenco di aspetti da considerare e altre considerazioni di questo articolo che influisce sulle decisioni di progettazione dell'applicazione:
- Definire chiaramente lo spazio dei problemi e il pubblico per allineare le funzionalità dell'intelligenza artificiale alle aspettative degli utenti, ottimizzando l'efficacia della soluzione per il caso d'uso previsto.
- Usare piattaforme con poco codice o senza codice per la creazione rapida di prototipi e lo sviluppo se soddisfano i requisiti del progetto, valutando il compromesso tra velocità di sviluppo e personalizzazione. Esplorare le possibilità di soluzioni a basso codice e senza codice per parti dell'applicazione per velocizzare lo sviluppo e consentire ai membri del team non tecnici di contribuire al progetto.