GenAIOps con prompt flow e GitHub

Poiché la richiesta di applicazioni infuse con LLM, le organizzazioni necessitano di un processo coeso e semplificato per gestire il ciclo di vita end-to-end di queste app. Operazioni di intelligenza artificiale generative (GenAIOps), talvolta denominate LLMOps, è un elemento fondamentale di progettazione e distribuzione efficiente delle applicazioni basate su richiesta e LLM.

Questo articolo illustra come Azure Machine Learning consente di eseguire l'integrazione con GitHub per automatizzare il ciclo di vita di sviluppo delle applicazioni LLM con flusso di richiesta. Il flusso dei prompt offre un approccio semplificato e strutturato allo sviluppo di applicazioni infuse LLM. Il processo e il ciclo di vita ben definiti illustrano il processo di compilazione, test, ottimizzazione e distribuzione dei flussi, che culmina nella creazione di soluzioni LLM-infused completamente funzionali.

Funzionalità del flusso dei prompt di GenAIOps

GenAIOps con flusso di richiesta usa un modello GenAIOps e linee guida per creare app LLM-infused usando il flusso di richiesta. GenAIOps con flusso di richiesta offre funzionalità per app LLM semplici o complesse e personalizzabili in base alle esigenze dell'applicazione.

La piattaforma GenAIOps con flusso di richiesta offre le funzionalità seguenti:

  • Hosting centralizzato del codice. Il repository supporta l'hosting di codice per più flussi di richiesta, fornendo un singolo repository per tutti i flussi. Questo repository è simile a una libreria per i flussi, semplificando l'individuazione, l'accesso e la collaborazione su progetti diversi.

  • Gestione del ciclo di vita. Ogni flusso ha un proprio ciclo di vita, offrendo una transizione uniforme dalla sperimentazione locale alla distribuzione di produzione.

  • Sperimentazione di varianti e iperparametri. Varianti e iperparametri sono come ingredienti in una ricetta. La piattaforma consente di sperimentare diverse combinazioni di varianti tra più nodi in un flusso. È possibile sperimentare più varianti e iperparametri per valutare facilmente le varianti di flusso.

  • Più destinazioni di distribuzione. La piattaforma genera immagini Docker infuse con il flusso e la sessione di calcolo per la distribuzione in qualsiasi piattaforma di destinazione e sistema operativo che supporta Docker. È possibile distribuire i flussi ai servizi di app Azure, Kubernetes e ai calcoli gestiti di Azure e configurarli in base alle esigenze.

  • Distribuzione A/B. GenAIOps con flusso di prompt implementa facilmente le distribuzioni A/B, consentendo di confrontare facilmente versioni di flusso diverse. Questa piattaforma facilita la distribuzione A/B per il flusso di richieste allo stesso modo dei test A/B del sito Web tradizionale. È possibile confrontare facilmente versioni diverse di un flusso in un'impostazione reale per determinare quale versione offre prestazioni ottimali.

  • Set di dati molti-a-molti per il flusso delle relazioni. GenAIOps con flusso di richiesta supporta più set di dati per ogni flusso standard e di valutazione, abilitando la versatilità nel test e nella valutazione del flusso.

  • Dati condizionali e registrazione del modello. La piattaforma registra una nuova versione del set di dati per l'asset di dati di Azure Machine Learning e scorre nel Registro di sistema dei modelli solo quando è presente una modifica nel set di dati.

  • Report completi. GenAIOps con flusso di richiesta genera report dettagliati per ogni configurazione variante, consentendo di prendere decisioni informate. La piattaforma fornisce raccolte dettagliate di metriche, esperimenti e esecuzioni bulk varianti per tutte le esecuzioni e gli esperimenti, abilitando decisioni basate sui dati sia per i file CSV che per i file HTML.

