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 il servizio OpenAI di Azure rendono accessibile lo sviluppo di intelligenza artificiale con API facili da usare. Gli sviluppatori a tutti i livelli di competenza possono integrare funzionalità avanzate di intelligenza artificiale nelle applicazioni senza conoscenze o investimenti hardware specializzati.
Come sviluppatore di applicazioni, potresti voler capire quale ruolo puoi svolgere e dove ti inserisci. Ad esempio, ti chiedi su quale livello nello "stack di intelligenza artificiale" concentrarti per il tuo apprendimento. Oppure ci si potrebbe chiedere cosa si è in grado di costruire dalle tecnologie esistenti.
Per rispondere a queste domande, è importante sviluppare prima di tutto un modello mentale che mappa il modo in cui la nuova terminologia e le nuove tecnologie si adattano a ciò che si conosce già. Lo sviluppo di un modello mentale consente di progettare e creare funzionalità di intelligenza artificiale generative nelle applicazioni.
In una serie di articoli viene illustrato come si applica l'esperienza di sviluppo software corrente all'intelligenza artificiale generativa. Gli articoli impostano anche una base di parole chiave e concetti su cui iniziare a sviluppare le prime soluzioni di intelligenza artificiale generative.
Come le aziende traggono vantaggio dall'uso dell'IA generativa
Per comprendere in che modo l'esperienza di sviluppo software corrente si applica all'intelligenza artificiale generativa, è importante comprendere in che modo le aziende intendono trarre vantaggio dall'uso dell'IA generativa.
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 che può rispondere a domande specifiche su un'organizzazione o sui relativi prodotti o servizi.
Ecco alcuni scenari comuni in cui l'IA generativa può aiutare le aziende:
Generazione di contenuti:
- Generare testo, codice, immagini e suoni. Questo scenario 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.
- Utilizzare "chat with your data". Ovvero, consentire a un utente di porre domande in un contesto di chat utilizzando i dati archiviati nei database o nei documenti dell'organizzazione come base per le risposte.
- Riepilogo, organizzazione e semplificazione di grandi corpi di contenuto per rendere il contenuto più accessibile.
- Usare la ricerca semantica. Ciò significa che consente agli utenti di cercare documenti e dati senza usare corrispondenze esatte di parole chiave.
- Tradurre la 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.
Uno sviluppatore di software ha l'opportunità di aumentare notevolmente l'impatto grazie all'integrazione di applicazioni e funzionalità di intelligenza artificiale generativa nel software su cui si basa l'organizzazione.
Come creare applicazioni di intelligenza artificiale generative
Anche se l'LLM fa il lavoro pesante, tu crei sistemi che integrano, orchestrano e monitorano i risultati. C'è molto da imparare, ma è possibile applicare le competenze già disponibili, tra cui come:
- Effettuare chiamate alle API usando REST, JSON o SDK specifici per ogni linguaggio
- Orchestrare le chiamate alle API ed eseguire la logica di business
- Archiviare e recuperare da archivi dati
- Integrare input e risultati nell'esperienza utente
- Creare API che possono essere chiamate da modelli linguistici di grandi dimensioni
Lo sviluppo di soluzioni di intelligenza artificiale generative si basano sulle competenze esistenti.
Strumenti e servizi per sviluppatori
Microsoft investe nello sviluppo di strumenti, servizi, API, esempi e risorse di apprendimento per iniziare il percorso di sviluppo di intelligenza artificiale generativo. Ognuno di essi evidenzia una grande preoccupazione o responsabilità necessaria per costruire una soluzione di intelligenza artificiale 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 RAG (Retrieval-Augmented Generation), 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 le API, i servizi e gli strumenti esistenti per una determinata funzione, ruolo o responsabilità. Ora che si conoscono i vincoli e il dominio del problema, è possibile scegliere di compilare l'aspetto del sistema manualmente usando codice personalizzato o strumenti con poco codice o senza codice oppure è possibile chiamare le API per i servizi esistenti.
- Comprendere le opzioni, incluse soluzioni incentrate sul codice e senza codice o con poco codice. Puoi costruire tutto da solo, ma è un uso efficiente del tuo tempo e delle tue competenze? A seconda dei requisiti, in genere è possibile unire una combinazione di tecnologie e approcci (codice, no-code, low-code, strumenti).
Non esiste un unico modo giusto per creare funzionalità di intelligenza artificiale generative nelle applicazioni. È possibile scegliere tra molti strumenti e approcci. È importante valutare i compromessi di ognuno di essi.
Iniziare con il livello dell'applicazione
Non è necessario comprendere tutto sul funzionamento dell'intelligenza artificiale generativa per iniziare e essere produttivi. Come indicato in precedenza, probabilmente già sapete abbastanza. È possibile usare le API e applicare le competenze esistenti per iniziare.
Ad esempio, non è necessario eseguire il training del proprio LLM da zero. La formazione di un LLM richiede tempo e risorse che la maggior parte delle aziende non sono disposte a investire. Piuttosto, costruisci su modelli fondamentali preaddestrati esistenti come GPT-4, effettuando chiamate API verso servizi ospitati come l'API OpenAI di Azure. L'aggiunta di funzionalità di intelligenza artificiale generative a un'applicazione esistente non è diversa dall'aggiunta di altre funzionalità basate su una chiamata API.
La ricerca su come vengono addestrati o su come funzionano i modelli di linguaggio di grandi dimensioni (LLM) può soddisfare la curiosità intellettuale, ma comprendere appieno il funzionamento di un LLM richiede una conoscenza approfondita della data science e del background matematico che li supporta. Acquisire questa conoscenza può includere corsi di laurea su statistiche, probabilità e teoria delle informazioni.
Se si ha 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, ad esempio API disponibili, strumenti e modelli.
Lo stesso vale per il campo dell'intelligenza artificiale. È possibile comprendere e apprezzare la teoria che si basa su LLMs, ma è probabile che si concentri l'attenzione sul livello dell'applicazione o di implementare modelli o processi per consentire un impegno 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, i data scientist stanno eseguendo 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, in base al livello di base più basso, i data scientist implementano concetti teorici in LLMs, creando le reti neurali e addestrando i pesi e le distorsioni per fornire un software pratico in grado di accettare input (prompt) e generare risultati (completamenti). Il processo computazionale di composizione dei completamenti sulla base dei prompt viene chiamato inferenza. Gli data scientist determinano come i neuroni della rete neurale prevedono 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 ospitare un modello in un computer locale, ma i risultati sono spesso lenti. La velocità e l'efficienza derivano dalle schede video GPU dedicate che permettono di gestire i calcoli necessari per generare risultati.
Se ospitato in data center di grandi dimensioni, l'accesso a livello di codice a questi modelli viene fornito tramite le API REST. Le API sono talvolta "incapsulate" dagli SDK e sono disponibili per gli sviluppatori di applicazioni per facilitare 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, i modelli e i processi stanno emergendo per aiutare le organizzazioni a creare funzionalità aziendali affidabili in base all'intelligenza artificiale generativa. Ad esempio, i modelli stanno emergendo che aiutano le aziende a garantire che il testo, il codice, le immagini e il suono generati siano conformi agli standard etici e di sicurezza e con impegni per la privacy dei dati dei clienti.
In questo insieme di questioni o livelli, se sei uno sviluppatore di applicazioni responsabile della creazione di funzionalità aziendali, è possibile andare oltre il livello dell'applicazione nello sviluppo e nell'addestramento del proprio modello di linguaggio di grandi dimensioni (LLM). Ma questo livello di comprensione richiede un nuovo set di competenze che spesso viene sviluppato solo attraverso l'istruzione avanzata.
Se non è possibile impegnarsi a sviluppare competenze in ambito accademico di data science per creare il livello successivo nello stack, è possibile concentrarsi sullo sviluppo delle conoscenze degli argomenti del livello applicazione:
- API e SDK: cosa è disponibile e cosa producono i vari endpoint.
- Strumenti e servizi correlati che consentono di creare tutte le funzionalità necessarie per una soluzione di intelligenza artificiale generativa pronta per la produzione.
- Progettazione prompt: come ottenere i risultati migliori facendo domande o riformulando le domande.
- Dove emergono i colli di bottiglia e come scalare una soluzione. Questa area include la comprensione di ciò che è coinvolto nella registrazione o nell'ottenere dati di telemetria senza violare i problemi di privacy dei clienti.
- Le caratteristiche delle varie VM: punti di forza, casi d'uso, benchmark e ciò che misurano e differenze chiave tra fornitori e modelli prodotti da ogni fornitore. Queste informazioni consentono di scegliere il modello appropriato per le esigenze dell'organizzazione.
- I modelli, i flussi di lavoro e i processi più recenti che è possibile usare per creare funzionalità di intelligenza artificiale efficaci e resilienti nelle applicazioni.
Strumenti e servizi di Microsoft
È possibile utilizzare strumenti e servizi di intelligenza artificiale generativa a basso codice e senza codice di Microsoft per aiutarti a sviluppare parte o tutta la tua soluzione. Vari servizi di Azure possono svolgere ruoli fondamentali. Ognuno 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 è un modello LLM. 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. È possibile usare diverse API per eseguire tutte le funzioni tipiche di un LLM, inclusa la creazione di incorporamenti e la creazione di un'esperienza di chat. Si ha accesso completo alle impostazioni e alle personalizzazioni per ottenere i risultati desiderati. |
Ambienti di esecuzione
Poiché si creano logica di business, logica di presentazione o API per integrare l'intelligenza artificiale generativa nelle applicazioni dell'organizzazione, è necessario un servizio per 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 di chat RAG. Supporta lo sviluppo rapido, la distribuzione e il ridimensionamento delle applicazioni Web, quindi è più facile gestire i componenti front-end del sistema. |
Funzioni di Azure | Usare il calcolo serverless per gestire le attività basate su eventi all'interno del sistema di chat RAG. 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. |
Soluzioni con poco codice e senza codice
Parte della logica necessaria per implementare la tua visione di intelligenza artificiale generativa può essere sviluppata rapidamente e ospitata in modo affidabile utilizzando una soluzione low-code o no-code.
Prodotto | Descrizione |
---|---|
Azure AI Foundry | È possibile usare Azure AI Foundry per eseguire il training, testare e distribuire modelli di Machine Learning personalizzati per migliorare un sistema di chat RAG. Ad esempio, usare Azure AI Foundry 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. Un esempio è un sistema di chat basato su RAG che consente agli utenti di chattare con i dati dell'organizzazione. In questo caso d'uso è necessario un archivio dati vettoriale.
Prodotto | Descrizione |
---|---|
Azure AI Search | È possibile usare questo servizio per cercare in modo efficiente set di dati di grandi dimensioni per trovare informazioni pertinenti che informano le risposte generate dal modello linguistico. È utile per il componente di recupero di un sistema RAG, in modo che le risposte generate siano il più informative e pertinenti possibile al contesto. |
Azure Cosmos DB | Questo servizio di database multimodello distribuito a livello globale può archiviare grandi quantità di dati strutturati e non strutturati a cui deve accedere il sistema di chat RAG. Le sue funzionalità di lettura e scrittura veloci lo rendono ideale per la gestione dei dati in tempo reale nel modello linguistico e per l'archiviazione delle interazioni utente per ulteriori 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 di chat RAG. È 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 di chat RAG in modo 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. Consentono agli sviluppatori di accedere e usare le migliori funzionalità cloud di Azure e tecnologie di intelligenza artificiale.
Sviluppo di intelligenza artificiale incentrato sul codice usando 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ù idiomatica.
Ecco l'elenco dei wrapper dell'API REST OpenAI di Azure:
- 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
- Usare il pacchetto OpenAI Python e modificare diverse opzioni. Python non offre una libreria client specifica di Azure.
Se un linguaggio o un SDK della piattaforma non è disponibile, lo scenario peggiore è che è necessario effettuare chiamate REST direttamente alle API Web:
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, in modo che gli sviluppatori possano 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 capacità conversazionali per supportare la creazione di chatbot e assistenti virtuali che possono intrattenere un dialogo naturale simile a quello umano. È ottimizzato per casi d'uso interattivi, tra cui supporto clienti, assistenti personali e ambienti di apprendimento interattivo. Tuttavia, viene usato per tutti gli scenari di generazione di testo, tra cui riepilogo, completamento automatico, scrittura di documenti, analisi del testo e traduzione. Si tratta del punto di ingresso per le funzionalità di visione attualmente in anteprima, ovvero per 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. Si tratta di uno strumento che consente di garantire interazioni utente più sicure rilevando automaticamente materiale offensivo, non sicuro o inappropriato.
- API Embeddings: l'API Embeddings genera rappresentazioni vettoriali di input di testo. Converte parole, frasi o paragrafi in vettori altamente dimensionali. 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: usare questa API per generare immagini originali di alta qualità e immagini 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 di OpenAI ed è progettata 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 è possibile usare l'intelligenza artificiale generativa per lavorare con molte modalità multimediali diverse, nel resto di questo articolo ci concentriamo sulle soluzioni di intelligenza artificiale generative basate su testo. Queste soluzioni includono scenari come chat e riepilogo.
Introduzione allo sviluppo con l'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 che illustrano come 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, è meglio iniziare con poco, promettere poco, iterare e creare la comprensione e l'abilità. Lo sviluppo di applicazioni tramite intelligenza artificiale generativa presenta sfide specifiche. Ad esempio, nello sviluppo di software tradizionale, è possibile basarsi sull'output deterministico. Vale a dire, per qualsiasi set di input, è possibile prevedere lo stesso output esattamente ogni volta. Ma l'intelligenza artificiale generativa non è deterministica. Non si ottiene mai la stessa risposta due volte per un determinato prompt, che è alla radice di molte nuove sfide.
Quando si inizia, prendere in considerazione questi suggerimenti.
Suggerimento 1: Essere chiari su ciò che si vuole ottenere
- Essere specifici del problema che si sta cercando 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 intende 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 2: Usare i punti di forza delle macchine virtuali
- Comprendere le limitazioni e le distorsioni delle macchine virtuali: anche se i moduli APM sono potenti, presentano limitazioni e distorsioni intrinseche. Conoscere le limitazioni e le distorsioni può aiutare a progettarli o a incorporare le mitigazioni.
- Comprendere dove i modelli di linguaggio di grandi dimensioni eccellono: i LLMs eccellono in attività come la creazione di contenuti, la sintesi e la traduzione. 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 3: Per ottenere buoni risultati, utilizzare buoni prompt
- 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 concisi ma descrittivi.
- 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 i prompt.
Creare la prima soluzione di intelligenza artificiale generativa
Per iniziare subito a sperimentare la creazione di una soluzione di intelligenza artificiale generativa, è consigliabile esaminare Introduzione alla chat usando il proprio esempio di dati per Python. L'esercitazione è disponibile anche per .NET, Javae JavaScript.
Considerazioni finali per la progettazione di applicazioni
Ecco un breve elenco di aspetti da considerare e altre considerazioni di questo articolo che potrebbero influire 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. Ottimizzare 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 sviluppo se soddisfano i requisiti del progetto. Valutare 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.