Este agente usa IA generativa para determinar a causa de um erro, sugerir uma correção e até modificar o código defeituoso.
O agente começará a partir do stacktrace e então lerá o código de cada função envolvida para obter mais contexto. Em seguida, explicará o erro e sugerirá uma correção em um relatório.
A correção também pode ser feita automaticamente no local.
As solicitações pull deste repositório são exemplos de correção feita pelo agente: https://github.com/Aschen/bug-agent-llm/pulls
Importe o agente e detecte um erro com a função handleErrorWithAgent
.
app . post ( '/tasks' , ( req , res ) => {
try {
createTask ( req , res ) ;
}
catch ( error ) {
handleErrorWithAgent ( error , { modify : true , verbose : true } ) ;
throw error ;
}
} ) ;
Execute um dos aplicativos de exemplo: npx ts-node ./examples/context-understanding/app.js
Envie uma solicitação: bash ./examples/context-understanding/create.sh
Este erro é causado ao acessar uma propriedade que não existe em um objeto.
A propriedade é acessada na função createTask
de app.js
mas é definida na função addTask
de database.js
.
O agente sugeriu retornar uma tarefa atualizada incluindo a nova propriedade.
Veja o PR nº 1
(Veja exemplo de diretório de aplicativos)
// 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 ;
}
O erro é mais ou menos o mesmo mas desta vez precisamos atualizar as 2 funções para resolvê-lo.
Veja o PR #2
(Veja exemplo de diretório de aplicativos)
// 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 ) ;
}