Delen via


Een promptstroom ontwikkelen

Belangrijk

Items die in dit artikel zijn gemarkeerd (preview) zijn momenteel beschikbaar als openbare preview. Deze preview wordt aangeboden zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.

Promptflow is een ontwikkelhulpprogramma dat is ontworpen om de volledige ontwikkelingscyclus van AI-toepassingen te stroomlijnen, mogelijk gemaakt met Large Language Models (LLM's). Promptflow biedt een uitgebreide oplossing die het proces van prototypen, experimenteren, herhalen en implementeren van uw AI-toepassingen vereenvoudigt.

Met promptstroom kunt u het volgende doen:

  • Beheer uitvoerbare stromen met LLM's, prompts en Python-hulpprogramma's via een gevisualiseerde grafiek.
  • Test, debug en itereer uw stromen eenvoudig.
  • Maak promptvarianten en vergelijk hun prestaties.

In dit artikel leert u hoe u uw eerste promptstroom maakt en ontwikkelt in Azure AI Studio.

Vereisten

  • Als u nog geen Azure AI Studio-project hebt, maakt u eerst een project.
  • Voor de promptstroom is een rekensessie vereist. Als u geen runtime hebt, kunt u er een maken in Azure AI Studio.
  • U hebt een geïmplementeerd model nodig.

Uw promptstroom maken en ontwikkelen

U kunt een stroom maken door de voorbeelden die beschikbaar zijn in de galerie te klonen of een volledig nieuwe stroom te maken. Als u al stroombestanden in een lokale of bestandsshare hebt, kunt u de bestanden ook importeren om een stroom te maken.

Een promptstroom maken vanuit de galerie in Azure AI Studio:

  1. Meld u aan bij Azure AI Studio en selecteer uw project.

  2. Selecteer de promptstroom in het samenvouwbare linkermenu.

  3. Selecteer + Maken.

  4. Selecteer Maken in de tegel Standaardstroom.

  5. Voer op de pagina Een nieuwe stroom maken een mapnaam in en selecteer Vervolgens Maken.

    Schermopname van het selecteren en maken van een standaardstroom.

  6. De ontwerppagina van de promptstroom wordt geopend. U kunt nu beginnen met het ontwerpen van uw stroom. Standaard ziet u een voorbeeldstroom. Deze voorbeeldstroom bevat knooppunten voor de LLM- en Python-hulpprogramma's.

    Schermopname van stroominvoer en -uitvoer op de pagina promptstroom bewerken.

    Notitie

    Alleen de grafiekweergave voor visualisatie. Hier ziet u de stroomstructuur die u ontwikkelt. U kunt de grafiekweergave niet rechtstreeks bewerken, maar u kunt inzoomen, uitzoomen en schuiven. U kunt een knooppunt selecteren in de grafiekweergave om het knooppunt te markeren en naar het knooppunt te navigeren in de bewerkingsweergave van het hulpprogramma.

  7. U kunt desgewenst meer hulpprogramma's toevoegen aan de stroom. De zichtbare hulpprogrammaopties zijn LLM, Prompt en Python. Als u meer hulpprogramma's wilt weergeven, selecteert u + Meer hulpprogramma's.

    Schermopname van waar u meer hulpprogramma's kunt vinden op de pagina promptstroom bewerken.

  8. Selecteer een verbinding en implementatie in de LLM-hulpprogramma-editor.

    Schermopname van de geselecteerde verbinding en implementatie in het LLM-hulpprogramma op de pagina promptstroom bewerken.

  9. Selecteer Uitvoeren om de stroom uit te voeren.

    Schermopname van de locatie waarop de bewerkingspromptstroompagina moet worden geselecteerd.

  10. De uitvoeringsstatus van de stroom wordt weergegeven als Actief.

    Schermopname van de stroom in de actieve status op de pagina promptstroom bewerken.

  11. Zodra de stroomuitvoering is voltooid, selecteert u Uitvoer weergeven om de stroomresultaten weer te geven.

    Schermopname van waar u kunt selecteren om stroomresultaten weer te geven op de pagina promptstroom bewerken.

  12. U kunt de uitvoeringsstatus en uitvoer van de stroom bekijken in de sectie Uitvoer .

    Schermopname van de uitvoerdetails.

De stroom ontwerpen

Elke stroom wordt vertegenwoordigd door een map die een 'flow.dag.yaml'-bestand, broncodebestanden en systeemmappen bevat. U kunt nieuwe bestanden toevoegen, bestaande bestanden bewerken en bestanden verwijderen. U kunt de bestanden ook exporteren naar lokaal of bestanden importeren uit lokaal.

Naast inline bewerken van het knooppunt in platte weergave, kunt u ook de wisselknop Raw-bestandsmodus inschakelen en de bestandsnaam selecteren om het bestand te bewerken op het tabblad Bestand openen.

Stroominvoer en -uitvoer

Stroominvoer zijn de gegevens die als geheel in de stroom worden doorgegeven. Definieer het invoerschema door de naam en het type op te geven. Stel de invoerwaarde van elke invoer in om de stroom te testen. U kunt later in de stroomknooppunten verwijzen naar de stroominvoer met behulp van ${input.[input name]} de syntaxis.

Stroomuitvoer is de gegevens die door de stroom als geheel worden geproduceerd, waarin de resultaten van de stroomuitvoering worden samengevat. U kunt de uitvoertabel bekijken en exporteren nadat de stroomuitvoering of batchuitvoering is voltooid. Definieer de uitvoerwaarde van de stroom door te verwijzen naar de uitvoer van één stroom met behulp van syntaxis ${[node name].output} of ${[node name].output.[field name]}.

Door te verwijzen naar de uitvoer van het knooppunt, kunt u knooppunten aan elkaar koppelen. U kunt bijvoorbeeld verwijzen naar de uitvoer van het LLM-knooppunt in de Python-knooppuntinvoer, zodat het Python-knooppunt de uitvoer van het LLM-knooppunt kan gebruiken. In de grafiekweergave ziet u dat de twee knooppunten aan elkaar zijn gekoppeld.

Voorwaardelijk beheer inschakelen voor de stroom

Prompt Flow biedt niet alleen een gestroomlijnde manier om de stroom uit te voeren, maar biedt ook een krachtige functie voor ontwikkelaars: voorwaardelijk beheer, waarmee gebruikers voorwaarden kunnen instellen voor de uitvoering van een knooppunt in een stroom.

In de kern biedt voorwaardelijk beheer de mogelijkheid om elk knooppunt in een stroom te koppelen aan een activeringsconfiguratie. Deze configuratie is in feite een 'wanneer'-instructie die bepaalt wanneer een knooppunt moet worden uitgevoerd. De kracht van deze functie wordt gerealiseerd wanneer u complexe stromen hebt waarbij de uitvoering van bepaalde taken afhankelijk is van het resultaat van eerdere taken. Met behulp van het voorwaardelijke besturingselement kunt u uw specifieke knooppunten zo configureren dat deze alleen worden uitgevoerd wanneer aan de opgegeven voorwaarden wordt voldaan.

U kunt met name de activeringsconfiguratie voor een knooppunt instellen door de knop Configuratie activeren in de knooppuntkaart te selecteren. U kunt de instructie 'when' toevoegen en de voorwaarde instellen. U kunt de voorwaarden instellen door te verwijzen naar de stroominvoer of knooppuntuitvoer. U kunt de voorwaarde ${input.[input name]} bijvoorbeeld instellen als specifieke waarde of ${[node name].output} als specifieke waarde.

Als niet aan de voorwaarde wordt voldaan, wordt het knooppunt overgeslagen. De knooppuntstatus wordt weergegeven als 'Overgeslagen'.

De stroom testen

U kunt de stroom op twee manieren testen:

  • Voer één knooppunt uit.
    • Als u één knooppunt wilt uitvoeren, selecteert u het pictogram Uitvoeren op het knooppunt in platte weergave. Zodra de uitvoering is voltooid, kunt u snel het resultaat controleren in de uitvoersectie van het knooppunt.
  • Voer de hele stroom uit.
    • Als u de hele stroom wilt uitvoeren, selecteert u de knop Uitvoeren rechtsboven.

Testresultaat en tracering weergeven (preview)

Voor de hele stroomuitvoering ziet u, nadat u de stroom hebt uitgevoerd, de uitvoeringsstatus in de banner voor uitvoering. Vervolgens kunt u Trace weergeven selecteren om de tracering te bekijken voor het controleren van het resultaat en het observeren van de stroomuitvoering, waar u de invoer en uitvoer van de hele stroom en elk knooppunt kunt zien, samen met meer gedetailleerde informatie voor foutopsporing. Deze is beschikbaar tijdens de uitvoering en nadat de uitvoering is voltooid.

Inzicht in de traceringsweergave

Het traceringstype van een promptstroom wordt aangeduid als Flow. In de traceringsweergave kan de duidelijke volgorde van de hulpprogramma's die worden gebruikt voor stroomindeling worden waargenomen.

Elk niveau 2 omvat onder de hoofdmap van de stroom een knooppunt in de stroom, uitgevoerd in de vorm van een functie-aanroep, waardoor het soort span wordt geïdentificeerd als Functie. U kunt de duur zien van elke uitvoering van knooppunten in de spanstructuur.

In de spanstructuur zijn LLM-aanroepen eenvoudig te herkennen als de LLM-span . Deze bevatten informatie over de duur van de LLM-aanroep en de bijbehorende tokenkosten.

Door een spanwijdte te selecteren, ziet u de gedetailleerde informatie aan de rechterkant. Dit omvat invoer en uitvoer, Raw Json en Exception, die allemaal nuttig zijn voor observatie en foutopsporing.

 Schermopname van traceringsdetails.

Notitie

In de promptstroom-SDK hebben we serval spantypen gedefinieerd, waaronder LLM, Functie, Insluiten, Ophalen en Flow. En het systeem maakt automatisch informatie over de uitvoering in aangewezen kenmerken en gebeurtenissen.

Zie Trace span span voor meer informatie over spantypen.

Nadat de stroomuitvoering is voltooid, kunt u voor het controleren van de resultaten de knop Testresultaten weergeven selecteren om alle historische uitvoeringsrecords in een lijst te controleren. De uitvoeringsrecords die in de afgelopen 7 dagen zijn gemaakt, worden standaard weergegeven. U kunt het filter selecteren om de voorwaarde te wijzigen.

Schermopname van het resultaat van de stroomtest.

U kunt ook de naam van de uitvoeringsrecord selecteren om de gedetailleerde informatie weer te geven in de traceringsweergave.

Een chatstroom ontwikkelen

De chatstroom is ontworpen voor de ontwikkeling van gesprekstoepassingen, voortbouwend op de mogelijkheden van de standaardstroom en biedt verbeterde ondersteuning voor chatinvoer/-uitvoer en beheer van chatgeschiedenis. Met de chatstroom kunt u eenvoudig een chatbot maken die chatinvoer en -uitvoer verwerkt.

Op de ontwerppagina van de chatstroom wordt de chatstroom gelabeld met een label 'chat' om deze te onderscheiden van de standaardstroom en evaluatiestroom. Als u de chatstroom wilt testen, selecteert u de knop Chat om een chatvak voor een gesprek te activeren.

Chatinvoer/uitvoer en chatgeschiedenis

De belangrijkste elementen die een chatstroom onderscheiden van een standaardstroom zijn Chatinvoer, Chatgeschiedenis en Chat-uitvoer.

  • Chatinvoer: Chatinvoer verwijst naar de berichten of query's die gebruikers naar de chatbot hebben verzonden. Het effectief verwerken van chatinvoer is van cruciaal belang voor een geslaagd gesprek, omdat het gaat om het begrijpen van gebruikersintenties, het extraheren van relevante informatie en het activeren van de juiste antwoorden.
  • Chatgeschiedenis: Chatgeschiedenis is de record van alle interacties tussen de gebruiker en de chatbot, inclusief gebruikersinvoer en door AI gegenereerde uitvoer. Het onderhouden van de chatgeschiedenis is essentieel voor het bijhouden van de gesprekscontext en ervoor zorgen dat de AI contextuele relevante antwoorden kan genereren.
  • Chatuitvoer: Chat-uitvoer verwijst naar de door AI gegenereerde berichten die naar de gebruiker worden verzonden als reactie op hun invoer. Het genereren van contextueel geschikte en aantrekkelijke chatuitvoer is essentieel voor een positieve gebruikerservaring.

Een chatstroom kan meerdere invoer, chatgeschiedenis en chatinvoer hebben in de chatstroom.

  • In de sectie invoer van de chatstroom kan een stroominvoer worden gemarkeerd als chatinvoer. Vervolgens kunt u de invoerwaarde van de chat invullen door in het chatvak te typen.

  • De promptstroom kan de gebruiker helpen de chatgeschiedenis te beheren. De chat_history sectie Invoer is gereserveerd voor het weergeven van de chatgeschiedenis. Alle interacties in het chatvak, inclusief invoer van gebruikerschats, gegenereerde chatuitvoer en andere stroominvoer en uitvoer, worden automatisch opgeslagen in de chatgeschiedenis. De gebruiker kan de waarde van chat_history in de sectie Invoer niet handmatig instellen. Deze is gestructureerd als een lijst met invoer en uitvoer:

    [
    {
        "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"
        }
    }
    ]
    

