
Intelligente Agenten
Een intelligente agent is een autonoom entiteit die is ontworpen om zijn omgeving waar te nemen via sensoren en te handelen in die omgeving met behulp van actua...
Ontdek de 12 factoren voor het bouwen van robuuste, schaalbare AI-agenten: van natuurlijke taalconversie en prompt-eigenaarschap tot menselijke samenwerking en stateloos ontwerp. Bouw productieklare AI-systemen die echte bedrijfswaarde leveren.
Voordat we ingaan op de factoren, verduidelijken we eerst wat we bedoelen met “AI-agenten.” In de kern zijn dit systemen die natuurlijke taalverzoeken kunnen interpreteren, beslissingen nemen op basis van context en specifieke acties uitvoeren via tools of API’s—terwijl ze samenhangende, doorlopende interacties behouden.
De krachtigste agenten combineren het redeneervermogen van taalmodellen met de betrouwbaarheid van deterministische code. Maar het vinden van die balans vereist zorgvuldige ontwerpkeuzes—precies waar deze factoren op inspelen.
Het vermogen om natuurlijke taalverzoeken om te zetten in gestructureerde tool-oproepen vormt de kern van de agentfunctionaliteit. Hiermee kan een agent een eenvoudig commando als “maak een betalingslink aan voor €750 voor Terri voor de AI Tinkerers-bijeenkomst in februari” omzetten in een correct geformatteerde API-call.
{
"function": {
"name": "create_payment_link",
"parameters": {
"amount": 750,
"customer": "cust_128934ddasf9",
"product": "prod_8675309",
"price": "prc_09874329fds",
"quantity": 1,
"memo": "Hey Jeff - zie hieronder de betalingslink voor de AI Tinkerers-bijeenkomst in februari"
}
}
}
De sleutel tot betrouwbare werking is het gebruik van deterministische code om de gestructureerde output van je taalmodel te verwerken. Valideer altijd API-payloads vóór uitvoering om fouten te voorkomen en zorg ervoor dat je LLM consistente JSON-formaten retourneert die betrouwbaar te parsen zijn.
Je prompts zijn de interface tussen je applicatie en het taalmodel—behandel ze als first-class code. Frameworks die prompts abstraheren lijken handig, maar verbergen vaak hoe instructies aan de LLM worden doorgegeven, waardoor fine-tuning lastig of onmogelijk wordt.
Beheer in plaats daarvan je prompts direct door ze expliciet te schrijven:
function DetermineNextStep(thread: string) -> DoneForNow | ListGitTags | DeployBackend | DeployFrontend | RequestMoreInformation {
prompt #"
{{ _.role("system") }}
Je bent een behulpzame assistent die deployments beheert voor frontend- en backendsystemen.
...
{{ _.role("user") }}
{{ thread }}
Wat moet de volgende stap zijn?
"#
}
Deze aanpak biedt je meerdere voordelen:
Het contextwindow fungeert als input van de LLM en omvat prompts, gespreksgeschiedenis en externe data. Optimalisatie hiervan verbetert prestaties en tokenefficiëntie.
Ga verder dan standaard message-based formaten naar aangepaste structuren die de informatiedichtheid maximaliseren:
<slack_message>
From: @alex
Channel: #deployments
Text: Kun je de backend deployen?
</slack_message>
<list_git_tags>
intent: "list_git_tags"
</list_git_tags>
<list_git_tags_result>
tags:
- name: "v1.2.3"
commit: "abc123"
date: "2024-03-15T10:00:00Z"
</list_git_tags_result>
Deze aanpak biedt meerdere voordelen:
Tools zijn in essentie JSON-uitvoer van de LLM die deterministische acties in je code aansturen. Dit zorgt voor een duidelijke scheiding tussen AI-besluitvorming en uitvoeringslogica.
Definieer tool-schema’s duidelijk:
class CreateIssue {
intent: "create_issue";
issue: {
title: string;
description: string;
team_id: string;
assignee_id: string;
};
}
class SearchIssues {
intent: "search_issues";
query: string;
what_youre_looking_for: string;
}
Bouw vervolgens betrouwbare parsers voor LLM-JSON-uitvoer, gebruik deterministische code om de acties uit te voeren en voer de resultaten terug in de context voor iteratieve workflows.
Veel agent-frameworks scheiden uitvoeringsstatus (bijv. huidige stap in een proces) van bedrijfsstatus (bijv. geschiedenis van tool-oproepen en resultaten). Deze scheiding voegt onnodige complexiteit toe.
Sla in plaats daarvan alle status direct op in het contextwindow en leid de uitvoeringsstatus af uit de reeks gebeurtenissen:
<deploy_backend>
intent: "deploy_backend"
tag: "v1.2.3"
environment: "production"
</deploy_backend>
<error>
error running deploy_backend: Kon geen verbinding maken met de deploymentservice
</error>
Deze verenigde aanpak biedt:
Productieklare agenten moeten naadloos integreren met externe systemen, pauzeren voor langlopende taken en hervatten bij triggers via webhooks of andere events.
Implementeer API’s die het starten, pauzeren en hervatten van agenten mogelijk maken, met robuuste statusopslag tussen operaties. Dit maakt mogelijk:
AI-agenten hebben vaak menselijke input nodig voor belangrijke beslissingen of onduidelijke situaties. Gebruik van gestructureerde tool-oproepen maakt deze interactie naadloos:
class RequestHumanInput {
intent: "request_human_input";
question: string;
context: string;
options: {
urgency: "low" | "medium" | "high";
format: "free_text" | "yes_no" | "multiple_choice";
choices: string[];
};
}
Deze aanpak biedt een duidelijke specificatie van het interactietype en de urgentie, ondersteunt input van meerdere gebruikers en combineert goed met API’s voor duurzame workflows.
Aangepaste controlflow stelt je in staat te pauzeren voor menselijke goedkeuring, resultaten te cachen of rate limiting te implementeren—waardoor je het gedrag van de agent afstemt op je behoeften:
async function handleNextStep(thread: Thread) {
while (true) {
const nextStep = await determineNextStep(threadToPrompt(thread));
if (nextStep.intent === 'request_clarification') {
await sendMessageToHuman(nextStep);
await db.saveThread(thread);
break;
} else if (nextStep.intent === 'fetch_open_issues') {
const issues = await linearClient.issues();
thread.events.push({ type: 'fetch_open_issues_result', data: issues });
continue;
}
}
}
Met deze aanpak krijg je:
Door fouten direct op te nemen in het contextwindow kunnen AI-agenten leren van mislukkingen en hun aanpak aanpassen:
try {
const result = await handleNextStep(thread, nextStep);
thread.events.push({ type: `${nextStep.intent}_result`, data: result });
} catch (e) {
thread.events.push({ type: 'error', data: formatError(e) });
}
Om dit effectief te laten werken:
Kleine agenten die 3–20 stappen afhandelen, houden contextwindows beheersbaar en verbeteren LLM-prestaties en betrouwbaarheid. Dit biedt:
Naarmate LLM’s verbeteren, kunnen deze kleine agenten hun scope uitbreiden terwijl de kwaliteit behouden blijft, wat zorgt voor langdurige schaalbaarheid.
Maak je agenten toegankelijk door triggers toe te staan via Slack, e-mail of eventsystemen—waar gebruikers al werken.
Implementeer API’s die agenten starten vanuit verschillende kanalen en via hetzelfde medium reageren. Dit maakt mogelijk:
Behandel agenten als stateloze functies die inputcontext transformeren naar outputacties. Dit vereenvoudigt statusbeheer, maakt ze voorspelbaar en gemakkelijker te debuggen.
Dit conceptuele model ziet agenten als pure functies zonder interne status, wat oplevert:
Het veld van AI-agenten ontwikkelt zich snel, maar deze kernprincipes blijven relevant, zelfs als de onderliggende modellen verbeteren. Door te starten met kleine, gefocuste agenten die deze praktijken volgen, kun je systemen creëren die nu waarde leveren en klaar zijn voor toekomstige ontwikkelingen.
Onthoud dat de meest effectieve AI-agenten het redeneervermogen van taalmodellen combineren met de betrouwbaarheid van deterministische code—en deze 12 factoren helpen je die balans te vinden.
Bij FlowHunt hebben we deze principes in de praktijk gebracht door onze eigen AI-agent te ontwikkelen die automatisch workflow-automatiseringen voor onze klanten creëert. Zo hebben wij de 12-factor methodologie toegepast om een betrouwbaar, productie-klaar systeem te bouwen
De 12-Factor AI Agent methodologie is een set best practices geïnspireerd op het 12-factor app model, ontworpen om ontwikkelaars te helpen robuuste, onderhoudbare en schaalbare AI-agenten te bouwen die betrouwbaar presteren in echte productieomgevingen.
Contextbeheer zorgt ervoor dat AI-agenten relevante gespreksgeschiedenis, prompts en status behouden, wat de prestaties optimaliseert, het tokengebruik verlaagt en de nauwkeurigheid van besluitvorming verbetert.
FlowHunt AI-agenten structureren tool-oproepen om waar nodig menselijke input te vragen, waardoor naadloze samenwerking, goedkeuringen en duurzame workflows voor complexe of risicovolle scenario's mogelijk zijn.
Stateloze AI-agenten zijn voorspelbaar, eenvoudiger te debuggen en makkelijker te schalen omdat ze inputcontext transformeren naar uitvoeracties zonder verborgen interne status te behouden.
Arshia is een AI Workflow Engineer bij FlowHunt. Met een achtergrond in computerwetenschappen en een passie voor AI, specialiseert zij zich in het creëren van efficiënte workflows die AI-tools integreren in dagelijkse taken, waardoor productiviteit en creativiteit worden verhoogd.
Klaar om robuuste, productieklare AI-agenten te creëren? Ontdek de tools van FlowHunt en zie hoe de 12-factor methodologie jouw automatisering kan transformeren.
Een intelligente agent is een autonoom entiteit die is ontworpen om zijn omgeving waar te nemen via sensoren en te handelen in die omgeving met behulp van actua...
Ontdek de geavanceerde mogelijkheden van de Claude 3 AI-agent. Deze diepgaande analyse laat zien hoe Claude 3 verder gaat dan het genereren van tekst en zijn re...
Verken de wereld van AI-agentmodellen met een uitgebreide analyse van 20 baanbrekende systemen. Ontdek hoe ze denken, redeneren en presteren bij diverse taken e...