Introduzione a Chat di intelligenza artificiale serverless con RAG con LangChain.js
La creazione di app di intelligenza artificiale può essere complessa. Con LangChain.js, Funzioni di Azure e tecnologie serverless, è possibile semplificare questo processo. Questi strumenti gestiscono automaticamente l'infrastruttura e la scalabilità, consentendo di concentrarsi sulle funzionalità del chatbot. Il chatbot usa documenti aziendali per generare risposte di intelligenza artificiale.
Il codice include dati di esempio per una società fittizia, Contoso Real Estate. I clienti possono porre domande di supporto sui prodotti dell'azienda. I dati includono documenti sulle condizioni per il servizio dell'azienda, l'informativa sulla privacy e la guida al supporto tecnico.
Nota
Questo articolo usa uno o più modelli di app di intelligenza artificiale come base per gli esempi e le linee guida nell’articolo. I modelli di app di intelligenza artificiale offrono implementazioni di riferimento ben gestite e facili da distribuire per garantire un punto di partenza di alta qualità per le app di intelligenza artificiale.
Panoramica dell'architettura
L'app di chat
L'utente interagisce con l'applicazione:
- Con l'interfaccia di chat nell'app Web client.
- L'app Web client invia la query dell'utente all'API serverless tramite chiamate HTTP.
- L'API serverless crea una catena per coordinare le interazioni tra l'intelligenza artificiale di Azure e Ricerca di intelligenza artificiale di Azure per generare una risposta.
- Se è necessario fare riferimento ai documenti, Archiviazione BLOB di Azure viene usato per recuperare i documenti PDF.
- La risposta generata viene quindi inviata nuovamente all'app Web e visualizzata all'utente.
Un'architettura semplice dell'app di chat è illustrata nel diagramma seguente:
LangChainjs semplifica la complessità tra i servizi
Il flusso api è utile per comprendere in che modo LangChainJS è utile in questo scenario astraendo le interazioni. Endpoint DELL'API serverless:
- Riceve la domanda dall'utente.
- Crea oggetti client:
- Azure OpenAI per incorporamenti e chat
- Ricerca di intelligenza artificiale di Azure per l'archivio vettoriale
- Crea una catena di documenti con il modello LLM, il messaggio di chat (richieste di sistema e utente) e l'origine del documento.
- Crea una catena di recupero dalla catena di documenti e dall'archivio vettoriale.
- Trasmette le risposte dalla catena di recupero.
Il lavoro dello sviluppatore consiste nel configurare correttamente i servizi di dipendenza, ad esempio Azure OpenAI e Ricerca di intelligenza artificiale di Azure e costruire correttamente le catene. La logica della catena sottostante sa come risolvere la query. In questo modo è possibile costruire catene da molti servizi e configurazioni diversi purché funzionino con i requisiti LangChain.
Dove si trova Azure in questa architettura?
Questa applicazione è costituita da più componenti:
Un'app Web creata con un singolo componente Web di chat compilata con Lit e ospitata in App Web statiche di Azure. Il codice si trova nella
packages/webapp
cartella .UN'API serverless compilata con Funzioni di Azure e usando LangChain.js per inserire i documenti e generare risposte alle query di chat utente. Il codice si trova nella
packages/api
cartella .Un servizio OpenAI di Azure per creare incorporamenti e generare una risposta.
Un database per archiviare il testo estratto dai documenti e i vettori generati da LangChain.js, usando Ricerca di intelligenza artificiale di Azure.
Archiviazione file per archiviare i documenti di origine usando Archiviazione BLOB di Azure.
Prerequisiti
Per completare questo articolo è disponibile un ambiente contenitore di sviluppo con tutte le dipendenze necessarie. Puoi eseguire il contenitore di sviluppo in GitHub Codespaces (in un browser) o in locale usando Visual Studio Code.
Per usare questo articolo, sono necessari i prerequisiti seguenti:
- Una sottoscrizione di Azure: creare un account gratuitamente
- Autorizzazioni dell'account Azure: l'account Azure deve avere autorizzazioni Microsoft.Authorization/roleAssignments/write, ad esempio Amministratore accesso utenti o Proprietario.
- Accesso concesso ad Azure OpenAI nella sottoscrizione di Azure desiderata. Attualmente, l'accesso a questo servizio viene concesso solo dall'applicazione. È possibile richiedere l'accesso a OpenAI di Azure completando il modulo all'indirizzo https://aka.ms/oai/access. Apri un problema in questo repository per contattare Microsoft in caso di problemi.
- Account GitHub
Ambiente di sviluppo aperto
Inizia ora con un ambiente di sviluppo che ha tutte le dipendenze installate per completare questo articolo.
GitHub Codespaces esegue un contenitore di sviluppo gestito da GitHub con Visual Studio Code per il Web come interfaccia utente. Per l'ambiente di sviluppo più semplice, usa GitHub Codespaces per avere gli strumenti di sviluppo e le dipendenze corretti preinstallati per completare questo articolo.
Importante
Tutti gli account GitHub possono usare Codespaces per un massimo di 60 ore gratuite ogni mese con 2 istanze di core. Per altre informazioni, vedere Spazio di archiviazione e ore core mensili inclusi in GitHub Codespaces.
Aprire in Codespace.
Attendere l'avvio del codespace. Questo processo di avvio può richiedere alcuni minuti.
Nel terminale nella parte inferiore della schermata, accedi ad Azure con Azure Developer CLI.
azd auth login
Completare il processo di autenticazione.
Le attività rimanenti in questo articolo vengono eseguite nel contesto di questo contenitore di sviluppo.
Distribuire ed eseguire
Il repository di esempio contiene tutti i file di codice e configurazione necessari per distribuire l'app chat serverless in Azure. La procedura seguente illustra il processo di distribuzione dell'esempio in Azure.
Distribuire l'app di chat in Azure
Importante
Le risorse di Azure create in questa sezione comportano costi immediati, principalmente per la risorsa Azure AI Search. Queste risorse possono accumulare costi anche se si interrompe il comando prima che venga eseguito completamente.
Esegui il seguente comando Azure Developer CLI per effettuare il provisioning delle risorse di Azure e distribuire il codice sorgente:
azd up
Usare la tabella seguente per rispondere alle richieste:
Richiesta Risposta Nome ambiente Tienila breve e minuscola. Aggiungere il nome o l'alias. Ad esempio: john-chat
. Viene usato come parte del nome del gruppo di risorse.Abbonamento Selezionare la sottoscrizione in cui creare le risorse. Località (per l'hosting) Selezionare una località vicina all'elenco. Percorso del modello OpenAI Selezionare una località vicina all'elenco. Se la stessa posizione è disponibile come prima posizione, selezionala. Attendi la distribuzione dell'app. Il completamento della distribuzione potrebbe richiedere da 5 a 10 minuti.
Dopo che l'applicazione è stata distribuita correttamente, nel terminale vengono visualizzati due URL.
Seleziona l'URL etichettato
Deploying service webapp
per aprire l'applicazione di chat in un browser.
Usa l'app di chat per ottenere risposte dai file PDF
L'app di chat viene precaricata con informazioni sul noleggio da un catalogo di file PDF. È possibile usare l'app di chat per porre domande sul processo di noleggio. I passaggi seguenti illustrano il processo di utilizzo dell'app di chat.
Nel browser selezionare o immettere Che cos'è il criterio di rimborso.
Selezionare una domanda di completamento.
Nella risposta selezionare la citazione per visualizzare il documento usato per generare la risposta. Il documento viene recapitato da Archiviazione di Azure al client. Al termine della nuova scheda del browser, chiuderla per tornare all'app chat serverless.
Pulire le risorse
Pulire le risorse di Azure
Le risorse di Azure create in questo articolo vengono fatturate alla sottoscrizione di Azure. Se prevedi che queste risorse non ti servano in futuro, eliminale per evitare di incorrere in costi aggiuntivi.
Esegui il seguente comando Azure Developer CLI per eliminare le risorse di Azure e rimuovere il codice sorgente:
azd down --purge
Pulire GitHub Codespaces
L'eliminazione dell'ambiente GitHub Codespaces offre la possibilità di aumentare le ore gratuite per core a cui si ha diritto per l'account.
Importante
Per altre informazioni sui diritti dell'account GitHub, vedere Ore di archiviazione e di core mensili incluse in GitHub Codespaces.
Accedere al dashboard di GitHub Codespaces (https://github.com/codespaces).
Individuare i codespace attualmente in esecuzione provenienti dal repository GitHub
Azure-Samples/serverless-chat-langchainjs
.Aprire il menu di scelta rapida,
...
, per lo spazio di codice e quindi selezionare Elimina.
Come ottenere assistenza
Questo repository di esempio offre informazioni sulla risoluzione dei problemi.
Se il problema non viene risolto, registralo nei Problemi del repository.