Condividi tramite


Introduzione: Chattare usando i propri dati (esempio python)

Questo articolo illustra come distribuire ed eseguire l'esempio di chat con dati personalizzatiusando il codice di esempio per Python. Questa applicazione di chat di esempio è costruita con Python, Azure OpenAI Service e Retrieval Augmented Generation (RAG) tramite Azure AI Search.

L'app fornisce risposte alle domande degli utenti sui vantaggi dei dipendenti in una società fittizia. Usa Retrieval-Augmented Generazione (RAG) per fare riferimento al contenuto dei file PDF forniti, che possono includere:

  • Manuale di un dipendente
  • Documento di panoramica dei vantaggi
  • Elenco di ruoli e aspettative aziendali

Analizzando questi documenti, l'app può rispondere alle query in linguaggio naturale con risposte accurate e contestualmente pertinenti. Questo approccio illustra come usare i propri dati per sfruttare esperienze di chat intelligenti e specifiche del dominio con Azure OpenAI e Ricerca di intelligenza artificiale di Azure.

Si apprenderà anche come configurare le impostazioni dell'app per modificarne il comportamento di risposta.

Dopo aver completato i passaggi descritti in questo articolo, è possibile iniziare a personalizzare il progetto con il proprio codice. Questo articolo fa parte di una serie che illustra la creazione di un'app di chat con il servizio Azure OpenAI e Ricerca di intelligenza artificiale di Azure. Altri articoli della serie includono:

Nota

Questo articolo è basato su uno o più modelli di app di intelligenza artificiale, che fungono da implementazioni di riferimento ben gestite. Questi modelli sono progettati per essere facili da distribuire e fornire un punto di partenza affidabile e di alta qualità per la creazione di applicazioni di intelligenza artificiale personalizzate.

Architettura di app di esempio

Il diagramma seguente illustra una semplice architettura dell'app di chat.

Diagramma che mostra l'architettura per il campione, dal client all'app di chat del back-end con fonti di dati.

I componenti chiave dell'architettura includono:

  • Un'applicazione Web che ospita l'interfaccia di chat interattiva (in genere compilata con Python Flask o JavaScript/React) e invia domande utente al back-end per l'elaborazione.
  • Una risorsa di Ricerca intelligenza artificiale di Azure che esegue una ricerca intelligente su documenti indicizzati (PDF, file di Word e così via) e restituisce estratti di documenti pertinenti (blocchi) da usare nelle risposte.
  • Istanza del servizio OpenAI di Azure che:
    • Converte documenti e domande utente in rappresentazioni vettoriali per la ricerca di somiglianza semantica.
    • Estrae parole chiave importanti per perfezionare le query di Ricerca di intelligenza artificiale di Azure.
    • Esegue la sintesi delle risposte finali usando i dati recuperati e la query dell'utente.

Il flusso tipico dell'app di chat è il seguente:

  • L'utente invia una domanda: un utente immette una domanda in linguaggio naturale tramite l'interfaccia dell'app Web.
  • Azure OpenAI elabora la domanda: il back-end usa Azure OpenAI per:
    • Generare un incorporamento della domanda usando il modello text-embedding-ada-002.
    • Facoltativamente, estrarre parole chiave per perfezionare la pertinenza della ricerca
  • Ricerca di intelligenza artificiale di Azure recupera i dati pertinenti: le parole chiave o di incorporamento vengono usate per eseguire una ricerca semantica su contenuto indicizzato (ad esempio, PDF) in Ricerca di intelligenza artificiale di Azure.
  • Combinare i risultati con la domanda: gli estratti del documento più rilevanti (blocchi) vengono combinati con la domanda originale dell'utente.
  • Azure OpenAI genera una risposta: l'input combinato viene passato a un modello GPT ,ad esempio gpt-35-turbo o gpt-4, che genera una risposta compatibile con il contesto.
  • La risposta viene restituita all'utente: la risposta generata viene visualizzata nell'interfaccia della chat.

Prerequisiti

