Cet agent utilise Generative AI pour déterminer la cause d'une erreur, suggérer un correctif et même modifier le code défectueux.
L'agent partira du stacktrace, puis lira le code de chaque fonction impliquée pour obtenir plus de contexte. Ensuite, il expliquera l'erreur et suggérera un correctif dans un rapport.
Le correctif peut également être automatiquement effectué sur place.
Les demandes d'extraction de ce référentiel sont des exemples de correctifs apportés par l'agent : https://github.com/Aschen/bug-agent-llm/pulls
Importez l'agent et détectez une erreur avec la fonction handleErrorWithAgent
.
app . post ( '/tasks' , ( req , res ) => {
try {
createTask ( req , res ) ;
}
catch ( error ) {
handleErrorWithAgent ( error , { modify : true , verbose : true } ) ;
throw error ;
}
} ) ;
Exécutez l'un des exemples d'application : npx ts-node ./examples/context-understanding/app.js
Envoyer une demande : bash ./examples/context-understanding/create.sh
Cette erreur est provoquée par l'accès à une propriété qui n'existe pas sur un objet.
La propriété est accessible dans la fonction createTask
de app.js
mais est définie dans la fonction addTask
de database.js
.
L'agent suggère avec succès de renvoyer une tâche mise à jour incluant la nouvelle propriété.
Voir le PR #1
(Voir exemple de répertoire d'applications)
// app.js
function createTask ( req , res ) {
const newTask = req . body ;
verifyTask ( newTask ) ;
const savedTask = database . addTask ( newTask ) ;
res . status ( 201 ) . send ( `Task ${ savedTask . metadata . id } saved successfully` ) ;
}
// database.js
function addTask ( newTask ) {
const tasks = readTasksFromFile ( ) ;
tasks . push ( { ... newTask , metadata : { id : generateId ( ) } } ) ;
writeTasksToFile ( tasks ) ;
return newTask ;
}
L'erreur est plus ou moins la même mais cette fois il faut mettre à jour les 2 fonctions afin de la résoudre.
Voir le PR #2
(Voir exemple de répertoire d'applications)
// app.js
function createTask ( req , res ) {
const newTask = req . body ;
verifyTask ( newTask ) ;
database . addTask ( newTask ) ;
res . status ( 201 ) . send ( `Task ${ newTask . metadata . id } saved successfully` ) ;
}
// database.js
function addTask ( newTask ) {
const tasks = readTasksFromFile ( ) ;
tasks . push ( { ... newTask , metadata : { id : generateId ( ) } } ) ;
writeTasksToFile ( tasks ) ;
}