Agentforce-gids voor betrouwbaar agentisch gedrag
Een strategie met 5 niveaus van determinisme
Een strategie met 5 niveaus van determinisme
Olfa Kharrat, Director of Product Management - Agentforce
Reinier van Leuken, Senior Director of Product Management - Agentforce
Agentforce-bouwstenen en agentisch redeneren
De niveaus van agentische controle
Agentische controle op niveau 1: redeneren met instructievrije onderwerpen en taakaanwijzingsacties
Agentische controle op niveau 2: instructies
Agentische controle op niveau 3: grounding
Agentische controle op niveau 4: variabelen
Agentische controle op niveau 5: deterministische acties
Samenvatting van methoden om gestuurd determinisme te bereiken
Vertrouwen is de toonaangevende waarde bij Salesforce. Dat is al zo sinds de oprichting in 1999, toen we met cloud computing en SaaS nieuwe technologische modellen introduceerden. Bedrijven vertrouwen erop dat Salesforce hun waardevolle bedrijfsdata veilig opslaat in de cloud. Ze weten immers dat deze data wordt beschermd door de juiste toegangscontroles. Dat is nog altijd van cruciaal belang, maar in het tijdperk van agentische AI is de definitie van vertrouwen nog breder. Nu bedrijven steeds meer vertrouwen op autonome agents om kritieke bedrijfsfuncties uit te voeren, moeten deze agents vertrouwde zakenpartners zijn die nauwkeurig, relevant en vooral betrouwbaar werk verrichten.
Maar hoe bouw je een betrouwbare agent? Betrouwbaarheid betekent meestal dat een bepaalde input steeds tot hetzelfde resultaat leidt. Alleen werken agents soms anders, omdat ze worden aangestuurd door grote taalmodellen (LLM's) die van nature niet-deterministisch zijn. Dit geeft agents de flexibiliteit om creatieve oplossingen te ontwikkelen die zijn afgestemd op specifieke omstandigheden, zonder dat je elke omstandigheid of situatie expliciet hoeft te programmeren. Agents moeten echter worden beheerd om te voldoen aan zakelijke vereisten en operationele richtlijnen. Bij het uitvoeren van bedrijfsprocessen moeten ze aantoonbaar betrouwbaar zijn en bedrijfsresultaten produceren die voldoen aan deterministische beperkingen. Determinisme legt een rigiditeit en discipline op die botst met de autonomie en flexibiliteit die agents kunnen bieden. Om succesvolle agents te kunnen creëren, moet je dan ook de juiste balans vinden tussen creatieve flexibiliteit en zakelijke controle.
In dit document vind je belangrijke overwegingen voor het ontwikkelen van betrouwbare agents. Het omschrijft vijf niveaus van agentische controle en biedt best practices voor het verkrijgen en behouden van controle over agentisch gedrag voor elk van deze niveaus. Je krijgt ook uitleg over de manieren waarop de Agentforce-redeneringsengine werkt. Naarmate Agentforce verder wordt ontwikkeld, wordt dit document bijgewerkt met de nieuwste best practices.
Dit document gaat uit van een basiskennis van het ontwerpen en bouwen van Agentforce-agents. Voor een introductie tot Agentforce raden we het volgende aan:
Om agentisch gedrag beter te begrijpen, vergelijken we agents eerst met hun rigide tegenhangers: chatbots.
Chatbots: rigide regelvolgers
Chatbots volgen vooraf bepaalde beslisbomen die structureren aan welke dialogen ze kunnen deelnemen. Het doorlopen van deze beslisbomen is afhankelijk van de antwoorden die de gebruiker geeft. Dit antwoord kan een selectie zijn uit een vooraf bepaalde reeks opties of een vrij tekstantwoord. Bij een vrij tekstantwoord wordt een voorspellend model gebruikt om de intentie te classificeren. Deze bomen omvatten alle mogelijke gesprekstrajecten en dicteren de antwoorden van de chatbot bij elke stap. Het gedrag van de chatbot wordt volledig bepaald door vooraf ingestelde regels. Als de input van een gebruiker niet overeenkomt met een herkend pad of als het voorspellende model niet is getraind om een bepaalde intentie te herkennen, kan de chatbot niet correct reageren.
Agents: flexibel en intuïtief
Agents daarentegen maken gebruik van de kracht van LLM's en hun geavanceerde mogelijkheden op het gebied van natuurlijke-taalverwerking (NLP). LLM's stellen agents in staat om de intentie achter de input van een gebruiker te begrijpen, zelfs als deze op een onverwachte manier wordt geformuleerd. Op basis van zijn begrip van de intentie kan de agent de meest geschikte actie uit een reeks mogelijkheden selecteren. Een agent kan zelfs geheel nieuwe antwoorden formuleren. Deze flexibiliteit en dit aanpassingsvermogen onderscheiden agents van chatbots.
Een culinaire analogie
Je kunt het onderscheid tussen chatbots en agents vergelijken met het verschil tussen een beginnende kok en een doorgewinterde chef-kok.
Kortom: het fundamentele verschil met chatbots is dat agents zich kunnen aanpassen en om kunnen gaan met onverwachte input.
Een onderscheidend kenmerk van de intelligentie van een agent is het vermogen om de meest geschikte acties op het juiste moment te vinden en te activeren. Door deze flexibiliteit is het niet nodig om elke mogelijke gebruikersinteractie tot in detail te programmeren.
Het bouwen van een agent in Agentforce bestaat uit onderwerpen, acties, en instructies en beschrijvingen in natuurlijke taal.
Onderwerpen zijn de taken die moeten worden uitgevoerd door de agent. Onderwerpen hebben kenmerken zoals een classificatiebeschrijving, bereik en instructies die elke taak en het uitvoeren ervan definiëren. Onderwerpen bevatten acties die de agent kan uitvoeren, samen met instructies die bepalen op welke manier deze acties worden uitgevoerd.
Acties zijn de vooraf gedefinieerde taken die de agent kan uitvoeren om zijn taak te voltooien. Er zijn vijf verschillende soorten acties:
De definitie van een agent bevat instructies in natuurlijke taal die de activa van de agent beschrijven en de richtlijnen definiëren waarbinnen de agent moet werken. Er worden instructies geschreven voor acties en onderwerpen.
Als agents bestaan uit de correcte bouwstenen, kunnen ze het beoogde doel bereiken en binnen de juiste grenzen werken.
De redeneringsengine van Agentforce beheert deze bouwstenen en zorgt zo voor het juiste agentische gedrag. Hij maakt gebruik van de instructies en beschrijvingen in natuurlijke taal die zijn gedefinieerd in de onderwerpen en de acties. De engine is gebouwd op ReAct, een nieuw redeneringsparadigma voor LLM's dat in 2022 werd geïntroduceerd door Yao et al. Dit paradigma bootst het taakbeheer door mensen na door te redeneren over een probleem, actie te ondernemen, de resultaten van de actie te observeren en de cyclus te herhalen totdat de taak is voltooid.
Salesforce-agents houden zich aan dit paradigma:
De redeneringsengine gebruikt LLM's voor elke redenerings- en observatiestap. Afhankelijk van het actietype kan het ook LLM's gebruiken in de stap 'Actie uitvoeren'.
Dit gedeelte beschrijft een gelaagde aanpak om het determinisme van agents te verbeteren. Elk niveau bouwt voort op het vorige, met toenemende complexiteit en mogelijkheden die je meer controle over het gedrag van de agent geven.
Het eerste niveau richt zich op het zelfstandig identificeren van relevante onderwerpen, waarna de juiste acties worden geselecteerd op basis van doelen in plaats van expliciete instructies. Het kernmechanisme omvat het gebruik van een contextueel begrip om te reageren op input van gebruikers. Hoewel technisch gezien elk type actie kan worden toegevoegd, gaan we er op dit niveau vanuit dat de acties taakaanwijzingsacties zijn. Instructievrije onderwerpen met taakaanwijzingsacties zorgen voor een snelle en efficiënte afhandeling van veelvoorkomende vragen.
Op dit niveau ligt de nadruk op het vaststellen van een basisniveau van responsiviteit en autonomie van agents door middel van een dynamisch begrip.
Dit niveau bouwt voort op de basis van de instructievrije actieselectie en voegt expliciete instructies toe om het gedrag van agents te bepalen. Het toevoegen van nauwkeurige instructies geeft je meer controle over de manier waarop agents reageren op verschillende situaties. Instructies voor agents kunnen worden uitgedrukt als regels, richtlijnen, vangrails en voorbeelden. Deze geven de agent specifieke instructies voor het omgaan met verschillende onderwerpen, het uitvoeren van acties en het verwerken van hun output. Op dit niveau krijgt de agent een duidelijke sturing om de consistentie te vergroten en de naleving van bedrijfsrichtlijnen en -processen te verbeteren.
Grounding betekent dat het begrip en de antwoorden van de agent worden gebaseerd op externe kennisbronnen. Dankzij grounding is de informatie die door de agent wordt verstrekt nauwkeuriger, actueler en relevanter. Dit niveau integreert de toegang tot databases, knowledge bases en andere informatiebronnen. Omdat de antwoorden van de agent zijn gebaseerd op geverifieerde data, zijn ze betrouwbaarder.
Op dit niveau kunnen agents met variabelen werken. Met variabelen kunnen agents interacties personaliseren, context onthouden tijdens verschillende interacties en hun gedrag dynamisch aanpassen op basis van specifieke datapunten tijdens de agentsessie. Een agent kan bijvoorbeeld gebruikersvoorkeuren, orderdata en andere relevante informatie vastleggen en die data vervolgens gebruiken voor een interactie op maat. Met variabelen zijn agents beter in staat om complexere, meer voorgeschreven en meer gepersonaliseerde interacties te verzorgen.
De laatste stap integreert de agent met de kernfuncties van Salesforce: Apex, API's en stromen. Deze integratie stelt de agent in staat om complexe acties uit te voeren binnen het Salesforce-ecosysteem, zoals het openen en aanpassen van data, het activeren van workflows en interactie met andere systemen.
Dit niveau maakt van de agent een krachtige tool die geavanceerde taken kan uitvoeren en direct kan bijdragen aan de bedrijfsresultaten.
Deze agent bestaat uitsluitend uit onderwerpen en acties met de bijbehorende beschrijvingen. Dit is de ondergrens van reactievermogen en autonomie. Aan de hand van deze voorbeeldagent kunnen we de verschillende stappen van de redeneringsengine introduceren en laten zien hoe hij deze beschrijvingen gebruikt om de juiste onderwerpen te selecteren en vervolgens acties uit te voeren. Door de onderwerpinstructies uit dit voorbeeld weg te laten, zien we dat agents op dit eerste niveau de grootste mate van vrijheid hebben in vergelijking met agents op hogere niveaus. Op niveau 1 kan de agent in volledige vrijheid de actie selecteren die hij geschikt acht, uitsluitend op basis van het lopende gesprek.
Activiteit | Stappen | Beschrijving |
---|---|---|
Agent-aanroep | 1 | Agent wordt aangeroepen. |
Onderwerp Classificatie | 2-3 | De engine analyseert het bericht van de klant en koppelt dit aan het meest passende onderwerp op basis van de onderwerptitel en classificatiebeschrijving. |
Contextmontage | 4-5 | Zodra het onderwerp is gekozen, verzamelt de engine het bereik, de instructies en de beschikbare acties voor het onderwerp, evenals de gespreksgeschiedenis. (Opmerking: Instructies worden behandeld in niveau 2, agentische controle.) |
Besluitvorming |
Met behulp van al deze informatie maakt de engine een van de volgende keuzes: • Een actie uitvoeren om informatie op te halen of bij te werken • De klant vragen om meer informatie • Direct reageren met een antwoord |
|
Acties uitvoeren | 6-8 | Als er een actie nodig is, voert de engine deze uit en verzamelt hij de resultaten. |
Actielus | De engine beoordeelt de nieuwe informatie en beslist dan of hij nog een actie moet uitvoeren, om meer informatie moet vragen of kan reageren. | |
Groundingcontrole | Voorafgaand aan het verzenden van het definitieve antwoord test de engine of het antwoord: • is gebaseerd op nauwkeurige informatie uit acties en instructies • de richtlijnen in de instructies van het onderwerp volgt • binnen de kaders van het bereik van het onderwerp blijft. |
|
Antwoord verzenden | Het gefundeerde antwoord wordt naar de klant verzonden. |
Belangrijke overwegingen met betrekking tot de redeneringsengine:
Het redeneringsproces omvat vier stappen:
Onderwerpen zijn ontworpen om de nauwkeurigheid te verbeteren waarmee agents de juiste actie of volgorde van acties classificeren. Elk onderwerp moet bestaan uit semantisch afzonderlijke acties die allemaal tot een beknopte onderwerpbeschrijving en dus tot een vergelijkbare agentfunctie kunnen behoren.
Het juiste onderwerp wordt geselecteerd door het redeneringsengine-LLM (stap 2-3 van het diagram). Dit selecteert het onderwerp waarvan de classificatiebeschrijving het meest overeenkomt met de laatste uiting, met behulp van een onderwerptaakaanwijzing. Deze taakaanwijzing bevat de classificatiebeschrijvingen van alle onderwerpen en de gespreksgeschiedenis. Naast uitingen en antwoorden van agents omvat de gespreksgeschiedenis ook de uitgevoerde acties en hun resultaten. Bovendien bevat de taakaanwijzing cruciale instructies die analyse binnen de context van de gespreksgeschiedenis mogelijk maken en vereisen dat het LLM zijn denkproces deelt.
Aanvullende overwegingen:
Het doel van onderwerpen is tweeledig:
Door de capaciteiten van agents zorgvuldig te organiseren in duidelijk gedefinieerde onderwerpen die bestaan uit gerelateerde acties, worden ze effectiever en voorspelbaarder en is het gemakkelijker om ze te updaten en uit te breiden. Er zijn twee benaderingen voor het ontwerpen van onderwerpen: top-down en bottom-up.
Beide benaderingen leiden tot goede resultaten als ze goed worden uitgevoerd.
Maak eerst een lijst van alle specifieke acties die de agent moet kunnen uitvoeren. In dit stadium moet je het niet te algemeen houden en kun je beter heel specifiek zijn. Probeer acties niet te snel te groeperen of te vereenvoudigen. Het doel is om een uitgebreid en gedetailleerd beeld te creëren van waar de agent toe in staat is.
Voor een klantenservicemedewerker kan de eerste lijst bijvoorbeeld het volgende bevatten:
Denk eraan dat een actie als 'klachten van klanten oplossen' in dit stadium te breed is. Acties moeten volgen uit een zo gedetailleerd mogelijk omschreven gedrag van agents. Er kunnen veel verschillende soorten klachten zijn en verschillende acties voorzien hier al in:
Markeer acties die van zichzelf vergelijkbaar zijn, omdat deze voor verwarring kunnen zorgen bij de redeneringsengine. De semantische verschillen in hun beschrijvingen zijn niet duidelijk genoeg. Daardoor weet de redeneringsengine niet welke actie moet worden geselecteerd in stap 5.
'Technische problemen oplossen' en 'Vragen beantwoorden op basis van kennis' hebben bijvoorbeeld vergelijkbare beschrijvingen, maar hun functionaliteit kan aanzienlijk verschillen. Het markeren van dergelijke semantische overlappingen helpt bij het identificeren van acties voor verschillende onderwerpen.
Zodra acties duidelijk zijn gedefinieerd en hun semantische overlappingen zijn geïdentificeerd, kunnen acties worden gegroepeerd in voorlopige onderwerpen. Een onderwerp is een logische functiecategorie, een groepering van acties die samen een samenhangende capaciteit of vaardigheid van de agent vertegenwoordigen.
Let op het volgende bij het maken van deze groepen:
Hier is een voorbeeld van een voorlopige groepering voor een klantenservicemedewerker:
Onderwerp 1:
Onderwerp 2:
Zodra je de voorlopige groepering hebt gemaakt, schrijf je classificatiebeschrijvingen voor elk onderwerp.
Na deze verfijning is dit het resultaat:
Dus samengevat: maak eerst een uitgebreide lijst van alle mogelijke acties en markeer vervolgens semantische overlapping tussen deze acties. Maak vervolgens een set onderwerpen die minimaal alle semantische overlappingen oplost (zodat de redeneringsengine niet in de war raakt bij de afhandeling van één onderwerp). Schrijf vervolgens de classificatiebeschrijving van elk onderwerp. Als de onderwerpen te breed zijn geformuleerd, verdeel ze dan in meer gedetailleerde onderwerpen. Door deze richtlijnen te implementeren, bouw je een agent die niet alleen goed presteert, maar ook gemakkelijk te onderhouden en uit te breiden is.
Deze structuur zorgt voor een betere redenering, een nauwkeurigere uitvoering en duidelijkere beslissingsgrenzen binnen het gedrag van de agent. Ook de samenwerking tussen ontwerpers, engineers en experts op het gebied van de betreffende onderwerpen is belangrijk. Zo maak je de agent transparanter en modulair.
Verdere overwegingen voor het effectief creëren van onderwerpen
Stel je voor dat een klantenservicemedewerker een vraag krijgt over de garantiebepalingen van een horloge. De garantiekwestie lijkt geen verband te houden met het omruilen of de support van het product. Orderbeheer lijkt het meest geschikte onderwerp om aan dit verzoek te voldoen. Daarom wordt dit onderwerp door de redeneringsengine gekozen als het meest waarschijnlijke dat aan het verzoek kan voldoen.
Na de onderwerpselectie selecteert de redeneringsengine de juiste acties voor het gekozen onderwerp. Nogmaals: het redeneringsengine-LLM is hiervoor verantwoordelijk, waarbij deze gebruikmaakt van de observatietaakaanwijzing. Het doel van de observatietaakaanwijzing is om de volgende stap in het redeneringsproces te verkrijgen. Deze stap kan een van de volgende zijn:
De input voor de observatietaakaanwijzing wordt gevormd door alle beschrijvingen van alle acties voor het onderwerp, evenals de gespreksgeschiedenis.
Acties zijn de vooraf gedefinieerde taken die de agent kan uitvoeren om aan een verzoek te voldoen. Acties zijn de meest verfijnde definities van werk. Er zijn vijf verschillende soorten agent-acties: (1) Apex-code uitvoeren, (2) een API aanroepen, (3) een stroom uitvoeren, (4) een LLM-antwoord krijgen op een taakaanwijzingssjabloon en (5) een voorspellend model aanroepen. De meeste van deze acties kunnen deterministisch zijn. Een uitzondering is het krijgen van een antwoord op een taakaanwijzingssjabloon (op voorwaarde dat het externe systeem, de stroom- of de Apex-actie geen probabilistische elementen bevat, zoals het aanroepen van taakaanwijzingen). We behandelen deze kwesties in het gedeelte over het vijfde niveau van agentische controle.
Laten we verdergaan met het eerder genoemde voorbeeld, waarin een klantenservicemedewerker een vraag krijgt over de garantiebepalingen van een horloge. Na het selecteren van het onderwerp Orderbeheer wordt de meest waarschijnlijke actie gekozen. Omdat dit over orderbeheer gaat, is de eerste logische stap het opzoeken van de bestelling (waar moet je anders garantiebepalingen voor ophalen?) door de actie 'zoeken naar bestellingen' te starten.
Een uiting van een gebruiker kan de uitvoering van meerdere acties activeren voordat een antwoord naar de gebruiker wordt gestuurd. Dit komt door de agentische lus, die de meest geschikte vervolgactie blijft selecteren en uitvoeren tot er aan een van de volgende voorwaarden is voldaan:
Acties zijn niet onderhevig aan een specifieke time-out. Zo wordt onderbreking voorkomen wanneer de uitvoeringsduur van acties variëren op basis van hun complexiteit. Sommige acties zijn nu eenmaal complexer om uit te voeren dan andere.
Na het starten van het opzoeken van een bestelling beoordeelt de redeneringsengine het tot nu toe gegenereerde antwoord. Vervolgens besluit deze dat hij meer werk moet doen voordat een antwoord naar de gebruiker kan worden gestuurd. Nu de bestelling aanwezig is in de gespreksgeschiedenis, gaat de engine de garantiebepalingen opzoeken.
Daarbij realiseert de agent zich echter dat de klant twee horloges heeft gekocht, zoals blijkt uit het resultaat van de actie 'zoeken naar bestellingen'. Daarom besluit de redeneringsengine in de agentische lus om de klant te vragen voor welk horloge hij de garantiebepalingen nodig heeft.
De betrouwbaarheid van agents kan worden verbeterd door een zorgvuldige verdeling van acties tussen onderwerpen, evenals door goed beschreven acties en onderwerpen. Deze methoden houden echter geen rekening met bedrijfsregels, beleid en vangrails binnen de redeneringsengine. Instructies vormen een belangrijke aanvullende laag van agentische controle. Instructies bevatten verdere richtlijnen voor de redeneringsengine als er meerdere acties tegelijk worden gebruikt. Dit zorgt voor een meer genuanceerde en beleidsgestuurde benadering van agentisch gedrag. Met instructies kunnen Agentbuilders ervoor zorgen dat agents niet alleen betrouwbaar functioneren, maar ook dat ze voldoen aan vaste bedrijfsregels en best practices.
De instructies die op onderwerpniveau zijn geschreven, worden onderdeel van de observatietaakaanwijzing. Onderwerpinstructies sturen de redeneringsengine aan bij het kiezen van de juiste acties. Ze kunnen helpen bij het selecteren van acties en worden gebruikt om actieafhankelijkheid te definiëren. In bepaalde omstandigheden kunnen ze ook sequentiële controle afdwingen. Hiervoor bestaan echter alternatieven en je moet dan zorgvuldig omgaan met instructies. Onderwerpinstructies worden één voor één toegevoegd en worden in aparte segmenten in de gebruikersinterface weergegeven. Ze worden echter altijd samen naar de observatietaakaanwijzing gestuurd. Het toevoegen van instructies in aparte segmenten vergroot de leesbaarheid van het onderwerp en het is gemakkelijker te onderhouden, maar heeft geen invloed op de redeneringsengine.
Soms zijn instructies globaal van toepassing op de agent en zijn ze niet gerelateerd aan een specifiek onderwerp. Functionaliteit voor het onderhouden van algemene instructies staat momenteel op de planning. Best practices voor het schrijven van onderwerpinstructies vind je in de Agentforce handleiding voor onderwerpen, instructies en acties. Laten we eens kijken naar enkele aanvullende richtlijnen.
Vermijd te gedetailleerde beschrijvingen van de manieren waarop agents gesprekken met gebruikers moeten voeren. Te gedetailleerde beschrijvingen tasten het vermogen van een agent aan om een relatie op te bouwen, unieke gebruikersbehoeften te begrijpen en in realtime effectief te reageren op dynamische omstandigheden. Bovendien kunnen lange instructies de agent trager laten reageren en de redeneringsengine in verwarring brengen. Het forceren van determinisme via instructies heeft niet de voorkeur.
Het is bijvoorbeeld niet nodig om een agent te vertellen dat deze niet naar concurrenten moet verwijzen bij antwoorden voor de klantenservice. Dit kan leiden tot ongewenst gedrag, omdat de agent dan ook kan weigeren vragen te beantwoorden over integratie met een aanbieder die ook een concurrent is. In plaats daarvan kan de instructie zoiets zijn als "houd bij het bespreken van concurrenten het belang van het bedrijf in gedachten". Dit voorkomt beperkende, voorwaardelijke instructies zoals "vermeld alleen concurrent xyz in het geval van…" en maakt in plaats daarvan gebruik van de redeneringsmogelijkheden van het LLM. Dit voorbeeld laat zien hoe instructies kunnen worden gegeven op een hoger, meer abstract niveau. Dit is vergelijkbaar met de manier waarop nieuwe menselijke klantenservicemedewerkers worden getraind.
Laten we eens kijken naar meer voorbeelden van wat je niet moet doen. Dit zijn enkele slechte instructies aan een serviceagent die kandidaatprofielen verwerkt op een wervingswebsite. Deze instructies proberen te anticiperen op elke mogelijke uiting van de klant en moeten daarom worden vermeden:
Instructie 1:
De agent ontvangt de volgende uiting: "Kan ik een foto toevoegen aan mijn profiel?". Vraag de klant dan direct: "Wat is je profieltype?"
Instructie 2:
Als de klant aangeeft een premiumprofiel te hebben, antwoord dan "Ik zal je contractgegevens controleren", zoek dan naar contractgegevens en controleer of is overeengekomen dat de klant de profielfoto kan aanpassen.
Als is overeengekomen dat de kandidaat dit mag doen, antwoord dan: "Ja, dat is mogelijk, ik zal het voor je aanpassen. Kun je me je nieuwe foto geven?" Zodra de foto is ontvangen, pas je het profiel van de kandidaat aan. Als het contract niet voorziet in het aanpassen van de profielfoto, zeg je: "Sorry, dit is niet mogelijk. Ik breng je in contact met een menselijke medewerker”
Instructie 3:
Zonder premiumprofiel: Als de klant aangeeft geen premiumprofiel te hebben, antwoord je: "Je kunt je foto niet aanpassen. Als je wilt, kan ik je in contact brengen met een menselijke medewerker."
Instructie 4:
Als het niet duidelijk is welk profiel de klant heeft, antwoord je: "Ik heb niet begrepen wat je profieltype is."
Gebruik in plaats van dit soort gedetailleerde instructies meer flexibele richtlijnen voor de agent. Overweeg de volgende best practices:
"Alleen kandidaten met een premiumprofiel waarvan het contract voorziet in het aanpassen van foto's kunnen hun foto aanpassen
".Op basis van deze best practices kan een betere set instructies er als volgt uitzien:
Instructie 1
: "Gebruik knowledge-base-acties om het beleid te controleren bij verzoeken om accountaanpassingen".
Instructie 2
: "Beantwoord geen vragen waarvoor geen toepasselijk beleid kon worden gevonden".
Het toepassen van de bovenstaande richtlijnen kan de resultaten van agents verbeteren. Als de klant de agent nu om een profielaanpassing vraagt, zal de agent begrijpen dat hij het vereiste beleid uit de knowledge base moet ophalen, de opgehaalde regels moet interpreteren, deze regels moet toepassen op de context en ten slotte op de klant moet reageren. In tegenstelling tot de te gedetailleerde beschrijvingen is deze gedragsaanpak veel algemener en breder toepasbaar. Als je niet elk mogelijk gesprek helemaal uitschrijft, kan de agent flexibel reageren met het gewenste gedrag op een breder scala aan gespreksonderwerpen.
Laten we verder gaan met het voorbeeld van agents op een wervingswebsite. De agent moet in staat zijn om sollicitatiegesprekken met de juiste recruiters te plannen. Hiertoe moet de agent eerst de beschikbaarheid van de recruiters controleren en vervolgens drie mogelijke tijdstippen voorstellen aan de kandidaat.
Om de volgorde van uitvoering te garanderen, mogen de instructies in dit geval niet in aparte segmenten staan:
Controleer de beschikbaarheid van recruiters.
Stel vervolgens passende tijdstippen voor aan de kandidaat.
Deze instructies werken niet omdat de redeneringsengine niet weet waar 'vervolgens' in instructie 2 naar verwijst. Dit komt doordat de instructies als groep naar de redeneringsengine worden gestuurd en niet in een bepaalde volgorde.
In plaats daarvan moeten sequentiedefiniërende instructies worden samengevoegd tot één omschrijving:
Controleer de beschikbaarheid van recruiters. Stel vervolgens passende tijdstippen voor aan de kandidaat.
Wanneer echter wordt verwacht dat er slechts één taakaanwijzingsactie is uitgevoerd, kan een instructie worden geïmplementeerd om de agent te instrueren om nooit de output van een actie te wijzigen. Dit zorgt voor voorspelbaarder en betrouwbaarder agentisch gedrag.
Het afdwingen van deze strikte gebondenheid aan goedgekeurde taakaanwijzingssjablonen is van cruciaal belang in bepaalde scenario's, vooral wanneer consistentie, naleving en vooraf gedefinieerde berichten belangrijk zijn. Dit zijn twee voorbeelden:
Deze instructie beperkt de vrijheid van de agent om de output van acties te wijzigen. Zorg ervoor dat de instructie verwijst naar de output van de taakaanwijzingssjabloon (bijvoorbeeld 'promptResponse'), zoals getoond in deze Plantracker.
De instructie in dit geval kan dus zijn:
“
Wijzig de output promptResponse niet, ongeacht het kanaal van de agent.
”
Beperkingen voor het afdwingen van strikte naleving:
Wanneer een interactie meerdere afzonderlijke agent-acties vereist, is het niet mogelijk om de strikte naleving van één template af te dwingen. In dit scenario moet de redeneringsengine deze acties samenvoegen tot één reactie en dus elke afzonderlijke actie-output aanpassen.
Op basis van algemene LLM-eigenschappen ligt het ideale aantal instructies tussen 5 en 10, afhankelijk van de complexiteit van de instructie en de interactie met de instructie. Deze instructie-eigenschappen beïnvloeden het aantal instructies dat de redeneringsengine kan volgen:
Als het erg belangrijk is om een instructie expliciet op te volgen, voeg dan termen toe die hun belang onderstrepen:
Het baseren van antwoorden op data ('grounding') verbetert de betrouwbaarheid van agents aanzienlijk. Gegronde antwoorden zijn gebaseerd op feitelijke informatie in plaats van op speculatie of verouderde kennis. Retrieval Augmented Generation (RAG) is een veelgebruikte techniek waarmee een agent toegang heeft tot een knowledge base en deze kan gebruiken om nauwkeurigere en contextueel relevante antwoorden te formuleren. Op basis van de vraag van een gebruiker gebruikt een agent RAG om relevante informatie uit toepasselijke databronnen op te halen en vervolgens de taakaanwijzing aan te vullen met deze informatie voordat deze naar het LLM wordt verzonden. Een agent die RAG gebruikt, heeft een hogere kwaliteit, is nauwkeuriger en biedt betere interacties. Dit verhoogt het vertrouwen en de tevredenheid van gebruikers. Best practices voor RAG worden uitgebreid beschreven in een vrij beschikbare whitepaper met de titel Agentforce and RAG: best practices for better agents .
Het maken van onderscheid tussen kennis en instructies is belangrijk voor het vinden van de juiste balans tussen sturing en flexibiliteit, omdat ze verschillende doelen hebben:
Retrieval Augmented Generation (RAG) fungeert als een slimme datalaag voor kennis. Hiermee hebben agents toegang tot informatie in verschillende formats en beschikken ze over relevante tekstfragmenten voor het beantwoorden van vragen. Met RAG kunnen agents nauwkeurigere LLM-antwoorden krijgen zonder de LLM-taakaanwijzing te overspoelen met externe inhoud of het contextvenster te overschrijden.
Wanneer RAG wordt uitgevoerd, doorloopt het drie stappen:
In Agentforce kan RAG worden gebruikt met of zonder een taakaanwijzingssjabloon:
De aanbevolen methode is optie 1. Deze vermindert het aantal taken dat de redeneringsengine moet uitvoeren en verbetert zo de antwoordkwaliteit. In het volgende gedeelte wordt een uitzondering op deze regel besproken, waarbij de inhoud tijdens het gesprek wordt vastgehouden en expliciet wordt doorgegeven aan een actie.
RAG-output opslaan in een variabele: Wanneer het aantal interactielimieten kan worden bereikt, sla je de RAG-output op in een variabele. Dit houdt de informatie toegankelijk voor het richting geven aan interacties van agents buiten de standaarddrempel. Een voorbeeld hiervan vind je in het volgende gedeelte.
Bepaalde bedrijfsprocessen vereisen een nog voorspelbaardere uitvoering, zoals het afdwingen van een specifieke actiereeks of voorwaarden voor het activeren van acties of onderwerpen.
Om dit deterministische gedrag te bereiken, kunnen variabelen worden gebruikt. Variabelen functioneren als een gestructureerde vorm van het kortetermijngeheugen van een agent, dat kan dienen als actie-input of -output. Bovendien kan de status van een variabele de activering van specifieke onderwerpen en acties bepalen.
Variabeletypen ondersteunen de volgende mogelijkheden:
Contextvariabelen | Aangepaste variabelen | |
---|---|---|
Kan door de gebruiker worden geïnstantieerd | X | ✓ |
Kan input van acties zijn | ✓ | ✓ |
Kan output van acties zijn | X | ✓ |
Kan worden bijgewerkt door acties | X | ✓ |
Kan worden gebruikt in filters van acties en onderwerpen | ✓ | ✓ |
Laten we variabelen eens nader bekijken aan de hand van een voorbeeld van een use case: een klantgerichte probleemoplossingsagent. In dit voorbeeld worden variabelen gebruikt voor alle drie de doeleinden: persistente dynamische grounding, actie-input/-output en filteren.
In dit voorbeeld helpt de agent een klant bij het oplossen van een technisch probleem met een apparaat. Probleemoplossing omvat meestal het doorlopen van een aantal stappen. De agent moet een klantenservice-ervaring bieden die het werk van een menselijke medewerker nabootst. Om dit te doen, moet de agent niet alle stappen voor probleemoplossing gelijktijdig aan de klant verstrekken. In plaats daarvan moet hij stap-voor-stap instructies bieden, samen met de mogelijkheid om tussen stappen te navigeren (zoals teruggaan naar eerder behandelde stappen) op basis van de reactie van de klant.
Een uitdaging hierbij is het vermogen van de agent om alle stappen voor probleemoplossing tijdens het gesprek te onthouden. Met het oog op het beperkte geheugen van de agent vanwege het beperkte aantal interacties dat deze kan opslaan, kunnen deze stappen voor de redeneringsengine uit de context worden verwijderd als het gesprek te lang wordt.
Je pakt dit aan door een variabele te gebruiken om de redeneringsengine dynamisch te grounden in stappen voor de probleemoplossing. Door de informatie op te halen en op te slaan in een variabele, blijft deze tijdens het gesprek beschikbaar en kan deze worden bijgewerkt. De redeneringsengine gebruikt de informatie die in deze variabele is opgeslagen voor dynamische grounding.
In dit voorbeeld bevat een onderwerp twee acties. Deze twee acties zijn nodig om een consistente datastroom in stand te houden. De eerste actie wordt gebruikt voor het vullen van de variabele met alle stappen voor de probleemoplossing. De tweede actie maakt gebruik van die variabele tijdens het oplossen van het probleem zelf.
De oorspronkelijke vraag van de klant is de input voor beide acties. De tweede actie heeft een andere input: de inhoud van de variabele 'Oplossingsstappen'. Deze variabele is ingesteld door de eerste actie. Bedenk dat de tweede actie de stappen voor probleemoplossing niet zelf ophaalt, maar ze ontvangt als input van de eerste actie via de variabele. Het volgende diagram toont de datastroom tussen deze twee acties.
De actie 'Gebruiken tijdens het oplossen van een probleem' verwijst altijd naar de oorspronkelijke stappen voor probleemoplossing die zijn opgehaald door de actie 'Oplossingsstappen toevoegen'. Deze datastroom zorgt ervoor dat probleemoplossingsstappen coherent worden bewaard en altijd aanwezig zijn, ongeacht de gespreksduur.
Om de acties uit te voeren die in dit voorbeeld zijn gedefinieerd, zijn specifieke instructies nodig, zoals 'Altijd eerst 'oplossingsstappen invullen' uitvoeren.' Gezien echter de niet-deterministische aard van LLM's die door agents worden gebruikt, kan dit in bepaalde gevallen leiden tot een andere volgorde. Om een deterministische volgorde van uitvoering te garanderen, passen we voorwaardelijke filters toe op deze variabelen om de juiste actievolgorde af te dwingen. De agent leest de waarde van de variabele 'Oplossingsstappen' en definieert twee filters op basis van de vraag of deze variabele een waarde heeft of niet.
Deze voorwaardelijke filters forceren nu de volgorde van uitvoering van acties deterministisch: 'Gebruiken tijdens het oplossen van een probleem' moet wachten tot 'Oplossingsstappen toevoegen' zijn werk heeft voltooid, waardoor wordt gegarandeerd dat de variabele 'Oplossingsstappen' altijd een waarde heeft.
Om ervoor te zorgen dat de actie correct wordt uitgevoerd, is een derde actie nodig om de variabele 'Oplossingsstappen' opnieuw in te stellen als het probleem volledig is opgelost. Als gevolg hiervan wordt de agent opnieuw ingesteld op de vereiste status om te helpen bij een mogelijk nieuw, ander probleem. Deze derde actie heet 'Oplossingsvariabele leegmaken'. Het volledige actieschema is hieronder afgebeeld.
Variabelen zijn cruciaal om onze agent in staat te stellen problemen van klanten op te lossen door het volgende mogelijk te maken:
In het tijdperk van generatieve AI blijft voorspellende AI van cruciaal belang. Het vormt immers de fundamentele intelligentie die generatieve mogelijkheden aanstuurt, verbetert en context geeft. Waar generatieve AI zich richt op het creëren van nieuwe content zoals tekst, afbeeldingen en video's, doen voorspellende modellen voorspellingen over de toekomst op basis van input uit realtime bedrijfsdata. Voorbeelden van bedrijfsresultaten zijn onder meer de waarschijnlijkheid van klantverloop, conversiewaarschijnlijkheden, kans op escalatie van cases, customer lifetime value en case-classificatie. Voorspellingen helpen met anticiperen op de behoeften van gebruikers, het personaliseren van output, het nemen van beslissingen en het in realtime optimaliseren van de relevantie van content - allemaal door trends en cijfers te analyseren. In toepassingen zoals gepersonaliseerd leren, gezondheidszorg of financiële planning zorgt voorspellende AI er bijvoorbeeld voor dat generatieve output aansluit bij individuele contexten en waarschijnlijke toekomstige scenario's. Samen zorgen voorspellende en generatieve AI voor een krachtige synergie, waarbij vooruitziendheid wordt gecombineerd met creativiteit om meer intelligente, adaptieve en impactvolle technologieoplossingen te stimuleren.
Om voorspellende modeloutput op te nemen in agentworkflows, voeg je gewoon voorspellende modelacties toe aan de Agentforce-activa. Model Builder biedt de middelen om voorspellende modellen te bouwen of te registreren (BYO). Deze modellen worden vervolgens door de agent gebruikt om voorspellingen te doen. De resulterende voorspellingen (evenals de voorspellers) kunnen worden opgeslagen in aangepaste variabelen. Agents kunnen deze variabele waarden gebruiken als input voor en het conditionaliseren van de uitvoering van specifieke acties en onderwerpen.
Bepaalde bedrijfsprocessen moeten in een nauwkeurige volgorde worden uitgevoerd en vereisen geen gebruikersinvoer tijdens de uitvoering. In dit geval kan een vooraf bepaalde stappenstroom worden afgedwongen via stromen, API's of Apex. Als je een bestaande stroom hebt waarop in de productie wordt vertrouwd, is dit een goede indicatie dat deze door de agent kan worden bewaard en gebruikt voor de uitvoering van dat bedrijfsproces. Alle volgende voorbeelden bevatten vooraf bepaalde stappenreeksen die de agent kan uitvoeren zonder gebruikersinvoer. Het agentische gedrag bestaat in dit geval uit het identificeren van welk deterministisch proces moet worden uitgevoerd, hoe de nodige input moet worden verzameld en hoe de outputs moeten worden geïnterpreteerd en verwerkt.
Bedrijfsprocessen met veel opeenvolgende stappen (meer dan drie, als vuistregel) en veel afhankelijkheden van variabelen worden te complex en omslachtig om af te dwingen met instructies. In dit geval is het mogelijk om ze gewoon te programmeren in hardcode met behulp van de deterministische actietypen die in dit gedeelte worden vermeld. Merk ten slotte op dat deze implementaties niet-deterministische elementen kunnen bevatten, zoals het aanroepen van LLM's met opgeloste taakaanwijzingssjablonen. Daarom zijn ze end-to-end niet altijd volledig deterministisch en kunnen ze nog steeds de gewenste flexibiliteit laten zien waar agents om bekend staan.
De volgorde van stappen in een marketingtraject wordt bepaald door vaste regels en is niet afhankelijk van conversational gebruikersinput. Daarom kan de stroom als een Agentforce-actie worden gebruikt. Een aanroepbare actie kan worden gemaakt om achtergrond- of gebeurtenisgestuurde taken uit te voeren vanuit een oplossingscomponent die een stroom of Apex-klasse kan aanroepen. Voeg een aanroepbare actie toe aan een stroom of Apex-klasse en geef de taak op die de agent moet voltooien, evenals de voorwaarden die de agent activeren. Aanroepbare acties kunnen ook de contextvariabelen van de agent bevatten en belangrijke informatie doorgeven.
Salesforce-stromen kunnen worden gebruikt om routinetaken te automatiseren, zoals het maken van vervolgtaken, het verzenden van herinneringse-mails of het bijwerken van records. Stromen maken het werk efficiënter en productiever. Agents kunnen ook stromen uitvoeren met behulp van stroomacties. Vanwege hun determinisme zijn stromen een geweldige manier om agentisch gedrag te sturen wanneer een bedrijfsproces in een bepaalde volgorde moet worden uitgevoerd. Een goede indicatie dat een stroomactie de voorkeur heeft, is wanneer het onderwerp anders instructies zou bevatten zoals "eerst dit doen, dan dit doen en uiteindelijk dit doen". Het afdwingen van reeksen van meer dan drie stappen wordt lastig om te beheren via instructies en variabelen.
Stromen kunnen ook niet-deterministische elementen bevatten door taakaanwijzingen aan te roepen. Een taakaanwijzingsknooppunt in de stroom roept een taakaanwijzingssjabloon aan en verzamelt het antwoord dat kan worden doorgegeven aan andere elementen in de stroom. Deze verdere elementen kunnen ook weer taakaanwijzingsknooppunten zijn, bijvoorbeeld het samenvatten van het vorige antwoord. Zo ontstaat een keten van taakaanwijzingen. Dit is vooral handig wanneer de regels voor taakaanwijzingsketens worden gedefinieerd door vaste elementen en niet afhankelijk zijn van gebruikersinput. Een voorbeeld is agentische RAG, waarin een vooraf gedefinieerde reeks retrievers of taakaanwijzingen in een stroom toegang heeft tot specifieke databronnen in een bepaalde volgorde. Denk daarbij aan het eerst ophalen van data uit het landdocument van een gebruiker, om vervolgens naar behoefte andere bronnen te raadplegen. Dit ketenmechanisme dwingt een betrouwbare en geordende extractie van relevante informatie af.
Net als flows zijn Apex- en API-acties deterministisch, omdat een vooraf gedefinieerde reeks acties kan worden gecodeerd. Deze acties kunnen niet-deterministische elementen bevatten, zoals het aanroepen van taakaanwijzingssjablonen of LLM-aanroepen. Per definitie voeren ze deze stappen echter deterministisch uit, wat de agentische variabiliteit vermindert door de actie op het juiste moment aan te roepen, de benodigde input te verzamelen en de output te verwerken. Deze verantwoordelijkheden moeten nog steeds worden beheerd door agentische instructies, dus zijn ze niet-deterministisch. Apex- en API-acties zijn het pro-code-equivalent van stroomacties.
Het bereiken van betrouwbaar agentisch gedrag vereist een gestructureerde aanpak die de inherente flexibiliteit van grote taalmodellen (LLM's) afstemt op de behoefte aan controle en voorspelbaarheid op bedrijfsniveau. Dit artikel schetste een gelaagde strategie voor het implementeren van 'gestuurd determinisme', waarmee agents kunnen worden gemaakt die niet alleen slim en autonoom zijn, maar ook altijd nauwkeurig zijn en afgestemd zijn op bedrijfsprocessen. De sleutel tot het bouwen van deze vertrouwde agents ligt in een progressieve implementatie van controlemechanismen, die elk een nieuwe laag van betrouwbaarheid toevoegen:
Door deze controlelagen systematisch toe te passen (van een doordacht ontwerp en duidelijke instructies tot data grounding, statusbeheer en deterministische procesautomatisering), kunnen developers betrouwbare agents bouwen met consistente bedrijfsresultaten. Deze strategische aanpak zorgt ervoor dat je Agentforce-agents met vertrouwen kritieke bedrijfsfuncties kunt laten uitvoeren, met de nauwkeurigheid en consistentie die nodig zijn in het bedrijfsleven.
De vijf niveaus van determinisme in AI zijn: instructievrije onderwerpen en actieselectie, instructies voor agents, data grounding, agentische variabelen en deterministische acties met behulp van stromen, Apex en API's.
Inzicht in AI-determinisme is cruciaal voor het bouwen van betrouwbare agents die kritieke bedrijfsfuncties nauwkeurig en consistent kunnen uitvoeren, met een balans tussen creatieve flexibiliteit en bedrijfscontrole.
In AI verwijst 'deterministisch' naar het vermogen van een systeem om dezelfde output te produceren met dezelfde input en voorwaarden, waardoor een rigiditeit en discipline worden opgelegd die essentieel zijn voor betrouwbaar agentisch gedrag.
Niet-determinisme in AI-systemen komt voornamelijk voort uit het gebruik van grote taalmodellen (LLM's). Deze zijn van nature niet-deterministisch, waardoor agents flexibel en adaptief kunnen zijn.
De niveaus van determinisme versterken geleidelijk het determinisme van AI-agents, waardoor ze steeds minder autonoom worden. Ze worden dan wel betrouwbaarder en beter afgestemd op bedrijfsprocessen.
Minder deterministische AI-systemen brengen risico's met zich mee op het gebied van betrouwbaarheid en naleving van zakelijke vereisten, omdat hun inherente niet-determinisme kan leiden tot onvoorspelbaar gedrag.
Bedrijven beheren AI-systemen met verschillende niveaus van determinisme door het hanteren van een gelaagde aanpak met een doordacht ontwerp, duidelijke instructies, data grounding, statusbeheer via variabelen en deterministische procesautomatisering met behulp van stromen, Apex en API's.
Bekijk in onze bibliotheek hoe je agenten kunt bouwen.
Lanceer Agentforce met snelheid, vertrouwen en ROI die je kunt meten.
Laat ons weten wat je zakelijke behoeften zijn, dan helpen wij je antwoorden te vinden.