Dela via


Utveckla ett promptflöde

Viktigt!

Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Promptflöde är ett utvecklingsverktyg som utformats för att effektivisera hela utvecklingscykeln för AI-program som drivs av stora språkmodeller (LLM). Promptflöde är en omfattande lösning som förenklar processen med prototyper, experimentering, iterering och distribution av dina AI-program.

Med promptflöde kan du:

  • Dirigera körbara flöden med LLM:er, prompter och Python-verktyg via ett visualiserat diagram.
  • Testa, felsöka och iterera dina flöden med lätthet.
  • Skapa promptvarianter och jämför deras prestanda.

I den här artikeln får du lära dig hur du skapar och utvecklar ditt första promptflöde i Azure AI Foundry-portalen.

Förutsättningar

Skapa och utveckla ditt promptflöde

Du kan skapa ett flöde genom att antingen klona de exempel som är tillgängliga i galleriet eller skapa ett flöde från grunden. Om du redan har flödesfiler i lokal filresurs eller filresurs kan du även importera filerna för att skapa ett flöde.

Så här skapar du ett promptflöde från galleriet i Azure AI Foundry-portalen:

  1. Logga in på Azure AI Foundry och välj ditt projekt.

  2. På den komprimerade vänstra menyn väljer du Fråga flöde.

  3. Välj + Skapa.

  4. I panelen Standardflöde väljer du Skapa.

  5. På sidan Skapa ett nytt flöde anger du ett mappnamn och väljer sedan Skapa.

    Skärmbild av att välja och skapa ett standardflöde.

  6. Redigeringssidan för promptflöde öppnas. Välj Starta beräkningssession för att köra en beräkningssession för flödet.

  7. Du kan börja redigera ditt flöde nu. Som standard visas ett exempelflöde. Det här exempelflödet har noder för VERKTYGEN LLM och Python.

    Skärmbild av flödesindata och utdata på sidan redigera promptflöde.

    Kommentar

    Endast grafvyn för visualisering. Den visar flödesstrukturen som du utvecklar. Du kan inte redigera grafvyn direkt, men du kan zooma in, zooma ut och rulla. Du kan välja en nod i grafvyn för att markera och navigera till noden i verktygsredigeringsvyn.

  8. Du kan också lägga till fler verktyg i flödet. De synliga verktygsalternativen är LLM, Prompt och Python. Om du vill visa fler verktyg väljer du + Fler verktyg.

    Skärmbild av var du kan hitta fler verktyg på sidan redigera promptflöde.

  9. Välj en anslutning och distribution i LLM-verktygsredigeraren.

    Skärmbild av den valda anslutningen och distributionen i LLM-verktyget på sidan redigera promptflöde.

  10. I avsnittet Indata lägger du till ett värde för ämnet. Till exempel "atomer".

  11. Välj Kör för att köra flödet.

    Skärmbild av var du väljer kör på sidan redigera promptflöde.

  12. Flödeskörningens status visas som Körs.

    Skärmbild av flödet i körningstillståndet på sidan redigera promptflöde.

  13. När flödeskörningen är klar väljer du Visa utdata för att visa flödesresultatet.

    Skärmbild av var du kan välja att visa flödesresultat från sidan redigera promptflöde.

  14. Du kan visa flödeskörningens status och utdata i avsnittet Utdata.

    Skärmbild av utdatainformationen.

Redigera flödet

Varje flöde representeras av en mapp som innehåller en flow.dag.yaml-fil, källkodsfiler och systemmappar. Du kan lägga till nya filer, redigera befintliga filer och ta bort filer. Du kan också exportera filerna till lokala filer eller importera filer från lokala.

Förutom infogad redigering av noden i standardvyn kan du också aktivera växlingsknappen Raw-filläge och välja filnamnet för att redigera filen på fliken Öppna fil.

Flödesindata och utdata

Flödesindata är de data som skickas till flödet som helhet. Definiera indataschemat genom att ange namn och typ. Ange indatavärdet för varje indata för att testa flödet. Du kan referera till flödesindata senare i flödesnoderna med hjälp av ${input.[input name]} syntax.