Un ambiente contenitore di sviluppo è disponibile con tutte le dipendenze necessarie per completare questo articolo. È possibile 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:

  • GitHub Codespaces (scelta consigliata)
  • Visual Studio Code
  • Una sottoscrizione di Azure. Creare un account gratuito prima di iniziare.

  • Autorizzazioni dell'account Azure. L'account Azure deve avere autorizzazioni Microsoft.Authorization/roleAssignments/write. I ruoli come Amministratore accesso utenti o Proprietario soddisfano questo requisito.

  • Accesso concesso ad Azure OpenAI nella sottoscrizione di Azure. Nella maggior parte dei casi, è possibile creare filtri di contenuto personalizzati e gestire i livelli di gravità con accesso generale ai modelli OpenAI di Azure. La registrazione per l'accesso basato sull'approvazione non è necessaria per l'accesso generale. Per altre informazioni, vedere Funzionalità di accesso limitato per i servizi di intelligenza artificiale di Azure.

  • Modifica del filtro del contenuto o uso improprio (facoltativo). Per creare filtri di contenuto personalizzati, modificare i livelli di gravità o supportare il monitoraggio degli abusi, è necessaria l'approvazione formale dell'accesso. È possibile richiedere l'accesso completando i moduli di registrazione necessari. Per altre informazioni, vedere Registrazione per i filtri di contenuto modificati e/o il monitoraggio degli abusi.

  • Supporto e risoluzione dei problemi di accesso. Per l'accesso alla risoluzione dei problemi, aprire un problema di supporto nel repository GitHub.

  • Un account GitHub. Richiede di effettuare il fork del repository e usare GitHub Codespaces o clonarlo localmente.

Costo di utilizzo per le risorse di esempio

La maggior parte delle risorse usate in questa architettura rientra nei piani tariffari di base o basati sul consumo. Ciò significa che si paga solo per ciò che si usa e gli addebiti sono in genere minimi durante lo sviluppo o il test.

Per completare questo esempio, potrebbe esserci un piccolo costo derivante dall'uso di servizi come Azure OpenAI, Ricerca di Intelligenza Artificiale e servizi di archiviazione. Dopo aver valutato o distribuito l'app, è possibile eliminare tutte le risorse di cui è stato effettuato il provisioning per evitare addebiti in corso.

Per una suddivisione dettagliata dei costi previsti, vedere la stima dei costi nel repository GitHub per l'esempio.

Ambiente di sviluppo aperto

Per iniziare, configurare un ambiente di sviluppo con tutte le dipendenze installate per completare questo articolo.

  • GitHub Codespaces (scelta consigliata)
  • Visual Studio Code
  • Una sottoscrizione di Azure. Crea uno gratuitamente.
  • Autorizzazioni dell'account Azure. L'account Azure deve avere autorizzazioni Microsoft.Authorization/roleAssignments/write. I ruoli come Amministratore accesso utenti o Proprietario soddisfano questo requisito.
  • Un account GitHub. Richiede di effettuare il fork del repository e usare GitHub Codespaces o clonarlo localmente.

Aprire un ambiente di sviluppo

Usare le istruzioni seguenti per distribuire un ambiente di sviluppo preconfigurato contenente tutte le dipendenze necessarie per completare questo articolo.

  • GitHub Codespaces (scelta consigliata)
  • Visual Studio Code

Per la configurazione più semplice e semplificata, usare GitHub Codespaces. GitHub Codespaces esegue un contenitore di sviluppo gestito da GitHub e fornisce Visual Studio Code per il Web come interfaccia utente. Questo ambiente include tutti gli strumenti, gli SDK, le estensioni e le dipendenze necessari preinstallati, in modo da poter iniziare a sviluppare immediatamente senza la configurazione manuale.

L'uso di Codespaces garantisce:

  • Gli strumenti di sviluppo e le versioni corretti sono già installati.
  • Non è necessario installare Docker, VS Code o estensioni in locale.
  • Configurazione rapida e ripetibile dell'ambiente.

Importante