GenAIOps con flusso di prompt fornisce le altre funzionalità seguenti per la personalizzazione:

  • Bring Your Own Flow (BYOF) offre una piattaforma completa per lo sviluppo di più casi d'uso correlati alle applicazioni infuse LLM.
  • Lo sviluppo basato sulla configurazione significa che non è necessario scrivere codice boilerplate esteso.
  • La sperimentazione e la valutazione richieste vengono eseguite sia in locale che nel cloud.
  • I notebook per la valutazione della richiesta locale forniscono una libreria di funzioni per la sperimentazione locale.
  • I test degli endpoint all'interno della pipeline dopo la distribuzione controllano la disponibilità e l'idoneità degli endpoint.
  • Il ciclo umano facoltativo convalida le metriche delle richieste prima della distribuzione.

Fasi genAIOps

Il ciclo di vita di GenAIOps comprende quattro fasi distinte:

  • Inizializzazione. Definire chiaramente l'obiettivo aziendale, raccogliere esempi di dati pertinenti, stabilire una struttura di richiesta di base e creare un flusso che migliora le sue funzionalità.

  • Sperimentazione. Applicare il flusso ai dati di esempio, valutare le prestazioni del prompt e perfezionare il flusso in base alle esigenze. Eseguire l'iterazione continuamente fino a quando non si è soddisfatti dei risultati.

  • Valutazione e perfezionamento. Eseguire il benchmark delle prestazioni del flusso usando un set di dati più grande, valutare l'efficacia della richiesta e apportare miglioramenti di conseguenza. Passare alla fase successiva se i risultati soddisfano gli standard desiderati.

  • Distribuzione. Ottimizzare il flusso per efficienza ed efficacia, distribuirlo in un ambiente di produzione, tra cui la distribuzione A/B, monitorarne le prestazioni, raccogliere commenti e suggerimenti degli utenti e usare queste informazioni per migliorare ulteriormente il flusso.

Rispettando questa metodologia strutturata, il prompt flow consente di sviluppare in modo sicuro, testare rigorosamente, ottimizzare e distribuire i flussi, portando alla creazione di applicazioni basate su intelligenza artificiale affidabili e sofisticate.

Il modello di flusso di richiesta GenAIOps formalizza questa metodologia strutturata usando un approccio code-first e consente di creare app LLM-infused usando strumenti di flusso prompt e funzionalità di processo e flusso di richieste GenAIOps. Questo modello è disponibile in GenAIOps con il modello di flusso prompt.

Flusso del processo GenAIOps

Screenshot del processo di prompt flow di GenAIOps.

  1. Nella fase di inizializzazione si sviluppano flussi, si preparano e si curano i dati e si aggiornano i file di configurazione correlati a GenAIOps.
  2. Dopo lo sviluppo locale con Visual Studio Code con l'estensione Flusso di richiesta, si genera una richiesta pull dal ramo di funzionalità al ramo di sviluppo, che esegue la pipeline di convalida della compilazione e i flussi di sperimentazione.
  3. La richiesta pull viene approvata manualmente e il codice viene unito al ramo di sviluppo.
  4. Dopo l'unione della richiesta pull al ramo di sviluppo, viene eseguita la pipeline di integrazione continua (CI) per l'ambiente di sviluppo. La pipeline CI esegue sia i flussi di sperimentazione che di valutazione in sequenza e registra i flussi nel Registro di sistema di Azure Machine Learning oltre ad altri passaggi della pipeline.
  5. Al termine dell'esecuzione della pipeline CI, un trigger di distribuzione continua (CD) esegue la pipeline cd, che distribuisce il flusso standard dal Registro di sistema di Azure Machine Learning come endpoint online di Azure Machine Learning. La pipeline esegue quindi test di integrazione e smoke test nel flusso distribuito.
  6. Viene creato un ramo di rilascio dal ramo di sviluppo oppure viene generata una richiesta pull dal ramo di sviluppo al ramo di rilascio.
  7. La richiesta pull viene approvata manualmente e il codice viene unito al ramo di rilascio. Dopo che la richiesta pull viene unita al ramo di rilascio, viene eseguita la pipeline CI per l'ambiente di produzione. La pipeline esegue sia i flussi di sperimentazione che di valutazione in sequenza e registra i flussi nel Registro di sistema di Azure Machine Learning oltre ad altri passaggi della pipeline.
  8. Al termine dell'esecuzione della pipeline CI, un trigger cd esegue la pipeline cd, che distribuisce il flusso standard dal Registro di sistema di Azure Machine Learning come endpoint online di Azure Machine Learning. La pipeline esegue quindi test di integrazione e smoke test nel flusso distribuito.

