
Grounding i praksis
Grounding og RAG
I sidste artikel fortalte jeg om de generelle muligheder med Copilot, vel at mærke den fulde version som kræver enten en personlig licens eller hvor man bruger “pay-as-you-go” for brugere uden personlig licens. I denne artikel vil jeg se nærmere på en af kernefunktionerne i Copilot, nemlig det som Microsoft kalder “grounding”. “Grounding” er ikke et Microsoft begreb, men en generel måde at beskrive hvordan man indenfor AI sikrer at LLM’s (de store sprogmodeller) er forankret i virkelighedens data og kender til den kontekst de bliver brugt. En specifik måde at implementere “Grounding” på er ved at bruge RAG (Retrieval-Augmented Generation) – ja der er mange forkortelser at lære :-). RAG er en metode hvor man som led i en prompt fra en bruger, tilføjer data fra konkrete datakilder til forespørgslen og sender videre til en LLM. en LLM generere så et svar på baggrund af forespørgslen og det specifikke data den har fået med. På den måde kan man få mere præcise svar, som udelukkende bruger interne data eller udvalgte datakilder, men fortsat udnytter den generelle forståelse af sproget som en LLM har.
I Copilot Studio kan man både arbejde med generel “grounding” og man kan også gøre brug af RAG som metode til at gøre en agent mere relevant for medarbejderne. For at gøre det konkret vil vi tage udgangspunkt et specifikt eksempel jeg har lavet. Eksemplet er en HR Assistent som kan hjælpe vores medarbejdere med at svare på spørgsmål om deres ansættelse, i stedet for at kontakte HR afdelingen. Den generelle “grounding” udføres ved at give agenten en instruktion, som gøres ed at udfylde “Instructions” under fanen “Overview” i Copilot Studie (engelsk version). I vores eksempel har vi givet følgende instruktion:
Svar kun på spørgsmål angående medarbejdernes ansættelse i virksomheden.
Hjælp med at afklare både specifikke regler som er beskrevet af virksomheden og generelle regler som de er beskrevet i dansk lovgivning /hvad siger loven.
Hvis en regel i virksomheden strider mod en dansk lov /hvad siger loven, så gør medarbejderen tydelig opmærksom på dette i svaret. Svar høfligt og præcist med tydelige kilde henvisninger.
Ovenstående er et eksempel på hvordan man kan given en agent kontekst, samt gøre opmærksom på at bruge særlige emner eller værktøjer i nogle situationer. I ovenstående henviser jeg til et specifikt emne som hedder “hvad siger loven”, som vi fortæller agenten den skal bruge ift. spørgsmål om dansk lov. Når man skriver en instruktion i Copilot Studio, så kan man tilføje alle de emner og værktøjer man allerede har til rådighed som er konfigureret. Desuden kan henvises til andre agenter og variabler også, for at gøre instruktionen mere dynamisk.
Topics
Emner eller “Topics” er én måde at bruge RAG i Copilot Studio. Med emner kan man styre en samtale i en særlig retning. I vores eksempel med den virtuelle HR assistent, så har vi lavet et emne som hedder “Hvad siger loven” hvor agenten lytter efter om en prompt fra brugeren er nysgerrig på hvad dansk lovgivning siger om ansættelsesforholdet. Et emne har altid en trigger, som i dette tilfælde er input fra brugeren som bliver vurderet af agenten, som finder ud af om intentionen bagved ved forespørgslen er at finde ud af mere om lovgivningen. Hvis triggeren udløses, så bevæger chatten med brugeren sig ind i det pågældende emne. Dette sker uanset om man vælger i sit “Topic” at gøre brugeren opmærksom på det eller ej. I dette eksempel bruger vi RAG indenfor vores “Topic” på den måde at vi for dette særlige emne skifter datakilder til kun at bruge information fra www.danskelove.dk og www.retsinformation.dk, som begge er markeret som autoritative kilder i vores konfiguration af datakilder. I vores eksempel har vi valgt at stille et ja/nej spørgsmål til brugeren som lyder “Vil du gerne vide hvordan loven er på området” for at gøre opmærksom på at brugeren er ved at snævre chatten med agenten ind til netop dette emne. Kommende forespørgsler vil så udelukkende tage udgangspunkt i information fra disse to offentlige websites og se bort fra de interne kilder fra personalehåndbogen som bruges ved generelle forespørgsler udenfor emnet angående lovgivning. For at bruge datakilder på denne måde skal de konfigureres under fanen “Knowledge” til kun at blive brugt når de bliver refereret og ikke som generelle datakilder.
Det kan godt betale sig at bruge ekstra tid på “grounding” og at tænke RAG ind, da det forbedrer agentens præcision markant og man undgår for mange generelle svar fra det store Internet, især når scenariet er som med vores eksempel at hjælpe med at finde interne retningslinjer, men som samtidig overholder lovgivningen. Det er dog ikke altid nemt at lave et godt flow indenfor et emne, med de helt rigtige “triggers” og desuden er det vigtigt at tænke ind hvordan et emne afsluttes. I vores tilfælde spørger vi brugeren om de vil fortsætte med at undersøge lovgivningen, og så længe de svarer positivt forlader agenten ikke emnet, men så snart de svarer negativt afsluttes emnet og datakilden er igen udelukkende intern information fra personalehåndbogen i SharePoint. Desuden er eksemplet her relativ simpelt for at vise en måde at bruge RAG på, men det er klart at hvis man har mange emner, så bliver det mere komplekst hvordan brugeren skal sendes rundt mellem dem, især hvis de kalder hinanden og refereres på kryds og tværs.
Flere agenter
Scenariet bliver endnu mere kompleks hvis man både har en agent til HR assistance og en til juridisk assistance, som kalder hinanden, for der vil så måske være overlap i formålet med agenterne. I teorien er en situation hvor man har mange agenter bedst hvis de ikke overlapper hinanden. Dvs. arbejder med helt separate emner og separate datakilder, men i praksis, ligesom med vores sprog, er det umuligt, da verden ikke er så sort hvid. Derfor er det også vigtigt altid at have en “catch all” klausul i form af et fallback emne, som kan afslutte og starte forfra på en god måde overfor brugeren når din agent bliver forvirret eller ikke kan svare på forespørgslen. Men det kan vi se videre på en anden god dag.
Hvis du har særlige emner du godt kunne tænke dig at få belyst indenfor Copilot, så skriv en kommentar, så vil jeg se nærmere på det.



