Module 1 sur 10, leçon 1 sur 5
Ce qu’est vraiment un agent
Distinguer un modèle, un programme et un agent, et savoir quand l’agent n’est pas le bon choix.
Un LLM seul transforme un texte en un autre texte. Il ne connaît que ce qu’il a vu à l’entraînement et ce qu’on lui met dans le contexte. Il ne peut ni consulter votre base de données, ni envoyer un e-mail.
La première étape consiste à l’entourer de code : on récupère une donnée, on la place dans le prompt, on génère la réponse. C’est utile, mais le chemin reste écrit par un développeur. Un RAG classique suit toujours le même trajet, quelle que soit la question.
Un agent change une seule chose, décisive : c’est le modèle qui choisit la prochaine étape. Le développeur fournit un objectif, des outils et des limites. Le modèle décide quel outil appeler, lit le résultat, et recommence jusqu’à terminer.
Trois capacités
- Raisonner : décomposer un objectif et choisir une action.
- Agir : appeler des outils qui lisent ou modifient le monde extérieur.
- Se souvenir : conserver ce qui a été appris, pendant la tâche et parfois au-delà.
Agent ou chatbot
La comparaison est trompeuse, car elle ne porte pas sur la même chose. Un chatbot est une interface. L’agentivité est une façon d’organiser le système derrière cette interface. Un chatbot peut donc être agentique ou non.
Le coût de l’autonomie
Laisser le modèle décider coûte des appels, du temps et de la prévisibilité. Si le problème est étroit et que toutes les demandes se traitent de la même façon, un programme classique est plus rapide, moins cher et plus fiable. L’agent se justifie quand le chemin change d’une demande à l’autre.
Si vous pouvez écrire le chemin à l’avance, écrivez-le.
Exemple : La même demande, deux systèmes
Un workflow figé traite le cas pour lequel il a été écrit. Dès qu’une demande exige une étape imprévue, il répond à côté sans s’en rendre compte.
function fixedWorkflow(request, orders) {
const order = orders[request.orderId];
return order.delivered ? 'refund' : 'wait';
}
const orders = { 4512: { delivered: true, returnReceived: false } };
fixedWorkflow({ orderId: 4512, text: 'Broken, and I kept it' }, orders);'refund'
Le code rembourse un client dont le retour n’est jamais arrivé, car aucune étape ne lit la demande. Un agent peut vérifier le retour d’abord, au prix de plus d’appels et de plus de risque. Si toutes les demandes suivent ce chemin, gardez le workflow.
Essayez dans l’éditeur
async function runAgent({ model, tools, prompt }) { const messages = [{ role: 'user', content: prompt }]; while (true) { const response = await model.create({ messages }); messages.push({ role: 'assistant', content: response.content }); if (response.stop_reason === 'end_turn') { return response.content.find((b) => b.type === 'text').text;