Flödesutdata är de data som genereras av flödet som helhet, vilket sammanfattar resultatet av flödeskörningen. Du kan visa och exportera utdatatabellen när flödeskörningen eller batchkörningen har slutförts. Definiera flödesutdatavärde genom att referera till flödets enskilda nodutdata med hjälp av syntax eller ${[node name].output} ${[node name].output.[field name]}.

Genom att referera till nodutdata kan du länka samman noder. Du kan till exempel referera till LLM-nodens utdata i Python-nodens indata, så att Python-noden kan använda LLM-nodens utdata, och i grafvyn kan du se att de två noderna är länkade tillsammans.

Aktivera villkorsstyrd kontroll för flödet

Prompt Flow erbjuder inte bara ett effektivt sätt att köra flödet, utan ger också en kraftfull funktion för utvecklare – villkorsstyrd kontroll, som gör det möjligt för användare att ange villkor för körning av alla noder i ett flöde.

I grunden ger villkorsstyrd kontroll möjlighet att associera varje nod i ett flöde med en aktiverad konfiguration. Den här konfigurationen är i princip en "when"-instruktion som avgör när en nod ska köras. Kraften i den här funktionen realiseras när du har komplexa flöden där körningen av vissa uppgifter beror på resultatet av tidigare uppgifter. Med hjälp av den villkorliga kontrollen kan du konfigurera dina specifika noder så att de endast körs när de angivna villkoren uppfylls.

Mer specifikt kan du ange aktiveringskonfigurationen för en nod genom att välja knappen Aktivera konfiguration på nodkortet. Du kan lägga till "when"-instruktionen och ange villkoret. Du kan ange villkoren genom att referera till flödesindata eller nodutdata. Du kan till exempel ange villkoret ${input.[input name]} som specifikt värde eller ${[node name].output} som specifikt värde.

Om villkoret inte uppfylls hoppas noden över. Nodstatusen visas som "Kringgåd".

Testa flödet

Du kan testa flödet på två sätt:

  • Kör en nod.

    • Om du vill köra en enskild nod väljer du ikonen Kör på en nod i standardvyn. När körningen är klar kan du snabbt kontrollera resultatet i nodutdataavsnittet.

    Skärmbild som visar körningsknappen på nodkortet.

  • Kör hela flödet.

    • Om du vill köra hela flödet väljer du knappen Kör längst upp till höger.

Visa testresultat och spårning (förhandsversion)

När du har kört flödet för hela flödeskörningen kan du se körningsstatusen i körningsbanderollen. Sedan kan du välja Visa spårning för att visa spårningen för att kontrollera resultatet och observera flödeskörningen, där du kan se indata och utdata för hela flödet och varje nod, tillsammans med mer detaljerad information för felsökning. Den är tillgänglig under körningen och när körningen har slutförts.

Förstå spårningsvyn

Välj fliken Spårning på skärmen Utdata för att se ett diagram som innehåller information om varaktigheten och den associerade tokenkostnaden för flödet. Välj flöde under nodnamn för att se detaljerad flödesöversiktsinformation i den högra rutan.

 Skärmbild av spårningsinformation.

Kommentar

I prompt flow SDK definierade vi flera intervalltyper, inklusive LLM, Function, Embedding, Retrieval och Flow. Och systemet skapar automatiskt intervall med körningsinformation i avsedda attribut och händelser.

Mer information om intervalltyper finns i Spårningsintervall.

När flödeskörningen har slutförts kan du för att kontrollera resultaten välja knappen Visa testresultat för att kontrollera alla historiska körningsposter i en lista. Som standard visas de körningsposter som skapats under de senaste 7 dagarna. Du kan välja filtret för att ändra villkoret.

Skärmbild av flödestestresultatet.

Du kan också välja namnkörningsposten för att visa detaljerad information i spårningsvyn.

Utveckla ett chattflöde

Chattflödet är utformat för utveckling av konversationsprogram, som bygger på funktionerna i standardflödet och ger förbättrat stöd för chattindata/utdata och hantering av chatthistorik. Med chattflöde kan du enkelt skapa en chattrobot som hanterar chattindata och utdata.

På sidan för redigering av chattflöden taggas chattflödet med en "chatt"-etikett för att skilja det från standardflöde och utvärderingsflöde. Om du vill testa chattflödet väljer du knappen "Chatt" för att utlösa en chattruta för konversation.

