Logs e custos
Reconstituir uma trajetória e impedir que um loop dispare os gastos.
Registrar logs de um agente e controlar seu custo
Um agente em produção falha de um jeito diferente de um programa comum. Ele não quebra: chega a um resultado errado por um caminho plausível. Um cliente avisa que uma busca retornou os dados de outro processo, e você descobre que seus logs contêm uma única linha — «chamada do agente, status 200, 14 s» — que não diz nada sobre a dezena de decisões tomadas entre a entrada e a saída.
Esse é o ponto comum de todos os incidentes com agentes: o dado que permitiria entender o que houve é produzido durante a execução e perdido no final. O registro de logs de um agente não é, portanto, um refinamento operacional, mas a condição para conseguir corrigir qualquer coisa. É também a única forma séria de saber quanto o agente custa.
O que registrar
Uma trajetória é uma sequência de turnos, cada um composto por uma decisão do modelo e, eventualmente, uma chamada de ferramenta. A unidade de registro é, portanto, o turno, e não a requisição.
# Um evento por turno. A chave e o identificador da trajetoria:
# e ele que permite reagrupar os turnos de uma mesma execucao.
journal.info(
"tour_agent",
extra={
"trajectoire_id": trajectoire.id, # UUID gerado na entrada
"utilisateur_id": demande.utilisateur_id,
"tour": 3,
"outil": "chercher_dossiers",
"arguments": {"requete": "facture impayee", "limite": 20},
"resultat_taille": 4821, # bytes, nao o conteudo
"duree_ms": 340,
"jetons_entree": 2145,
"jetons_sortie": 88,
"motif_arret": None,
},
)
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão