Dela via


Integrera prompt flow med DevOps för LLM-baserade program

Azure Machine Learning prompt flow är en utvecklarvänlig och lättanvänd kod-första metod för att utveckla och iterera flöden för stor språkmodell (LLM)-baserad programutveckling. Prompt flow tillhandahåller ett SDK och CLI, ett Visual Studio Code-tillägg och ett flödesredigeringsgränssnitt. De här verktygen underlättar utveckling av lokala flöde, lokal flödeskörning och utvärderingskörningsutlösare samt övergång av flöden mellan lokala och molnbaserade arbetsytemiljöer.

Du kan kombinera funktionen för snabbflöde och kod med utvecklaråtgärder (DevOps) för att förbättra dina LLM-baserade arbetsflöden för programutveckling. Den här artikeln fokuserar på att integrera prompt flow och DevOps for Azure Machine Learning LLM-baserade program.

Följande diagram visar interaktionen mellan utveckling av lokala och molnbaserade promptflöden med DevOps.

Diagram som visar följande flöde: skapa flöde, utveckla och testa flöde, versionshantering i kodlagringsplats, skicka körningar till molnet samt debut och iteration.

Förutsättningar

Använda en kod-första upplevelse i promptflöde

Utveckling av LLM-baserade program följer vanligtvis en standardiserad programutvecklingsprocess som innehåller källkodslagringsplatser och ci/CD-pipelines (kontinuerlig integrering/kontinuerlig distribution). Den här processen främjar effektiv utveckling, versionskontroll och samarbete mellan teammedlemmar.

Genom att integrera DevOps med funktionen för snabbflödeskod får kodutvecklare en effektivare GenAIOps- eller LLMOps-iterationsprocess med följande viktiga funktioner och fördelar:

  • Flödesversioner i kodlagringsplatsen. Du kan definiera flödesfiler i YAML-format och de ligger i linje med refererade källfiler i samma mappstruktur.

  • Flödeskörningsintegrering med CI/CD-pipelines. Du kan sömlöst integrera promptflöde i dina CI/CD-pipelines och leveransprocesser med hjälp av cli- eller SDK-kommandotolken för att automatiskt utlösa flödeskörningar.

  • Smidig övergång mellan lokalt och moln. Du kan enkelt exportera din flödesmapp till din lokala eller överordnade kodlagringsplats för versionskontroll, lokal utveckling och delning. Du kan också enkelt importera flödesmappen tillbaka till Azure Machine Learning för ytterligare redigering, testning och distribution med hjälp av molnresurser.

Åtkomst till flödeskod för fråga

Varje promptflöde har en flödesmappstruktur som innehåller viktiga kodfiler som definierar flödet. Mappstrukturen organiserar ditt flöde, vilket underlättar smidigare övergångar mellan lokalt och moln.

Azure Machine Learning tillhandahåller ett delat filsystem för alla arbetsyteanvändare. När flödet skapas genereras en motsvarande flödesmapp automatiskt och lagras i katalogen Användare/<användarnamn>/promptflow .

Skärmbild av skapande av standardflöde som visar ett nytt flöde.

Arbeta med flödeskodfiler

När du har skapat ett flöde i Azure Machine Learning-studio kan du visa, redigera och hantera flödesfilerna i avsnittet Filer på flödesredigeringssidan. Alla ändringar du gör i filerna återspeglas direkt i filresurslagringen.

Skärmbild av en standardflödesredigeringssida som markerar fönstret Filer.

Flödesmappen för ett LLM-baserat flöde innehåller följande nyckelfiler.

  • flow.dag.yaml är den primära flödesdefinitionsfilen i YAML-format. Den här filen är integrerad i redigering och definition av promptflödet. Filen innehåller information om indata, utdata, noder, verktyg och varianter som flödet använder.

  • Användarhanterade källkodsfiler i Python-format (.py) eller Jinja 2-format (.jinja2) konfigurerar verktygen och noderna i flödet. Python-verktyget använder Python-filer för att definiera anpassad Python-logik. Prompt-verktyget och LLM-verktyget använder Jinja 2-filer för att definiera snabbkontext.

  • Icke-källfiler som verktyg och datafiler kan ingå i flödesmappen tillsammans med källfilerna.

Om du vill visa och redigera råkoden för flow.dag.yaml - och källfilerna i filredigeraren aktiverar du Raw-filläget.

