Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Staten i en agent følger de samme paradigmene som moderne nettprogrammer. Agents SDK gir noen abstraksjoner for å gjøre statsstyring enklere.
Som med nettapper, er en agent iboende statsløs. En annen forekomst av agenten kan håndtere en gitt runde i samtalen. For noen agenter er denne enkelheten foretrukket – agenten kan enten operere uten tilleggsinformasjon, eller informasjonen som kreves, er garantert å være i den innkommende meldingen. For andre er status (for eksempel der samtalen ble utelatt eller data som tidligere ble mottatt om brukeren) nødvendig for at agenten skal ha en nyttig samtale.
Hvorfor trenger jeg stat?
Ved å opprettholde tilstand kan agenten ha mer meningsfulle samtaler ved å huske visse ting om en bruker eller samtale. Hvis du for eksempel har snakket med en bruker tidligere, kan du lagre tidligere informasjon om dem, slik at du ikke trenger å be om det på nytt. Tilstanden beholder også data lenger enn den nåværende runden, slik at agenten kan bevare informasjon gjennom en samtale med flere runder.
Som det gjelder agenter, er det noen lag å bruke tilstand: lagringslag, tilstandsadministrasjon og AgentApplication.
Lagringslag
Fra backend-delen, der tilstandsinformasjonen faktisk er lagret, starter lagringslaget. Du kan tenke på dette som din fysiske lagringsplass, for eksempel i minnet, Azure eller en tredjepartsserver.
Agents SDK inkluderer noen implementeringer for lagringslaget:
Minnelagring implementerer lagringsplass i minnet for testformål. Datalagring i minnet er bare beregnet for lokal testing siden denne lagringsplassen er flyktig og midlertidig. Dataene fjernes hver gang agenten starter på nytt.
Azure Blob Storage kobles til en Azure Blob Storage-objektdatabase.
Azure Cosmos DB partisjonert lagring kobles til en partisjonert Cosmos DB NoSQL-database.
Hvis du vil ha instruksjoner om hvordan du kobler til andre lagringsalternativer, kan du se Oversikt over SDK-lagringsplass for agenter
Tilstandsadministrasjon
Tilstandsadministrasjon automatiserer lesing og skriving av agentens tilstand til det underliggende lagringslaget. Tilstand lagres som tilstandsegenskaper, som effektivt er nøkkelverdipar som agenten din kan lese og skrive gjennom tilstandsbehandlingsobjektet uten å bekymre seg for den spesifikke underliggende implementeringen. Disse tilstandsegenskapene definerer hvordan denne informasjonen lagres. Når du for eksempel henter en egenskap som du definerte som en bestemt klasse eller et bestemt objekt, vet du hvordan disse dataene skal struktureres.
Disse tilstandsegenskapene er samlet i «bøtter», som brukes til å organisere disse egenskapene. SDK inneholder tre av disse «samlingene»:
- Brukertilstand
- Diskusjonstilstand
Alle disse samlingene er underklasser for agenttilstandsklassen, som kan avledes for å definere andre typer samlinger med forskjellige omfang.
Disse forhåndsdefinerte samlingene er begrenset til en bestemt synlighet, avhengig av samlingen:
- Brukertilstanden er tilgjengelig i enhver omgang der agenten kommuniserer med denne brukeren på den kanalen, uavhengig av selve samtalen.
- Samtaletilstand er tilgjengelig i en bestemt samtale, uavhengig av bruker, for eksempel i gruppesamtaler
Brukertilstand og samtaletilstand er avgrenset innenfor kanalen. Den samme personen som bruker forskjellige kanaler for å få tilgang til agenten din, vises som forskjellige brukere, én for hver kanal og hver med en distinkt brukertilstand.
Nøklene som brukes for hver av disse forhåndsdefinerte samlingene, er spesifikke for brukeren og samtalen eller agenten. Når du angir verdien for tilstandsegenskapen, defineres nøkkelen internt, med informasjon i svingkonteksten for å sikre at hver bruker eller samtale plasseres i riktig samling og egenskap. Spesielt er nøklene definert som følger:
- Brukertilstanden oppretter en nøkkel ved hjelp av kanal-ID og fra ID. Eksempel:
{Activity.ChannelId}/users/{Activity.From.Id}#YourPropertyName - Samtaletilstanden oppretter en nøkkel ved hjelp av kanal-ID-en og samtale-ID-en. Eksempel:
{Activity.ChannelId}/conversations/{Activity.Conversation.Id}#YourPropertyName
Når du skal bruke hver type tilstand
Samtaletilstand er bra for å spore konteksten til samtalen, for eksempel:
- Om agenten stilte brukeren et spørsmål, og hvilket spørsmål det var
- Hva det gjeldende samtaleemnet er, eller hva det siste var
- Opptak av chatlogg
Brukertilstand er bra for sporing av informasjon om brukeren, for eksempel:
- Ikke-kritisk brukerinformasjon, for eksempel navn og innstillinger, en alarminnstilling eller en varslingsinnstillinger
- Informasjon om den siste samtalen de hadde med agenten
- En produktstøtteagent kan for eksempel spore hvilke produkter brukeren har spurt om.
AgentApplication
- Rutebehandlere du legger til, leveres med en
TurnStateforekomst. Få tilgang til samtale eller brukertilstand fra denne forekomsten. - Status lastes inn og lagres automatisk.