Notitie

De mogelijkheid om chatgeschiedenis automatisch op te slaan of te beheren, is een functie op de ontwerppagina bij het uitvoeren van tests in het chatvak. Voor batchuitvoeringen is het nodig dat gebruikers de chatgeschiedenis in de batch-uitvoeringsgegevensset opnemen. Als er geen chatgeschiedenis beschikbaar is voor testen, stelt u de chat_history in op een lege lijst [] in de batch-run-gegevensset.

Ontwerpprompt met chatgeschiedenis

Het opnemen van chatgeschiedenis in uw prompts is essentieel voor het maken van contextbewuste en aantrekkelijke chatbotreacties. In uw prompts kunt u verwijzen naar chat_history eerdere interacties. Hiermee kunt u verwijzen naar eerdere invoer en uitvoer om contextafhankelijk relevante antwoorden te maken.

Gebruik for-loop grammatica van Jinja-taal om een lijst met invoer en uitvoer van chat_history.

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

Testen met het chatvak

Het chatvak biedt een interactieve manier om uw chatstroom te testen door een gesprek met uw chatbot te simuleren. Volg deze stappen om uw chatstroom te testen met behulp van het chatvak:

  1. Selecteer de knop Chat om het chatvak te openen.
  2. Typ uw testinvoer in het chatvak en druk op Enter om ze naar de chatbot te verzenden.
  3. Controleer de reacties van de chatbot om ervoor te zorgen dat ze contextueel geschikt en nauwkeurig zijn.
  4. Bekijk de tracering ter plaatse voor het snel observeren en opsporen van fouten.

Volgende stappen