Administrer tilstand

Tilstand inden for en agent følger de samme paradigmer som moderne webapplikationer. Agents SDK giver nogle abstraktioner for at gøre tilstandsstyring lettere.

Ligesom med webapplikationer er en agent iboende tilstandsløs. En anden forekomst af din agent kan håndtere enhver omgang i samtalen. For nogle agenter foretrækkes denne enkelhed – agenten kan enten operere uden yderligere oplysninger, eller de krævede oplysninger er garanteret at være i den indgående meddelelse. For andre er tilstand (såsom hvor samtalen blev afbrudt, eller data tidligere modtaget om brugeren) nødvendig for, at agenten kan have en meningsfuld samtale.

Hvorfor skal jeg bruge tilstand?

Opretholdelse af tilstand gør det muligt for din agent at have mere meningsfulde samtaler ved at huske bestemte ting om en bruger eller en samtale. For eksempel, hvis du tidligere har talt med en bruger, kan du gemme tidligere oplysninger om vedkommende, så du ikke behøver at spørge om dem igen. Tilstand bevarer også data ud over den nuværende interaktion, så din agent kan fastholde information gennem en samtale med flere omgange.

Når det gælder agenter, er der nogle lag i brugen af tilstand: lagerlaget, tilstandsstyring og AgentApplication.

Lagringslag

Lagringslaget findes i backend, hvor tilstandsoplysningerne faktisk gemmes. Dette kan betragtes som din fysiske lagring, såsom hukommelsesbaseret, Azure eller en tredjepartsserver.

Agents SDK inkluderer nogle implementeringer for lagringslaget:

Hukommelseslagring implementerer lagring i hukommelsen til testformål. Datalagring i hukommelsen er udelukkende beregnet til lokal testning, da denne lagring er flygtig og midlertidig. Dataene slettes hver gang agenten genstarter.

Azure Blob Storage forbinder til en Azure Blob Storage-objektdatabase.

Partitioneret lagring i Azure Cosmos DB forbinder til en partitioneret Cosmos DB NoSQL-database.

For instruktioner om, hvordan du forbinder til andre lagringsmuligheder, se Oversigt over SDK-lager for agenter

Tilstandsstyring

Tilstandsstyring automatiserer læsning og skrivning af din agents tilstand til det underliggende lagerlag. Tilstand gemmes som tilstandsegenskaber, der i praksis er nøgle-værdi-par, som din agent kan læse og skrive via tilstandsstyringsobjektet uden at skulle bekymre sig om den underliggende implementering. Disse tilstandsegenskaber definerer, hvordan informationen gemmes. For eksempel, når du henter en egenskab, som du har defineret som en specifik klasse eller objekt, ved du, hvordan dataene vil være struktureret.

Disse tilstandsegenskaber samles i scoped "buckets", som blot er samlinger til at hjælpe med at organisere disse egenskaber. SDK'et indeholder tre af disse "buckets":

  • Brugertilstand
  • Samtaletilstand

Alle disse buckets er underklasser af agenttilstandsklassen, som kan nedarves for at definere andre typer buckets med forskellige scopes.

Disse foruddefinerede buckets er afgrænset til en vis synlighed, afhængigt af bucket:

  • Brugertilstand er tilgængelig i enhver interaktion, hvor agenten kommunikerer med den bruger på den kanal, uanset samtalen
  • Samtaletilstand er tilgængelig i enhver omgang i en specifik samtale, uanset bruger, for eksempel i gruppesamtaler

Brugertilstand og samtaletilstand er kanalafgrænset. Den samme person, der bruger forskellige kanaler til at tilgå din agent, registreres som forskellige brugere – én for hver kanal – og hver med en adskilt brugertilstand.

De nøgler, der bruges til hver af disse foruddefinerede buckets, er specifikke for brugeren og samtalen, eller agenth. Når du indstiller værdien af din tilstandsegenskab, oprettes nøglen automatisk ud fra information i omgang-konteksten for at sikre, at hver bruger eller samtale placeres i den korrekte bucket og egenskab. Specifikt defineres nøglerne som følger:

  • Brugertilstanden opretter en nøgle ved hjælp af kanal-ID og fra-ID. F.eks. {Activity.ChannelId}/users/{Activity.From.Id}#YourPropertyName
  • Samtaletilstanden genererer en nøgle ved hjælp af kanal-ID og samtale-ID. F.eks. {Activity.ChannelId}/conversations/{Activity.Conversation.Id}#YourPropertyName

Hvornår skal de forskellige tilstandstyper anvendes

Samtaletilstand er velegnet til at spore samtalens kontekst, såsom:

  • Om agenten stillede brugeren et spørgsmål, og hvilket spørgsmål det var
  • Hvad det aktuelle emne for samtalen er, eller hvad det sidste var
  • Registrering af chathistorik

Brugertilstand er velegnet til at registrere oplysninger om brugeren, såsom:

  • Ikke-kritiske brugeroplysninger, såsom navn og præferencer, en alarmindstilling eller en advarselspræference
  • Oplysninger om den sidste samtale, de havde med agenten
    • For eksempel kan en produktsupportagent spore, hvilke produkter brugeren har spurgt om.

AgentApplication

  • De rutehandlere, du tilføjer, vil få stillet en TurnState-forekomst til rådighed. Få adgang til samtaletilstand eller brugertilstand fra denne forekomst.
  • Tilstanden indlæses og gemmes automatisk.