Skärmbild av raw-filläget i ett standardflöde.

Du kan också komma åt och redigera alla dina flödesmappar och filer från sidan Azure Machine Learning-studio Notebooks.

Skärmbild av Notebooks i Azure Machine Learning med mappen prompt flow som visar filerna.

Ladda ned och checka in flödeskod för prompten

Om du vill kontrollera flödet till kodlagringsplatsen exporterar du flödesmappen från Azure Machine Learning-studio till den lokala datorn. Välj nedladdningsikonen i avsnittet Filer på flödesredigeringssidan för att ladda ned ett ZIP-paket som innehåller alla flödesfiler. Du kan sedan kontrollera filen på din kodlagringsplats eller packa upp den för att arbeta med filerna lokalt.

Skärmbild som visar nedladdningsikonen i Utforskaren.

Mer information om DevOps-integrering med Azure Machine Learning finns i Git-integrering för Azure Machine Learning.

Utveckla och testa lokalt

När du förfinar och finjusterar ditt flöde eller frågar under iterativ utveckling kan du utföra flera iterationer lokalt i din kodlagringsplats. VS Code-communityversionen, VS Code Prompt Flow-tillägget och det lokala SDK:et för promptflöde och CLI underlättar ren lokal utveckling och testning utan Azure-bindning.

När du arbetar lokalt kan du göra och testa ändringar snabbt, utan att behöva uppdatera huvudkodlagringsplatsen varje gång. Mer information och vägledning om hur du använder lokala versioner finns i GitHub-communityn för promptflöde.

Använda VS Code Prompt Flow-tillägget

Genom att använda tillägget Förfråga flödes-VS Code kan du enkelt skapa ditt flöde lokalt i VS Code-redigeraren med en liknande användargränssnittsupplevelse som i molnet.

Så här redigerar du filer lokalt i VS Code med tillägget Fråga flöde:

  1. Öppna en flödesmapp i VS Code med promptflödestillägget aktiverat.

  2. Öppna filen flow.dag.yaml och välj länken Visual Editor längst upp i filen.

    Skärmbild av länken för visualiseringsredigeraren överst i en flödesdefinitionsfil i VS Code.

  3. Använd redigeraren för det visuella kommandotolken för att göra ändringar i ditt flöde, till exempel justera prompterna i varianter eller lägga till fler noder.

    Skärmbild av redigeringsprogrammet för det visuella kommandotolken i VS Code.

  4. Om du vill testa flödet väljer du ikonen Kör överst i det visuella redigeraren eller testar en nod genom att välja ikonen Kör överst på noden.

    Skärmbild av VS Code som visar körning av flödet eller en nod i det visuella redigeringsprogrammet.

Använda promptflödes-SDK och CLI

Om du föredrar att arbeta direkt i kod eller använda Jupyter, PyCharm, Visual Studio eller en annan integrerad utvecklingsmiljö (IDE) kan du ändra YAML-koden direkt i filen flow.dag.yaml .

Skärmbild av en YAML-fil i VS Code som markerar standardkatalogen för indata och flöde.

Du kan sedan utlösa en enda flödeskörning för testning med hjälp av CLI eller SDK för promptflöde i terminalen enligt följande.

Kör följande kod för att utlösa en körning från arbetskatalogen:

pf flow test --flow <directory-name>

Returvärdena är testloggarna och utdata.

Skärmbild av flödestestutdata i PowerShell.

Skicka körningar till molnet från en lokal lagringsplats

När du är nöjd med resultatet av din lokala testning kan du använda CLI eller SDK för att skicka körningar till molnet från den lokala lagringsplatsen. Följande procedur och kod baseras på demoprojektet Webbklassificering i GitHub. Du kan klona projektlagringsplatsen eller ladda ned flödeskoden för fråga till den lokala datorn.

Installera SDK:et för promptflödet

Installera Azure Prompt Flow SDK/CLI genom att köra pip install promptflow[azure] promptflow-tools.

Om du använder demoprojektet hämtar du SDK och andra nödvändiga paket genom att installera requirements.txt med
pip install -r <path>/requirements.txt.

Ansluta till din Azure Machine Learning-arbetsyta

az login

Ladda upp flödet och skapa en körning

Förbered run.yml-filen för att definiera konfigurationen för den här flödeskörningen i molnet.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path-to-flow>
data: <path-to-flow>/<data-file>.jsonl

