يستخدم هذا الوكيل الذكاء الاصطناعي التوليدي لتحديد سبب الخطأ واقتراح إصلاح وحتى تعديل التعليمات البرمجية الخاطئة.
سيبدأ الوكيل من تتبع المكدس ثم يقرأ الكود الخاص بكل وظيفة معنية للحصول على مزيد من السياق. وبعد ذلك سوف يشرح الخطأ ويقترح إصلاحًا في التقرير.
يمكن أيضًا إجراء الإصلاح تلقائيًا في مكانه.
تعد طلبات السحب الخاصة بهذا المستودع مثالاً على الإصلاح الذي أجراه الوكيل: https://github.com/Aschen/bug-agent-llm/pulls
قم باستيراد الوكيل واكتشف الخطأ باستخدام وظيفة handleErrorWithAgent
.
app . post ( '/tasks' , ( req , res ) => {
try {
createTask ( req , res ) ;
}
catch ( error ) {
handleErrorWithAgent ( error , { modify : true , verbose : true } ) ;
throw error ;
}
} ) ;
قم بتشغيل أحد أمثلة التطبيق: npx ts-node ./examples/context-understanding/app.js
أرسل طلبًا: bash ./examples/context-understanding/create.sh
يحدث هذا الخطأ بسبب الوصول إلى خاصية غير موجودة في الكائن.
يتم الوصول إلى الخاصية في وظيفة createTask
في app.js
ولكن يتم ضبطها في وظيفة addTask
في database.js
.js.
يقترح الوكيل بنجاح إرجاع مهمة محدثة بما في ذلك الخاصية الجديدة.
انظر العلاقات العامة رقم 1
(انظر مثال دليل التطبيق)
// 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 ;
}
الخطأ هو نفسه تقريبًا ولكن هذه المرة نحتاج إلى تحديث الوظيفتين لحله.
انظر العلاقات العامة رقم 2
(انظر مثال دليل التطبيق)
// 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 ) ;
}