Condividi tramite


Integrare LangChain nei flussi di richiesta

La libreria Python LangChain è un framework per lo sviluppo di applicazioni basate su modelli di linguaggio di grandi dimensioni, agenti e strumenti di dipendenza. Questo articolo illustra come potenziare lo sviluppo LangChain con il flusso di richieste di Azure Machine Learning.

Screenshot di un flusso con la libreria Python langchain.

L'integrazione di LangChain con il flusso di richiesta è una combinazione potente che consente di creare e testare i modelli linguistici personalizzati con facilità. È possibile usare i moduli LangChain per compilare il flusso, quindi usare il processo di flusso della richiesta per ridimensionare gli esperimenti per il test bulk, la valutazione e la distribuzione finale. Ad esempio, è possibile eseguire esperimenti su larga scala in base a set di dati più grandi.

Se si dispone già di un flusso di prompt locale basato sul codice LangChain, è possibile convertirlo facilmente in un flusso di richiesta di Azure Machine Learning per un'ulteriore sperimentazione. In alternativa, se si preferisce usare direttamente le classi e le funzioni di LangChain SDK, è possibile creare facilmente flussi di Azure Machine Learning con nodi Python che usano il codice LangChain personalizzato.

Prerequisiti

  • Flusso LangChain locale testato e pronto per la distribuzione.
  • Una sessione di calcolo in grado di eseguire il flusso del prompt di Machine Learning aggiungendo pacchetti elencati nel file requirements.txt , incluso langchain. Per altre informazioni, vedere Gestire la sessione di calcolo del flusso di richiesta.

Convertire il codice LangChain in un flusso di richiesta

Usare il processo seguente per convertire il codice LangChain locale in un flusso di prompt di Azure Machine Learning eseguibile.

Convertire le credenziali in una connessione al flusso di richiesta

Il codice LangChain potrebbe definire variabili di ambiente per archiviare le credenziali, ad esempio la chiave API AzureOpenAI necessaria per richiamare i modelli AzureOpenAI. Ad esempio, il codice seguente mostra le variabili di ambiente impostate per il tipo di API OpenAI, la chiave, la base e la versione.

os.environ["OPENAI_API_TYPE"] = "azure"
os.environ["OPENAI_API_VERSION"] = "2023-05-15"
os.environ["OPENAI_API_BASE"] = "https://contosobamiopenai.openai.azure.com/"
os.environ["OPENAI_API_KEY"] = "abc123abc123abc123abc123abc123ab"

Quando si esegue un flusso di prompt di Azure Machine Learning nel cloud, è preferibile non esporre le credenziali come variabili di ambiente. Per archiviare e gestire in modo sicuro le credenziali separatamente dal codice, è necessario convertire le variabili di ambiente in una connessione al flusso di richiesta.

Per creare una connessione che archivia in modo sicuro le credenziali personalizzate, ad esempio la chiave API LLM o altre chiavi necessarie, seguire queste istruzioni:

  1. Nella pagina Flusso prompt nell'area di lavoro di Azure Machine Learning selezionare la scheda Connessioni e quindi selezionare Crea.

  2. Selezionare un tipo di connessione dall'elenco a discesa. Per questo esempio, selezionare Personalizzato.

    Screenshot della selezione di Crea e quindi Personalizzato nella scheda Connessioni della pagina Flusso di richiesta.

  3. Nel riquadro destro definire il nome della connessione e quindi aggiungere coppie Chiave-valore per archiviare le credenziali e le chiavi selezionando Aggiungi coppie chiave-valore.

    Screenshot dell'aggiunta di coppie chiave-valore di connessione personalizzate.

  4. Per archiviare un valore crittografato per una chiave, selezionare la casella di controllo is secret accanto a una o più coppie chiave-valore. Per creare correttamente una connessione personalizzata, è necessario impostare almeno un valore come segreto.

  5. Seleziona Salva.

La connessione personalizzata può sostituire chiavi e credenziali o le variabili di ambiente corrispondenti definite in modo esplicito nel codice LangChain. Per usare la connessione personalizzata nel flusso, vedere Configurare la connessione.

Convertire il codice LangChain in un flusso eseguibile

Per creare un flusso, selezionare Crea nella pagina Flusso prompt in studio di Azure Machine Learning e scegliere un tipo di flusso. Nella pagina di creazione del flusso avviare la sessione di calcolo prima di creare il flusso. Selezionare i tipi di strumento nella parte superiore della pagina per inserire i nodi corrispondenti nel flusso. Per istruzioni dettagliate sulla creazione di flussi, vedere Sviluppare il flusso di richiesta.

Tutto il codice LangChain può essere eseguito direttamente nei nodi Python nel flusso, purché la sessione di calcolo contenga la dipendenza del langchain pacchetto.

Esistono due modi per convertire il codice LangChain in un flusso di prompt di Azure Machine Learning. Il tipo di flusso da implementare dipende dal caso d'uso.

  • Per una migliore gestione degli esperimenti, è possibile convertire il codice per usare Python di Azure Machine Learning e gli strumenti di richiesta nel flusso. Estrarre il modello di richiesta dal codice in un nodo del prompt e inserire il codice rimanente in uno o più nodi o strumenti Python. Questa opzione consente di ottimizzare facilmente le richieste eseguendo varianti e consente di scegliere prompt ottimali in base ai risultati della valutazione.

    L'esempio seguente mostra un flusso che usa sia i nodi prompt che i nodi Python:

    Screenshot dei flussi che evidenzia il pulsante del prompt e il modello di sistema.

  • Per un processo di conversione più semplice, è possibile chiamare la libreria LangChain LLM direttamente dai nodi Python. Tutto il codice viene eseguito nei nodi Python, incluse le definizioni dei prompt. Questa opzione supporta test batch più veloci in base a set di dati di dimensioni maggiori o ad altre configurazioni.

    L'esempio seguente mostra un flusso che usa solo nodi Python:

    Screenshot dei flussi che mostra il nodo del codice e il grafico LangChain.

Configurare la connessione

Dopo aver strutturato il flusso e spostato il codice in nodi dello strumento specifici, è necessario sostituire le variabili di ambiente originali con le chiavi corrispondenti dalla connessione. Per usare la connessione personalizzata creata, seguire questa procedura:

  1. Nel codice Python importare la libreria di connessione personalizzata immettendo
    from promptflow.connections import CustomConnection.

    Nota

    Per importare una connessione OpenAI di Azure, usare from promptflow.connections import AzureOpenAIConnection.

  2. Nella funzione dello strumento definire un parametro di input del tipo CustomConnection.

    Screenshot del nodo della catena di ricerca della documentazione che evidenzia la connessione personalizzata.

  3. Sostituire le variabili di ambiente che hanno originariamente definito le chiavi o le credenziali con le chiavi corrispondenti dalla connessione.

  4. Analizzare l'input nella sezione di input dell'interfaccia utente del nodo e quindi selezionare la connessione personalizzata dall'elenco a discesa Valore nell'interfaccia utente.

    Screenshot del nodo della catena che evidenzia la connessione.

  5. Assicurarsi di configurare anche i parametri di connessione in tutti gli altri nodi che li richiedono, ad esempio i nodi LLM.

Configurare gli input e gli output

Prima di eseguire il flusso, configurare gli input e gli output del nodo e gli input e gli output complessivi del flusso. Questo passaggio è fondamentale per garantire che tutti i dati necessari passino correttamente attraverso il flusso e produno i risultati desiderati. Per altre informazioni, vedere Input e output del flusso.