Chattindata/utdata och chatthistorik

De viktigaste elementen som skiljer ett chattflöde från ett standardflöde är Chat-indata, Chatthistorik och Chat-utdata.

  • Chattinmatning: Chattindata refererar till de meddelanden eller frågor som skickas av användare till chattroboten. Att effektivt hantera chattindata är avgörande för en lyckad konversation, eftersom det handlar om att förstå användarnas avsikter, extrahera relevant information och utlösa lämpliga svar.
  • Chatthistorik: Chatthistorik är en post för alla interaktioner mellan användaren och chattroboten, inklusive både användarindata och AI-genererade utdata. Det är viktigt att upprätthålla chatthistoriken för att hålla reda på konversationskontexten och se till att AI:n kan generera kontextuellt relevanta svar.
  • Chattutdata: Chattutdata refererar till AI-genererade meddelanden som skickas till användaren som svar på deras indata. Att generera kontextuellt lämpliga och engagerande chattutdata är viktigt för en positiv användarupplevelse.

Ett chattflöde kan ha flera indata, chatthistorik och chattindata krävs i chattflödet.

  • I avsnittet chattflödesindata kan ett flödesindata markeras som chattindata. Sedan kan du fylla i chattens indatavärde genom att skriva i chattrutan.

  • Prompt flow kan hjälpa användaren att hantera chatthistorik. I chat_history avsnittet Indata är reserverat för att representera chatthistorik. Alla interaktioner i chattrutan, inklusive användarindata, genererade chattutdata och andra flödesindata och utdata, lagras automatiskt i chatthistoriken. Användaren kan inte manuellt ange värdet chat_history för i avsnittet Indata. Den är strukturerad som en lista över indata och utdata:

    [
    {
        "inputs": {
        "<flow input 1>": "xxxxxxxxxxxxxxx",
        "<flow input 2>": "xxxxxxxxxxxxxxx",
        "<flow input N>""xxxxxxxxxxxxxxx"
        },
        "outputs": {
        "<flow output 1>": "xxxxxxxxxxxx",
        "<flow output 2>": "xxxxxxxxxxxxx",
        "<flow output M>": "xxxxxxxxxxxxx"
        }
    },
    {
        "inputs": {
        "<flow input 1>": "xxxxxxxxxxxxxxx",
        "<flow input 2>": "xxxxxxxxxxxxxxx",
        "<flow input N>""xxxxxxxxxxxxxxx"
        },
        "outputs": {
        "<flow output 1>": "xxxxxxxxxxxx",
        "<flow output 2>": "xxxxxxxxxxxxx",
        "<flow output M>": "xxxxxxxxxxxxx"
        }
    }
    ]
    

Kommentar

Möjligheten att automatiskt spara eller hantera chatthistorik är en funktion på redigeringssidan när du utför tester i chattrutan. För batchkörningar är det nödvändigt att användarna inkluderar chatthistoriken i batchkörningsdatauppsättningen. Om det inte finns någon tillgänglig chatthistorik för testning anger du helt enkelt chat_history till en tom lista [] i batchkörningsdatauppsättningen.

Redigeringsprompt med chatthistorik

Att införliva chatthistorik i dina frågor är viktigt för att skapa sammanhangsmedvetna och engagerande chattrobotsvar. I dina frågor kan du referera chat_history till för att hämta tidigare interaktioner. På så sätt kan du referera till tidigare indata och utdata för att skapa kontextuellt relevanta svar.

Använd för-loop-grammatik i Jinja-språket för att visa en lista över indata och utdata från chat_history.

{% for item in chat_history %}
user:
{{item.inputs.question}}
assistant:
{{item.outputs.answer}}
{% endfor %}

Testa med chattrutan

Chattrutan ger ett interaktivt sätt att testa ditt chattflöde genom att simulera en konversation med din chattrobot. Följ dessa steg för att testa chattflödet med hjälp av chattrutan:

  1. Välj knappen "Chatt" för att öppna chattrutan.
  2. Skriv dina testindata i chattrutan och tryck på Retur för att skicka dem till chattroboten.
  3. Granska chattrobotens svar för att säkerställa att de är sammanhangsberoende lämpliga och korrekta.
  4. Visa spårning på plats för att snabbt observera och felsöka.

Nästa steg