
Agents intelligents
Un agent intelligent est une entité autonome conçue pour percevoir son environnement via des capteurs et agir sur cet environnement à l'aide d'actionneurs, doté...
Découvrez les 12 facteurs pour construire des agents IA robustes et évolutifs : de la conversion du langage naturel et la maîtrise des prompts, à la collaboration humaine et la conception sans état. Créez des systèmes IA prêts pour la production qui apportent une vraie valeur métier.
Avant d’entrer dans les facteurs, clarifions ce que nous entendons par « agents IA ». Fondamentalement, ce sont des systèmes capables d’interpréter des requêtes en langage naturel, de prendre des décisions basées sur le contexte et d’exécuter des actions spécifiques via des outils ou des API — tout en maintenant des interactions cohérentes et continues.
Les agents les plus puissants combinent les capacités de raisonnement des modèles de langage avec la fiabilité du code déterministe. Mais trouver cet équilibre requiert des choix de conception réfléchis, c’est précisément ce que ces facteurs adressent.
La capacité à transformer des requêtes en langage naturel en appels d’outils structurés est au cœur du fonctionnement d’un agent. C’est ce qui permet à un agent de prendre une commande simple comme « crée un lien de paiement de 750 $ pour Terri pour la rencontre des AI Tinkerers de février » et de la convertir en un appel API correctement formaté.
{
"function": {
"name": "create_payment_link",
"parameters": {
"amount": 750,
"customer": "cust_128934ddasf9",
"product": "prod_8675309",
"price": "prc_09874329fds",
"quantity": 1,
"memo": "Hey Jeff - see below for the payment link for the February AI Tinkerers meetup"
}
}
}
La clé pour que cela fonctionne de façon fiable est d’utiliser du code déterministe pour gérer la sortie structurée de votre modèle de langage. Validez toujours les charges utiles API avant exécution pour éviter les erreurs, et assurez-vous que votre LLM renvoie des formats JSON cohérents pouvant être analysés de façon fiable.
Vos prompts sont l’interface entre votre application et le modèle de langage — considérez-les comme du code de première classe. Bien que les frameworks qui abstraient les prompts puissent sembler pratiques, ils masquent souvent la façon dont les instructions sont transmises au LLM, rendant l’ajustement difficile voire impossible.
À la place, gardez le contrôle direct sur vos prompts en les écrivant explicitement :
function DetermineNextStep(thread: string) -> DoneForNow | ListGitTags | DeployBackend | DeployFrontend | RequestMoreInformation {
prompt #"
{{ _.role("system") }}
You are a helpful assistant that manages deployments for frontend and backend systems.
...
{{ _.role("user") }}
{{ thread }}
What should the next step be?
"#
}
Cette approche vous offre plusieurs avantages :
La fenêtre de contexte sert d’entrée au LLM, englobant prompts, historique de conversation et données externes. L’optimisation de cette fenêtre améliore la performance et l’efficacité des tokens.
Allez au-delà des formats standard basés sur les messages vers des structures personnalisées qui maximisent la densité d’information :
<slack_message>
From: @alex
Channel: #deployments
Text: Can you deploy the backend?
</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>
Cette approche offre plusieurs avantages :
Au fond, les outils sont simplement des sorties JSON du LLM qui déclenchent des actions déterministes dans votre code. Cela crée une séparation nette entre la prise de décision de l’IA et la logique d’exécution.
Définissez clairement les schémas d’outils :
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;
}
Construisez ensuite une analyse fiable des sorties JSON du LLM, utilisez du code déterministe pour exécuter les actions, et réinjectez les résultats dans le contexte pour des workflows itératifs.
Beaucoup de frameworks d’agents séparent l’état d’exécution (ex : étape actuelle d’un processus) de l’état métier (ex : historique des appels d’outils et leurs résultats). Cette séparation ajoute une complexité inutile.
À la place, stockez tout l’état directement dans la fenêtre de contexte, en déduisant l’état d’exécution de la séquence d’événements :
<deploy_backend>
intent: "deploy_backend"
tag: "v1.2.3"
environment: "production"
</deploy_backend>
<error>
error running deploy_backend: Failed to connect to deployment service
</error>
Cette approche unifiée offre :
Les agents de niveau production doivent s’intégrer parfaitement aux systèmes externes, pouvant se mettre en pause pour des tâches longues et reprendre lorsqu’ils sont déclenchés par des webhooks ou d’autres événements.
Implémentez des API permettant de lancer, mettre en pause et reprendre les agents, avec un stockage d’état robuste entre les opérations. Cela permet :
Les agents IA ont souvent besoin d’une intervention humaine pour des décisions critiques ou des situations ambiguës. L’utilisation d’appels d’outils structurés rend cette interaction fluide :
class RequestHumanInput {
intent: "request_human_input";
question: string;
context: string;
options: {
urgency: "low" | "medium" | "high";
format: "free_text" | "yes_no" | "multiple_choice";
choices: string[];
};
}
Cette approche permet une spécification claire du type d’interaction et de l’urgence, supporte les contributions de plusieurs utilisateurs et se combine bien avec les API pour des workflows durables.
Un flux de contrôle personnalisé vous permet de mettre en pause pour une validation humaine, de mettre en cache les résultats ou d’implémenter un contrôle de débit — adaptant ainsi le comportement de l’agent à vos besoins spécifiques :
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;
}
}
}
Avec cette approche, vous gagnez :
Inclure les erreurs directement dans la fenêtre de contexte permet aux agents IA d’apprendre de leurs échecs et d’ajuster leur approche :
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) });
}
Pour que cela fonctionne efficacement :
Les petits agents qui traitent 3 à 20 étapes maintiennent des fenêtres de contexte gérables, améliorant la performance et la fiabilité du LLM. Cette approche offre :
À mesure que les LLM s’améliorent, ces petits agents pourront élargir leur périmètre tout en maintenant la qualité, assurant la scalabilité à long terme.
Rendez vos agents accessibles en autorisant les déclencheurs depuis Slack, l’email ou des systèmes d’événements — en les rendant disponibles là où les utilisateurs travaillent déjà.
Implémentez des API qui lancent les agents depuis différents canaux et répondent via le même support. Cela permet :
Traiter les agents comme des fonctions sans état qui transforment le contexte d’entrée en actions de sortie simplifie la gestion de l’état, les rendant prévisibles et plus faciles à déboguer.
Cette approche conceptuelle considère les agents comme des fonctions pures sans état interne, offrant :
Le domaine des agents IA évolue rapidement, mais ces principes de base resteront pertinents même à mesure que les modèles s’améliorent. En commençant par de petits agents spécialisés respectant ces pratiques, vous créez des systèmes apportant de la valeur dès aujourd’hui tout en s’adaptant aux avancées futures.
Rappelez-vous que les agents IA les plus efficaces combinent les capacités de raisonnement des modèles de langage avec la fiabilité du code déterministe — et ces 12 facteurs vous aident à trouver cet équilibre.
Chez FlowHunt, nous avons mis ces principes en pratique en développant notre propre agent IA qui crée automatiquement des automatisations de workflow pour nos clients. Voici comment nous avons appliqué la méthodologie des 12 facteurs pour construire un système fiable et prêt pour la production
La méthodologie de l'agent IA en 12 facteurs est un ensemble de bonnes pratiques inspirées du modèle d’application en 12 facteurs, conçues pour aider les développeurs à construire des agents IA robustes, maintenables et évolutifs qui fonctionnent de manière fiable dans des environnements de production réels.
La gestion du contexte garantit que les agents IA conservent l’historique de conversation pertinent, les prompts et l’état, optimisant la performance, réduisant l’utilisation de tokens et améliorant la précision des prises de décision.
Les agents IA FlowHunt structurent les appels d’outils pour demander l’intervention humaine lorsque nécessaire, permettant une collaboration fluide, des validations et des workflows durables pour les scénarios complexes ou critiques.
Les agents IA sans état sont prévisibles, plus faciles à déboguer et plus simples à faire évoluer car ils transforment le contexte d’entrée en actions de sortie sans maintenir d’état interne caché.
Arshia est ingénieure en workflows d'IA chez FlowHunt. Avec une formation en informatique et une passion pour l’IA, elle se spécialise dans la création de workflows efficaces intégrant des outils d'IA aux tâches quotidiennes, afin d’accroître la productivité et la créativité.
Prêt à créer des agents IA robustes et prêts pour la production ? Découvrez les outils FlowHunt et voyez comment la méthodologie en 12 facteurs peut transformer votre automatisation.
Un agent intelligent est une entité autonome conçue pour percevoir son environnement via des capteurs et agir sur cet environnement à l'aide d'actionneurs, doté...
Découvrez les capacités avancées de l'agent IA Claude 3. Cette analyse approfondie révèle comment Claude 3 va bien au-delà de la génération de texte, mettant en...
Explorez le monde des modèles d'agents IA grâce à une analyse approfondie de 20 systèmes de pointe. Découvrez comment ils réfléchissent, raisonnent et performen...