Creare un flusso di richiesta GenAIOps

Il resto di questo articolo illustra come usare GenAIOps con il flusso di richiesta seguendo l'esempio end-to-end nel repository di modelli di flusso di richiesta GenAIOps, che consentono di compilare applicazioni LLM-infused usando il flusso di richiesta e GitHub. L'obiettivo principale è fornire assistenza per lo sviluppo di queste applicazioni usando le funzionalità del flusso di richiesta e di GenAIOps.

Prerequisiti

Configurare una connessione al flusso di richiesta

Il flusso di richiesta usa una risorsa di connessione per connettersi agli endpoint di Ricerca di Azure OpenAI, OpenAI o Azure AI. È possibile creare una connessione tramite l'interfaccia utente del portale del flusso di prompt o usando l'API REST. Per altre informazioni, vedere Connessioni nel flusso di richiesta.

Per creare la connessione, seguire le istruzioni in Configurare le connessioni per il flusso di richiesta. I flussi di esempio usano una connessione denominata aoai, quindi assegnare il nome alla connessione.

Configurare una sessione di calcolo

Il flusso di richiesta usa una sessione di calcolo per eseguire il flusso. Creare e avviare la sessione di calcolo prima di eseguire il flusso di richiesta.

Configurare il repository GitHub

Per creare un repository con fork nell'organizzazione GitHub, seguire le istruzioni in Configurare il repository GitHub. Questo repository usa due rami, main e development, per promozioni di codice ed esecuzione della pipeline.

Per creare un nuovo repository locale, seguire le istruzioni in Clonare il repository. Questo clone consente di creare un nuovo ramo di funzionalità dal ramo di sviluppo e di incorporare le modifiche.

Configurare l'autenticazione tra GitHub e Azure

Questo processo configura un segreto GitHub che archivia le informazioni dell'entità servizio. Per connettersi automaticamente ad Azure, i flussi di lavoro nel repository possono leggere le informazioni di connessione usando il nome del segreto. Per altre informazioni, vedere Usare GitHub Actions per connettersi ad Azure.

  1. Creare un'entità servizio seguendo le istruzioni riportate in Creare un'entità servizio di Azure.
  2. Usare l'entità servizio per configurare l'autenticazione tra il repository GitHub e i servizi di Azure seguendo le istruzioni riportate in Configurare l'autenticazione con Azure e GitHub.

Testare la pipeline

Per testare le pipeline, seguire le istruzioni riportate in Aggiornare i dati di test. Il processo completo prevede i passaggi seguenti:

  1. Si genera una richiesta pull da un ramo di funzionalità al ramo di sviluppo.
  2. La pipeline di richiesta pull viene eseguita automaticamente a causa della configurazione dei criteri di ramo.
  3. La richiesta pull viene unita al ramo di sviluppo.
  4. La pipeline associata dev viene eseguita, con conseguente esecuzione completa di integrazione continua e distribuzione continua e provisioning o aggiornamento degli endpoint di Azure Machine Learning.

Gli output dovrebbero essere simili agli esempi in Esempio di esecuzione, valutazione e scenario di distribuzione.

Usare l'esecuzione locale

Per usare le funzionalità di esecuzione locale, seguire questa procedura.

  1. Clonare il repository come segue:

    git clone https://github.com/microsoft/genaiops-promptflow-template.git
    
  2. Creare un file con estensione env a livello di cartella principale. Aggiungere righe per ogni connessione, aggiornando i valori per i segnaposto. Gli esempi nel repository di esempio usano la connessione AzureOpenAI denominata aoai e la versione 2024-02-01dell'API .

    aoai={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "azure","api_version": "2024-02-01"}
    <connection2>={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "<api type>","api_version": "<api_version>"}
    
  3. Preparare l'ambiente locale conda o virtuale per installare le dipendenze.

    python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv
    
  4. Inserire o scrivere i flussi nel modello in base alle istruzioni riportate in Come eseguire l'onboarding di nuovi flussi.

  5. Scrivere script Python nella cartella local_execution simile agli esempi forniti.