column_mapping:
  url: ${data.url}

# Define cloud compute resource

resources:
  instance_type: <compute-type>

# If using compute instance compute type, also specify instance name
#  compute: <compute-instance-name> 

# Specify connections

  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>

Du kan ange anslutnings- och distributionsnamnet för varje verktyg i flödet som kräver en anslutning. Om du inte anger anslutnings- och distributionsnamnet använder verktyget anslutningen och distributionen i filen flow.dag.yaml . Använd följande kod för att formatera anslutningar:

...
connections:
  <node-name>:
    connection: <connection-name>
      deployment_name: <deployment-name>
...

Skapa körningen.

pfazure run create --file run.yml

Skapa en utvärderingsflödeskörning

Förbered run_evaluation.yml-filen för att definiera konfigurationen för den här utvärderingsflödet som körs i molnet.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path-to-flow>
data: <path-to-flow>/<data-file>.jsonl
run: <id-of-base-flow-run>
column_mapping:
  <input-name>: ${data.<column-from-test-dataset>}
  <input-name>: ${run.outputs.<column-from-run-output>}

resources:
  instance_type: <compute-type>
  compute: <compute_instance_name> 

connections:
  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>
  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>

Skapa utvärderingskörningen.

pfazure run create --file run_evaluation.yml

Visa körningsresultat

Om du skickar flödeskörningen till molnet returneras körningens moln-URL. Du kan öppna URL:en för att visa körningsresultatet i Azure Machine Learning-studio. Du kan också köra följande CLI- eller SDK-kommandon för att visa körningsresultat.

Strömma loggarna

pfazure run stream --name <run-name>

Visa körningsutdata

pfazure run show-details --name <run-name>

Visa mått för utvärderingskörning

pfazure run show-metrics --name <evaluation-run-name>

Integrera med DevOps

En kombination av en lokal utvecklingsmiljö och ett versionskontrollsystem som Git är vanligtvis mest effektivt för iterativ utveckling. Du kan göra ändringar och testa koden lokalt och sedan checka in ändringarna i Git. Den här processen skapar en löpande post för dina ändringar och ger möjlighet att återgå till tidigare versioner om det behövs.

När du behöver dela flöden i olika miljöer kan du skicka dem till en molnbaserad kodlagringsplats som GitHub eller Azure Repos. Med den här strategin kan du komma åt den senaste kodversionen från valfri plats och tillhandahåller verktyg för samarbete och kodhantering.

Genom att följa dessa metoder kan team skapa en sömlös, effektiv och produktiv samarbetsmiljö för snabb flödesutveckling.

Till exempel LLMOps-pipelines från slutpunkt till slutpunkt som kör webbklassificeringsflöden finns i Konfigurera från slutpunkt till slutpunkt GenAIOps med prompten Flow och GitHub och demoprojektet GitHub Web Classification.

Utlösarflöde körs i CI-pipelines

När du har utvecklat och testat ditt flöde och checkar in det som den första versionen är du redo för justering och testning av iterationer. I det här skedet kan du utlösa flödeskörningar, inklusive batchtestnings- och utvärderingskörningar, med hjälp av cli-kommandotolken för att automatisera stegen i din CI-pipeline.

Under hela livscykeln för dina flödes-iterationer kan du använda CLI för att automatisera följande åtgärder:

  • Köra kommandotolken efter en pull-begäran
  • Köra utvärdering av promptflöde för att säkerställa att resultaten är av hög kvalitet
  • Registrera promptflödesmodeller
  • Distribuera promptflödesmodeller

Använda studiogränssnittet för kontinuerlig utveckling

När som helst i flödesutvecklingen kan du gå tillbaka till Azure Machine Learning-studio användargränssnittet och använda molnresurser och upplevelser för att göra ändringar i ditt flöde.

Om du vill fortsätta utveckla och arbeta med de senaste versionerna av flödesfilerna kan du komma åt en terminal på sidan Notebook och hämta de senaste flödesfilerna från lagringsplatsen. Eller så kan du direkt importera en lokal flödesmapp som ett nytt utkastflöde för sömlös övergång mellan lokal utveckling och molnutveckling.

Skärmbild av skärmen Skapa ett nytt flöde med Uppladdning till lokal markerad.