Tutti gli account GitHub possono usare GitHub Codespaces per un massimo di 60 ore gratuite ogni mese con 2 istanze principali. Se si supera la quota gratuita o si usano opzioni di calcolo più grandi, si applicano le tariffe di fatturazione standard di GitHub Codespaces. Per maggiori informazioni, vedere GitHub Codespaces - Spazio di archiviazione mensile incluso e ore CPU.

  1. Per iniziare a usare il progetto di esempio, creare un nuovo spazio di codice GitHub nel main ramo del Azure-Samples/azure-search-openai-demo repository GitHub.

    Fare clic con il pulsante destro del mouse sull'opzione GitHub Codespaces - Apri nella parte superiore della pagina del repository e selezionare Apri collegamento in una nuova finestra. In questo modo si garantisce che il contenitore di sviluppo venga avviato in una scheda del browser dedicata a schermo intero, consentendo di accedere sia al codice sorgente che alla documentazione predefinita.

    Immagine dell'opzione 'Open in GitHub Codespaces'.

  2. Nella pagina Crea un nuovo spazio di codice esaminare le impostazioni di configurazione codespace e quindi selezionare Crea spazio di codice:

    Screenshot della schermata di conferma per creare un nuovo spazio di codice GitHub per l'esempio.

    Attendere l'avvio dello spazio di codice GitHub. Il processo di avvio può richiedere alcuni minuti.

  3. Dopo aver aperto lo spazio di codice GitHub, accedere ad Azure con l'interfaccia della riga di comando per sviluppatori di Azure immettendo il comando seguente nel riquadro Terminale dello spazio di codice:

    azd auth login
    

    GitHub visualizza un codice di sicurezza nel riquadro Terminale.

    1. Copiare il codice di sicurezza nel riquadro Terminale e selezionare INVIO. Verrà visualizzata una finestra del browser.

    2. Al prompt, incollare il codice di sicurezza nel campo del browser.

    3. Segui le istruzioni per eseguire l'autenticazione con l'account Azure.

Completi le attività rimanenti di GitHub Codespaces in questo articolo nel contesto di questo contenitore di sviluppo.

Distribuire l'applicazione di chat su Azure

Il repository di esempio include tutti gli elementi necessari per distribuire una chat con un'applicazione dati personalizzata in Azure, tra cui:

  • Codice sorgente dell'applicazione (Python)
  • File di infrastruttura come codice (Bicep)
  • Configurazione per l'integrazione di GitHub e CI/CD (facoltativo)

Usare i passaggi seguenti per distribuire l'app con l'interfaccia della riga di comando per sviluppatori di Azure (azd).

Importante

Le risorse di Azure create in questa sezione, in particolare Ricerca per intelligenza artificiale di Azure, possono iniziare ad accumulare addebiti immediatamente dopo il provisioning, anche se la distribuzione viene interrotta prima del completamento. Per evitare addebiti imprevisti, monitorare l'utilizzo di Azure ed eliminare immediatamente le risorse inutilizzate dopo il test.

  1. Nel riquadro Terminale di Visual Studio Code creare le risorse di Azure e distribuire il codice sorgente eseguendo il comando seguente azd :

    azd up
    
  2. Il processo richiede una o più delle impostazioni seguenti in base alla configurazione:

    • Nome ambiente: questo valore viene usato come parte del nome del gruppo di risorse. Immettere un nome breve con lettere minuscole e trattini (-), ad esempio myenv. Le lettere maiuscole, i numeri e i caratteri speciali non sono supportati.

    • Sottoscrizione: selezionare una sottoscrizione per creare le risorse. Se non viene visualizzata la sottoscrizione desiderata, usare i tasti di direzione per scorrere l'elenco completo delle sottoscrizioni disponibili.

    • Località: questa località viene usata per la maggior parte delle risorse, incluso l'hosting. Seleziona una località nelle tue vicinanze.

    • Località per il modello OpenAI o la risorsa di Intelligence per i documenti: selezionare la località più vicina geograficamente. Se l'area selezionata per la località è disponibile per questa impostazione, selezionare la stessa area.

    La distribuzione dell'app può richiedere del tempo. Attendere il completamento della distribuzione prima di continuare.

  3. Dopo la distribuzione dell'app, nel riquadro Terminale viene visualizzato un URL dell'endpoint:

    Screenshot che mostra l'URL dell'endpoint per l'applicazione distribuita, come riportato dopo il completamento del processo 'azd up'.

  4. Selezionare l'URL dell'endpoint per aprire l'applicazione di chat in un browser:

    Screenshot dell'app di chat che mostra diversi suggerimenti per l'input della chat e la casella di testo della chat per immettere una domanda.

Usare l'app chat per ottenere risposte dai file PDF

