0%
Journaliser un agent et maîtriser son coût

Journalisation et coûts

Reconstituer une trajectoire, et empêcher une boucle de partir en dépense.

10-15 min

Journaliser un agent et maîtriser son coût

Un agent en production échoue autrement qu'un programme ordinaire. Il ne plante pas : il aboutit à un résultat faux par un chemin plausible. Un client vous signale qu'une recherche a renvoyé les données d'un autre dossier, et vous découvrez que vos journaux contiennent une ligne — « appel de l'agent, statut 200, 14 s » — qui ne dit rien de la dizaine de décisions prises entre l'entrée et la sortie.

C'est le point commun de tous les incidents d'agent : la donnée qui permettrait de comprendre est produite pendant l'exécution et perdue à la fin. La journalisation d'un agent n'est donc pas un raffinement d'exploitation, c'est la condition pour pouvoir corriger quoi que ce soit. Elle est aussi le seul moyen sérieux de savoir ce que l'agent coûte.

Ce qu'il faut enregistrer

Une trajectoire est une suite de tours, chacun composé d'une décision du modèle et éventuellement d'un appel d'outil. L'unité de journalisation est donc le tour, et non la requête.

# Un evenement par tour. La cle est l'identifiant de trajectoire :
# c'est lui qui permet de recoller les tours d'une meme execution.
journal.info(
    "tour_agent",
    extra={
        "trajectoire_id": trajectoire.id,     # UUID genere a l'entree
        "utilisateur_id": demande.utilisateur_id,
        "tour": 3,
        "outil": "chercher_dossiers",
        "arguments": {"requete": "facture impayee", "limite": 20},
        "resultat_taille": 4821,              # octets, pas le contenu
        "duree_ms": 340,
        "jetons_entree": 2145,
        "jetons_sortie": 88,
        "motif_arret": None,
    },
)

Commentaires

Les commentaires sont alimentés par GitHub Discussions

Connectez-vous avec GitHub pour participer à la discussion

Lien copié !