Distribuera flödet som en onlineslutpunkt

Det sista steget i att gå till produktion är att distribuera ditt flöde som en onlineslutpunkt i Azure Machine Learning. Med den här processen kan du integrera flödet i ditt program och göra det tillgängligt för användning. Mer information om hur du distribuerar ditt flöde finns i Distribuera flöden till Azure Machine Learning-hanterad onlineslutpunkt för slutsatsdragning i realtid.

Samarbeta om flödesutveckling

Samarbete mellan teammedlemmar kan vara viktigt när du utvecklar ett LLM-baserat program med promptflöde. Teammedlemmar kanske redigerar och testar samma flöde, arbetar med olika fasetter i flödet eller gör iterativa ändringar och förbättringar samtidigt. Det här samarbetet kräver en effektiv och effektiv metod för att dela kod, spåra ändringar, hantera versioner och integrera ändringar i det slutliga projektet.

Prompt flow SDK/CLI och VS Code Prompt Flow-tillägget underlättar enkelt samarbete om kodbaserad flödesutveckling i en källkodslagringsplats. Du kan använda ett molnbaserat källkontrollsystem som GitHub eller Azure Repos för att spåra ändringar, hantera versioner och integrera dessa ändringar i det slutliga projektet.

Följ metodtips för samarbetsutveckling

  1. Konfigurera en centraliserad kodlagringsplats.

    Det första steget i samarbetsprocessen är att konfigurera en kodlagringsplats som bas för projektkod, inklusive promptflödeskod. Den här centraliserade lagringsplatsen möjliggör effektiv organisation, ändringsspårning och samarbete mellan teammedlemmar.

  2. Skapa och testa ditt flöde lokalt i VS Code med tillägget Fråga flöde.

    När lagringsplatsen har konfigurerats kan gruppmedlemmar använda VS Code med tillägget Fråga flöde för lokal redigering och testning av enskilda indata för flödet. Den standardiserade integrerade utvecklingsmiljön främjar samarbete mellan flera medlemmar som arbetar med olika aspekter av flödet.

    Skärmbild av lokal utveckling.

  3. pfazure Använd CLI eller SDK för att skicka batchkörningar och utvärderingskörningar från lokala flöden till molnet.

    Efter lokal utveckling och testning kan teammedlemmar använda CLI/SDK för promptflöde för att skicka och utvärdera batch- och utvärderingskörningar till molnet. Den här processen möjliggör användning av molnberäkning, lagring av beständiga resultat, skapande av slutpunkter för distributioner och effektiv hantering i studiogränssnittet.

    Skärmbild av pfazure-kommandot för att skicka körningen till molnet.

  4. Visa och hantera körningsresultat i användargränssnittet för Azure Machine Learning-studio arbetsyta.

    När de har skickat körningar till molnet kan teammedlemmar komma åt studiogränssnittet för att visa resultaten och hantera experiment effektivt. Molnarbetsytan är en central plats för insamling och hantering av körningshistorik, loggar, ögonblicksbilder, omfattande resultat och instansnivåindata och utdata.

    Skärmbild av ögonblicksbild av molnkörning.

  5. Använd listan Körningar som registrerar all körningshistorik för att enkelt jämföra resultatet av olika körningar, med hjälp av kvalitetsanalys och nödvändiga justeringar.

    Skärmbild av körningslistan på arbetsytan.

  6. Fortsätt att använda lokal iterativ utveckling.

    Efter att ha analyserat resultatet av experiment kan teammedlemmar återgå till den lokala miljön och kodlagringsplatsen för mer utveckling och finjustering och iterativt skicka efterföljande körningar till molnet. Den här iterativa metoden säkerställer en konsekvent förbättring tills teamet är nöjda med produktionskvaliteten.

  7. Använd enstegsdistribution till produktion i studion.

    När teamet är helt säkra på flödets kvalitet kan de sömlöst distribuera det som en onlineslutpunkt i en robust molnmiljö. Distribution som en onlineslutpunkt kan baseras på en körningsögonblicksbild som möjliggör stabil och säker servering, ytterligare resursallokering och användningsspårning samt loggövervakning i molnet.

    Skärmbild av distribution av flöde från en körningsögonblicksbild.

    Guiden Azure Machine Learning-studio Deploy hjälper dig att enkelt konfigurera distributionen.

    Skärmbild av distributionsguiden.