L'app di chat viene precaricata con informazioni sui benefici dei dipendenti tratti da file PDF. Puoi usare l'app di chat per porre domande sui vantaggi. I passaggi seguenti illustrano il processo di utilizzo dell'app di chat. Le risposte possono variare man mano che i modelli sottostanti vengono aggiornati.

  1. Nell'app di chat selezionare l'opzione Cosa accade in una verifica delle prestazioni? oppure immettere lo stesso testo nella casella di testo della chat. L'app restituisce la risposta iniziale:

    Screenshot della risposta iniziale dell'app di chat per la domanda, Cosa accade in una verifica delle prestazioni?

  2. Nella casella di risposta selezionare una citazione:

    Screenshot che mostra una citazione evidenziata nella casella di risposte per l'app di chat.

  3. GitHub Codespaces apre il riquadro Citazione a destra con tre aree a schede e concentra l'attenzione sulla scheda Citazione

    Screenshot del riquadro destro aperto in GitHub Codespaces con informazioni visibili per la scheda Citazione.

    GitHub Codespaces offre tre schede di informazioni che consentono di comprendere come l'app di chat ha generato la risposta:

    Scheda Descrizione
    Processo di pensiero Visualizza uno script delle interazioni tra domande e risposte nella chat. È possibile visualizzare il contenuto fornito dall'app systemdi chat , le domande immesse da usere le chiarimenti apportate dal sistema assistant.
    Supporto del contenuto Elenca le informazioni usate per rispondere alla domanda e al materiale di origine. Il numero di citazioni del materiale di origine viene specificato dalle impostazioni sviluppatore. Il numero predefinito di citazioni è 3.
    Citazione Mostra l'origine originale contenuta per la citazione selezionata.
  4. Al termine, selezionare la scheda attualmente selezionata nel riquadro destro. Il riquadro destro si chiude.

Usare le impostazioni per modificare il comportamento della risposta

Il modello OpenAI specifico determina l'intelligenza della chat e le impostazioni usate per interagire con il modello. L'opzione Impostazioni sviluppatore apre il riquadro Configura generazione risposte in cui è possibile modificare le impostazioni per l'app di chat:

Screenshot delle impostazioni per sviluppatori disponibili nel riquadro destro nell'app di chat.

Impostazione Descrizione
modello di richiesta di override Esegue l'override della richiesta usata per generare la risposta in base ai risultati della domanda e della ricerca.
Temperatura Imposta la temperatura della richiesta sul modello LLM (Large Language Model) che genera la risposta. Temperature più alte generano risposte più creative, ma potrebbero essere meno fondate.
Seme Imposta un seme per migliorare la riproducibilità delle risposte del modello. Il seme può essere qualsiasi numero intero.
punteggio di ricerca minimo Imposta un punteggio minimo per i risultati della ricerca restituiti da Ricerca di intelligenza artificiale di Azure. L'intervallo di punteggi dipende dal fatto che si usi solo la modalità ibrida (predefinita), i vettori o il testo solo per l'impostazione Modalità di recupero .
punteggio minimo del reranker Imposta un punteggio minimo per i risultati della ricerca restituiti dal reranker semantico. Il punteggio varia sempre tra 0 e 4. Maggiore è il punteggio, più semanticamente rilevante è il risultato rispetto alla domanda.
Recuperare molti risultati della ricerca Imposta il numero di risultati della ricerca da recuperare da Ricerca di intelligenza artificiale di Azure. Un maggior numero di risultati può aumentare la probabilità di trovare la risposta corretta, ma potrebbe causare la perdita del modello nel mezzo. È possibile visualizzare le origini restituite nelle schede Processo di pensiero e Contenuto di supporto del riquadro Citazione .
Includi categoria Specifica le categorie da includere durante la generazione dei risultati della ricerca. Usare l'elenco a discesa per effettuare la selezione. L'azione predefinita consiste nell'includere tutte le categorie.
Escludi categoria Specifica tutte le categorie da escludere dai risultati della ricerca. Nessuna categoria utilizzata nel set di dati predefinito.
Usare il ranker semantico per il recupero dei dati Abilita il ranker semantico di Ricerca intelligenza artificiale di Azure, un modello che classifica i risultati della ricerca in base alla somiglianza semantica con la query dell'utente.
Usare didascalie semantiche Invia didascalie semantiche all'LLM anziché al risultato completo della ricerca. Una didascalia semantica viene estratta da un risultato della ricerca durante il processo di classificazione semantica.
Suggerisci domande di completamento Chiede all'LLM di suggerire domande di completamento in base alla query dell'utente.
modalità di recupero Imposta la modalità di recupero per la query di Azure AI Search. L'azione predefinita è Vectors + Text (Hybrid), che usa una combinazione di ricerca vettoriale e ricerca full-text. L'opzione Vettori usa solo la ricerca vettoriale. L'opzione Testo usa solo la ricerca full-text. L'approccio ibrido è ottimale.
flusso continuo di risposte di completamento chat Trasmette continuamente la risposta all'interfaccia utente della chat durante la generazione del contenuto.

