Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
GenAI-agents combineren de intelligentie van GenAI-modellen met hulpprogramma's voor het ophalen van gegevens, externe acties en andere mogelijkheden. Op deze pagina wordt het ontwerp van de agent beschreven:
- Een concreet voorbeeld van het bouwen van een agentsysteem illustreert het coördineren van hoe model- en hulpmiddeloproepen samen vloeien.
- Ontwerppatronen voor agentsystemen vormen een continuum van complexiteit en autonomie, van deterministische ketens, tot systemen met één agent die dynamische beslissingen kunnen nemen, tot architecturen met meerdere agents die meerdere gespecialiseerde agents coördineren.
- Een praktische adviessectie geeft advies over het kiezen van het juiste ontwerp en het ontwikkelen van agents, testen en overstappen op productie.
Agents zijn sterk afhankelijk van hulpprogramma's voor het verzamelen van informatie en het uitvoeren van externe acties. Zie Hulpprogramma's voor meer achtergrondinformatie.
Voorbeeld van agentsysteem
Voor een concreet voorbeeld van een agentsysteem kunt u een Call Center GenAI-agent gebruiken die communiceert met een klant:
De klant doet een verzoek: "Kan je me helpen mijn laatste bestelling te retourneren?"
- Reden en plan: Gezien de intentie van de query, plant de agent: "Zoek de recente bestelling van de gebruiker op en controleer ons retourbeleid."
- Informatie zoeken (gegevensinformatie): de agent voert een query uit op de orderdatabase om de relevante volgorde op te halen en verwijst naar een beleidsdocument.
-
Reden: De agent controleert of deze bestelling binnen het retourvenster past.
- Optionele human-in-the-loop: De agent controleert een extra regel: Als het item in een bepaalde categorie valt of zich buiten het normale retourvenster bevindt, escaleert u naar een mens.
- Action: de agent activeert het retourproces en genereert een verzendlabel.
- Reden: de agent genereert een antwoord aan de klant.
De AI-agent reageert op de klant: 'Gereed! Hier is uw verzendlabel..."
Deze stappen zijn tweede natuur in een context van een callcenter voor mensen. In een agentsysteemcontext redeneert de LLM, terwijl het systeem gespecialiseerde tools of gegevensbronnen aanroept om de details in te vullen.
Complexiteitsniveaus: Van LLM's tot agentsystemen
GenAI-apps kunnen worden aangedreven door een reeks systemen, van eenvoudige LLM-aanroepen tot complexe multiagentsystemen. Start eenvoudig bij het bouwen van een ai-toepassing. Introduceer complexere agentische gedragingen wanneer u ze echt nodig hebt voor betere flexibiliteit of modelgestuurde beslissingen. Deterministische ketens bieden voorspelbare, op regels gebaseerde stromen voor goed gedefinieerde taken. Meer agentische benaderingen bieden meer flexibiliteit en potentieel, maar ze worden geleverd met de kosten van extra complexiteit en potentiële latentie.
| Ontwerppatroon | Wanneer te gebruiken | Voordelen | Nadelen |
|---|---|---|---|
| LLM + prompt |
|
|
|
| deterministische keten |
|
|
|
| systeem met één agent |
|
|
|
| multiagentsysteem |
|
|
|
Mosaic AI Agent Framework is agnostisch voor deze patronen, waardoor het eenvoudig is om eenvoudig te beginnen en zich verder te ontwikkelen naar hogere mate van automatisering en autonomie naarmate uw toepassingsvereisten groeien.
Zie blogberichten van de Databricks-oprichters voor meer informatie over de theorie achter agentsystemen:
- AI-agentsystemen: Modulaire Engineering voor Betrouwbare Enterprise AI-toepassingen
- De verschuiving van modellen naar samengestelde AI-systemen
LLM en prompt
Het eenvoudigste ontwerp heeft een zelfstandig LLM- of ander GenAI-model dat reageert op prompts op basis van kennis uit een uitgebreide trainingsgegevensset. Dit ontwerp is geschikt voor eenvoudige of algemene query's, maar is vaak losgekoppeld van uw echte zakelijke gegevens. U kunt het gedrag aanpassen door een systeemprompt op te geven met uw aangepaste instructies of ingesloten gegevens.
deterministische keten (in code vastgelegde stappen)
Deterministische ketens vergroten GenAI-modellen met het aanroepen van hulpprogramma's, maar de ontwikkelaar definieert welke hulpprogramma's of modellen worden aangeroepen, in welke volgorde en met welke parameters. De LLM neemt geen beslissingen over welke hulpprogramma's moeten worden aangeroepen of in welke volgorde. Het systeem volgt een vooraf gedefinieerde werkstroom of 'keten' voor alle aanvragen, waardoor het zeer voorspelbaar is.
Een deterministische RAG-keten (Retrieval Augmented Generation) kan bijvoorbeeld altijd:
- Haal top-k-resultaten op uit een vectorindex om context te vinden die relevant is voor een gebruikersaanvraag.
- Een prompt uitbreiden door de gebruikersaanvraag te combineren met de opgehaalde context.
- Genereer een antwoord door de uitgebreide prompt naar een LLM te verzenden.
Wanneer te gebruiken:
- Voor goed gedefinieerde taken met voorspelbare werkstromen.
- Wanneer consistentie en controle de hoogste prioriteiten zijn.
- Wanneer u latentie wilt minimaliseren door meerdere LLM-aanroepen voor indelingsbeslissingen te voorkomen.
Voordelen:
- Hoogste voorspelbaarheid en controlebaarheid.
- Doorgaans lagere latentie (minder LLM-aanroepen voor indeling).
- Eenvoudiger te testen en te valideren.
Overwegingen:
- Beperkte flexibiliteit voor het verwerken van diverse of onverwachte aanvragen.
- Kan complex en moeilijk te onderhouden worden naarmate logische vertakkingen toenemen.
- Kan aanzienlijke herstructurering vereisen voor nieuwe mogelijkheden.
systeem met één agent
Een single-agent systeem heeft een LLM waarmee één gecoördineerde logische stroom wordt georganiseerd. De LLM bepaalt adaptief welke hulpprogramma's moeten worden gebruikt, wanneer er meer LLM-aanroepen moeten worden uitgevoerd en wanneer ze moeten stoppen. Deze aanpak ondersteunt dynamische, contextbewuste beslissingen.
Een systeem met één agent kan:
- Accepteer aanvragen zoals gebruikersquery's en eventuele relevante context, zoals gespreksgeschiedenis.
- Reden voor hoe u het beste kunt reageren, optioneel bepalen of u hulpprogramma's wilt aanroepen voor externe gegevens of acties.
- Herhaal indien nodig oproepen van een LLM of hulpprogramma's, totdat een doelstelling is bereikt of een bepaalde voorwaarde is vervuld, zoals het ontvangen van geldige gegevens of het verhelpen van een fout.
- De resultaten van de tool in het gesprek integreren.
- Geef een samenhangend antwoord als output.
Een helpdeskmedewerker kan zich bijvoorbeeld als volgt aanpassen:
- Als de gebruiker een eenvoudige vraag stelt ('Wat is ons retourbeleid?'),reageert de agent mogelijk rechtstreeks vanuit de kennis van de LLM.
- Als de gebruiker de orderstatus wil, kan de agent een functie
lookup_order(customer_id, order_id)aanroepen. Als dat hulpprogramma reageert met 'ongeldig ordernummer', kan de agent het opnieuw proberen of de gebruiker om de juiste id vragen, door te gaan totdat het een definitief antwoord kan geven.
Wanneer te gebruiken:
- U verwacht gevarieerde gebruikersquery's, maar nog steeds binnen een samenhangend domein of productgebied.
- Bepaalde query's of voorwaarden kunnen het gebruik van hulpprogramma's rechtvaardigen, zoals bepalen wanneer klantgegevens moeten worden opgehaald.
- U wilt meer flexibiliteit dan een deterministische keten, maar u hebt geen afzonderlijke gespecialiseerde agents nodig voor verschillende taken.
Voordelen:
- De agent kan zich aanpassen aan nieuwe of onverwachte query's door te kiezen welke (indien van toepassing) hulpprogramma's moeten worden aangeroepen.
- De agent kan doorlopend herhaalde LLM-aanroepen of hulpprogramma-aanroepen om de resultaten te verfijnen, zonder dat een volledige multi-agent-setup nodig is.
- Dit ontwerppatroon is vaak de sweet spot voor zakelijke gebruiksvoorbeelden: eenvoudiger om fouten op te sporen dan setups met meerdere agents, terwijl dynamische logica en beperkte autonomie nog steeds mogelijk zijn.
Overwegingen:
- In vergelijking met een in code vastgelegde keten moet u voorkomen dat hulpprogramma-aanroepen herhaaldelijk plaatsvinden of ongeldig zijn. Oneindige lussen kunnen optreden in elk scenario voor het aanroepen van hulpprogramma's, dus stel iteratielimieten of time-outs in.
- Als uw toepassing verschillende subdomeinen omvat (financiën, devops, marketing, enzovoort), kan één agent onhandig of overbelast raken met functionaliteitsvereisten.
- U hebt nog steeds zorgvuldig ontworpen prompts en beperkingen nodig om de agent gefocust en relevant te houden.
- Agentschap is een continuum; hoe meer vrijheid u biedt om het gedrag van het systeem te beheren, hoe agenticer de toepassing wordt. In de praktijk beperken de meeste productiesystemen de autonomie van de agent zorgvuldig om naleving en voorspelbaarheid te garanderen, bijvoorbeeld door menselijke goedkeuring te vereisen voor riskante acties.
multiagentsysteem
Een systeem met meerdere agents omvat twee of meer gespecialiseerde agents die berichten uitwisselen of samenwerken aan taken. Elke agent heeft een eigen domein- of taakexpertise, context en mogelijk afzonderlijke hulpprogrammasets. Een afzonderlijke 'coördinator' of 'AI-supervisor' stuurt aanvragen door naar de juiste agent of bepaalt wanneer taken van de ene agent naar de andere moeten worden overgedragen. De supervisor kan een andere LLM of een op regels gebaseerde router zijn.
Een klantassistent kan bijvoorbeeld een supervisor hebben die taken delegeert aan gespecialiseerde medewerkers.
- Winkelassistent: helpt klanten bij het zoeken naar producten en geeft advies over voor- en nadelen van beoordelingen
- Klantondersteuningsagent: verwerkt feedback, retourneert en verzendt
Wanneer te gebruiken:
- U hebt verschillende probleemgebieden of vaardighedensets, zoals een coderingsagent of een financiële agent.
- Elke agent moet toegang hebben tot gespreksgeschiedenis of domeinspecifieke prompts.
- U hebt zoveel hulpprogramma's dat het onpraktisch is om ze allemaal in het schema van één agent te passen; elke agent kan een subset bezitten.
- U wilt reflectie, kritiek of back-and-forth samenwerking tussen gespecialiseerde agents implementeren.
Voordelen:
- Deze modulaire benadering betekent dat elke agent kan worden ontwikkeld of onderhouden door afzonderlijke teams, gespecialiseerd in een smal domein.
- Kan grote, complexe bedrijfsprocessen aan, die moeilijk door één enkele agent op een samenhangende manier beheerd kunnen worden.
- Vereenvoudigt geavanceerde multistaps- of multi-perspectiefredenering, bijvoorbeeld één agent die een antwoord genereert, een andere die dit verifieert.
Overwegingen:
- Vereist een strategie voor routering tussen agents, plus overhead voor logboekregistratie, tracering en foutopsporing voor meerdere eindpunten.
- Als u veel subagents en hulpprogramma's hebt, kan het ingewikkeld zijn om te bepalen welke agent toegang heeft tot welke gegevens of API's.
- Agenten kunnen taken oneindig onderling uitwisselen zonder dat ze worden opgelost, als ze niet zorgvuldig worden beheerst. Oneindige lusrisico's bestaan ook in het aanroepen van hulpprogramma's met één agent, maar met setups met meerdere agents wordt een andere laag van foutopsporingscomplexiteit toegevoegd.
Praktisch advies
Als uw use case past bij een Agent Bricks-aanbieding , begint u met die begeleide, eenvoudigere optie.
Als u een aangepast agentsysteem moet bouwen, zijn Azure Databricks en het Mosaic AI Agent Framework agnostisch van elk patroon dat u kiest, zodat u eenvoudig ontwerppatronen kunt ontwikkelen naarmate uw toepassing groeit. Houd rekening met de volgende aanbevolen procedures voor het ontwikkelen van stabiele, onderhoudbare agentsystemen:
- Eenvoudig beginnen: Als u slechts een eenvoudige keten nodig hebt, is een deterministische keten snel te bouwen.
- voeg geleidelijk complexiteit toe: Naarmate u meer dynamische query's of flexibele gegevensbronnen nodig hebt, gaat u naar een systeem met één agent met aanroepen van hulpprogramma's. Als u duidelijk verschillende domeinen of taken, meerdere gesprekscontexten of een grote set hulpprogramma's hebt, kunt u een systeem met meerdere agents overwegen.
- Patronen combineren: In de praktijk combineren veel echte agentsystemen patronen. Een meestal deterministische keten kan bijvoorbeeld één stap hebben waarin de LLM zo nodig dynamisch bepaalde API's kan aanroepen.
Richtlijnen voor ontwikkeling
-
Prompts en hulpprogramma's
- Houd aanwijzingen duidelijk en minimaal om tegenstrijdige instructies te voorkomen, informatie af te leiden en halluinaties te verminderen.
- Geef alleen de hulpprogramma's en context op die uw agent nodig heeft, in plaats van een niet-gebonden set API's of een grote irrelevante context. Kies uw toolbenadering tijdens het ontwerp.
-
Logboekregistratie en waarneembaarheid
- Implementeer gedetailleerde logboekregistratie voor elke gebruikersaanvraag, agentplanning en toolaanroep met behulp van MLflow Tracing.
- Sla logboeken veilig op en houd rekening met persoonlijk identificeerbare informatie (PII) in gespreksgegevens. Overweeg gegevensclassificatie voor automatisering.
Richtlijnen voor testen en iteratie
-
Evaluatie
- Gebruik MLflow-evaluatie en productiebewaking om metrische evaluatiegegevens voor ontwikkeling en productie te definiëren.
- Verzamel menselijke feedback van experts en gebruikers om ervoor te zorgen dat uw geautomatiseerde evaluatiegegevens goed zijn gekalibreerd.
-
Foutafhandeling en terugvallogica
- Voorzie in hulpprogramma- of LLM-fouten. Time-outs, onjuiste antwoorden of lege resultaten kunnen een werkstroom verbreken. Neem strategieën voor opnieuw proberen, terugvallogica of een eenvoudigere terugvalketen op wanneer geavanceerde functies mislukken.
-
Iteratieve verbeteringen
- Verwacht dat u in de loop van de tijd prompts en agentlogica verfijnt. Versiewijzigingen met behulp van de MLflow Prompt Registry voor uw prompts en de versie-tracking van MLflow-apps voor uw apps. Versiebeheer vereenvoudigt bewerkingen en maakt terugdraaiacties en vergelijkingen mogelijk.
- Wanneer u evaluatiegegevens verzamelt en metrische gegevens definieert, kunt u meer geautomatiseerde optimalisatiemethoden overwegen, zoals MLflow Prompt Optimization.
Richtlijnen voor productie
-
Modelupdates en versie vastmaken
- LLM-gedrag kan veranderen wanneer providers achter de schermen modellen bijwerken. Gebruik versiepinning en frequente regressietests om ervoor te zorgen dat uw agentlogica robuust en stabiel blijft.
-
Latentie en kostenoptimalisatie
- Elke extra LLM- of tooloproep verhoogt het tokengebruik en de reactietijd. Combineer waar mogelijk stappen of cache herhaalde query's om prestaties en kosten beheersbaar te houden.
-
Beveiliging en Sandboxing
- Als uw agent records kan bijwerken of code kan uitvoeren, plaatst u deze acties in een sandbox of zorgt u voor menselijke goedkeuring waar nodig. Dit is essentieel in bedrijfs- of gereguleerde omgevingen om onbedoelde schade te voorkomen. Unity Catalog-functies bieden sandbox-uitvoering voor productie.
- Zie Kies uw toolbenadering voor meer hulp bij de opties voor hulpprogramma's.
Door deze richtlijnen te volgen, kunt u veel van de meest voorkomende foutmodi beperken, zoals foutoproepen van hulpprogramma's, het afdrijven van LLM-prestaties of onverwachte kostenpieken en het bouwen van betrouwbaardere, schaalbare agentsystemen.