I passaggi seguenti illustrano il processo di modifica delle impostazioni.

  1. Nel browser selezionare l'opzione Impostazioni sviluppatore .

  2. Selezionare la casella di controllo Suggerisci domande di completamento per abilitare l'opzione e selezionare Chiudi per applicare la modifica dell'impostazione.

  3. Nell'app di chat ripetere la domanda, questa volta immettendo il testo nella casella della domanda:

    What happens in a performance review?
    

    La risposta all'app chat include ora domande di follow-up suggerite:

    Screenshot che mostra come l'app di chat fornisce domande di completamento suggerite dopo la risposta.

  4. Selezionare di nuovo l'opzione Impostazioni sviluppatore e deselezionare l'opzione Usa classificazione semantica per il recupero . Chiudere le impostazioni.

  5. Porre di nuovo la stessa domanda e notare la differenza nella risposta dell'app di chat.

    Con il ranker semantico: "Durante una valutazione delle prestazioni in Contoso Electronics, il tuo supervisore discuterà le tue prestazioni nell'ultimo anno e fornirà un feedback sulle aree di miglioramento. Avrai anche l'opportunità di discutere i tuoi obiettivi e obiettivi per il prossimo anno. La revisione è un dialogo bidirezionale tra manager e dipendenti e si incoraggia i dipendenti ad essere onesti e aperti durante il processo (1). Il feedback fornito durante la revisione deve essere positivo e costruttivo, volto ad aiutare i dipendenti a sviluppare e crescere nei loro ruoli. I dipendenti riceveranno un riepilogo scritto della revisione delle prestazioni, che includerà una valutazione delle loro prestazioni, feedback e obiettivi e obiettivi per l'anno prossimo (1)."

    Senza il ranker semantico: "Durante una revisione delle prestazioni in Contoso Electronics, il supervisore discuterà le prestazioni nell'ultimo anno e fornirà feedback sulle aree per il miglioramento. Si tratta di un dialogo bidirezionale in cui si è incoraggiati ad essere onesti e aperti (1). Il feedback fornito durante la revisione deve essere positivo e costruttivo, volto a sviluppare e crescere nel proprio ruolo. Riceverai un riepilogo scritto della recensione, tra cui una valutazione delle tue prestazioni, feedback e obiettivi per l'anno prossimo (1)."

Pulire le risorse

Dopo aver completato l'esercizio, è consigliabile rimuovere tutte le risorse non più necessarie.

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.

Eliminare le risorse di Azure e rimuovere il codice sorgente eseguendo il comando seguente azd :

azd down --purge --force

Le opzioni di comando includono:

  • purge: le risorse eliminate vengono rimosse immediatamente. Questa opzione consente di riutilizzare la metrica dei token OpenAI di Azure al minuto (TPM).
  • force: L'eliminazione avviene in silenzio, senza richiedere il consenso dell'utente.

Pulizia di GitHub Codespaces

  • GitHub Codespaces
  • Visual Studio Code

L'eliminazione dell'ambiente GitHub Codespaces garantisce che sia possibile massimizzare la quantità di ore gratuite per core a disposizione dell'account.

Importante

Per altre informazioni sui diritti dell'account GitHub, vedere GitHub Codespaces - Risorse di archiviazione incluse mensilmente e ore di base.

  1. Accedi al dashboard GitHub Codespaces.

  2. Individua gli spazi di codice attualmente in esecuzione sul pannello di controllo, originati dal repository GitHub Azure-Samples/azure-search-openai-demo.

    Screenshot di tutti gli spazi di codice GitHub in esecuzione, inclusi lo stato e i modelli.

  3. Aprire il menu di scelta rapida per lo spazio di codice e selezionare Elimina:

    Screenshot del menu di scelta rapida per un singolo spazio di codice con l'opzione delete evidenziata.

Come ottenere assistenza

Questo repository di esempio offre informazioni sulla risoluzione dei problemi.

Se il problema non viene risolto, aggiungi il tuo problema alla pagina del repository Problematiche.