منطق التقنية / جبهة الذكاء

عامل ذكي ذاتي البناء: تجربة تعتمد على LangChain4j

من خلال LangChain4j، نجح مساعد الكود في تصميم نظام متعدد الوكلاء قادر على إصلاح الأخطاء الحقيقية. كشفت التجارب أن نمط سير العمل أسرع بثلاث مرات من نمط المشرف، وأكدت على أهمية اختيار النموذج.

ملخص TSO

  • من خلال LangChain4j، نجح مساعد الكود في تصميم نظام متعدد الوكلاء قادر على إصلاح الأخطاء الحقيقية. كشفت التجارب أن نمط سير العمل أسرع بثلاث مرات من نمط المشرف، وأكدت على أهمية اختيار النموذج.
  • منطق التقنية · جبهة الذكاء
  • 27 يوليو 2026
ملاحظة TSOيُراجَع كل مقال بالاستناد إلى تقارير مستقلة، وتُدرج روابط المصادر الأصلية مع التحليل حتى يتمكن القراء من فحص الأدلة مباشرة.

شفافية المصادر

مصادر التقارير الأصلية

  1. 自我构建的智能体:基于LangChain4j的实验www.infoq.com

النقاط الرئيسية

  • تمكن الباحثون من جعل مساعد كود LLM يصمم وينفذ نظام ترميز متعدد الوكلاء بنفسه باستخدام وثائق LangChain4j وواجهة برمجة التطبيقات (API).

  • نجح وكيل الترميز الذاتي البناء في إصلاح أخطاء حقيقية، واجتاز الاختبارات، وكشف عن سير التنفيذ الخاص به عبر LangChain4j.

  • عند مقارنة نمطي الوكيل، تبين أن نمط سير العمل الأكثر صرامة أسرع بثلاث مرات من نمط المشرف من خلال إلغاء التنسيق الناتج عن LLM.

  • من خلال واجهة MonitoredAgent المقدمة حديثًا، يمكن الحصول بوضوح على تقارير استدعاء الوكيل وطوبولوجيا النظام.

  • في التجارب، فشل نفس تصميم الوكيل على نماذج قديمة ورخيصة في حلقات استدعاء الأدوات، بينما نجحت النماذج الجديدة في إكمال المهام.

نظرة عامة على التجربة

أجرى الباحثون تجربة فوقية: تم تسليم وثائق LangChain4j إلى مساعد الكود، وطُلب منه بناء "نسخة خاصة به" بناءً على الوثائق. تحديدًا، كان الهدف تصميم نظام متعدد الوكلاء قادر على كتابة واختبار وتصحيح الكود مثل مهندس بشري.

قدرة LLM على بناء نسخة من نفسه بناءً على الوثائق تثبت أن واجهة برمجة تطبيقات LangChain4j واضحة وسهلة الاستخدام بدرجة كافية، كما تشير إلى أن الإطار يوفر قدرة تنسيق كافية لتمكين النظام المُنشأ من تشغيل مهام تصحيح حقيقية من البداية إلى النهاية.

ساعد هذا المشروع أيضًا في اختبار أدوات المراقبة الجديدة لـ LangChain4j - عندما نجعل AI يبني AI آخر، يجب أن نرى ما يحدث في الداخل. تقدم هذه المقالة شرحًا تفصيليًا للتجربة ونتائجها، ويمكن الحصول على كود المشروع ذي الصلة من هذا المستودع.

"بناء نظام وكيل" في جو من البرمجة

لكي يقوم مساعد الكود ببناء أول وكيل ترميز، كتب الباحثون المطالبة التالية:

تعلم وثائق وكود مصدر إطار عمل وكيل LangChain4j، وبناءً عليه، صمم وكيل ترميزًا ينسخ نفسك.

بعد دقائق من التفكير، قرر المساعد استخدام نمط المشرف (supervisor pattern) في LangChain4j، واقترح البنية الأولية:

public interface SupervisorCoderSystem {
    @SupervisorAgent(description = """
        一个多智能体编码助手,可以探索代码库、规划实现、编写/编辑代码、运行构建/测试。
        它编排专门的子智能体来完成编码请求。
        """, subAgents = {
            ExplorerAgent.class,
            PlannerAgent.class,
            ImplementerAgent.class,
            ExecutorAgent.class
        })
    @Override
    String code(@K(UserRequest.class) String request,
                @K(WorkingDirectory.class) String workingDirectory);

    @SupervisorRequest
    static String request(@K(UserRequest.class) String userRequest,
                          @K(WorkingDirectory.class) String workingDirectory) {
        return "将'" + workingDirectory + "'作为工作目录,完成以下用户请求:" + userRequest;
    }
}

كما صمم المساعد وطور أربعة وكلاء فرعيين، بالإضافة إلى رسائل النظام والمستخدم الخاصة بهم: وكيل استكشاف لاستكشاف الكود الحالي، وكيل تخطيط لوضع خطة عمل، وكيل تنفيذ لكتابة الكود حسب الخطة، ووكيل تنفيذ لتجميع وتشغيل الكود. تم تزويد كل وكيل فرعي بالأدوات المناسبة: متصفح نظام الملفات، محرر الكود، مشغل الكود، إلخ.

كانت نتيجة التكرار الأول مثيرة للإعجاب. في الواقع، عادةً ما يتبع مساعدو الكود "المحترفون" نمطًا مشابهًا: تنفيذ أربع خطوات: الاستكشاف، التخطيط، التنفيذ، والتنفيذ، مع تنسيق على طريقة المشرف - وهذا يتوافق مع التنفيذ الذي نتج عن التجربة.

قدرة مساعد الكود على تصميم وتنفيذ مثل هذا النظام تشير إلى أنه لديه فهم معين لطريقة عمله الداخلية، ويمكنه تحويل هذا الفهم إلى تصميم نظام وكيل محدد.

جعل وكيل الترميز يعمللاختبار المشفر الذكي المصمم، طلب منه الباحثون كتابة بعض الأكواد التي تحتوي على أخطاء (Bug)، ثم استخدام النظام المنشأ حديثًا لإصلاحها. أنشأ المساعد فئة Calculator تحتوي على أربع طرق بها أخطاء دقيقة:

public class Calculator {
    public int sum(List<Integer> numbers) {
        int total = 0;
        for (int i = 0; i <= numbers.size(); i++) { // Bug: 应该是 i < numbers.size()
            total += numbers.get(i);
        }
        return total;
    }

    public double average(List<Integer> numbers) {
        if (numbers.isEmpty()) return 0;
        return sum(numbers) / numbers.size(); // Bug: 整数除法,应转为double
    }

    public int max(List<Integer> numbers) {
        if (numbers.isEmpty()) throw new IllegalArgumentException("列表不能为空");
        int max = 0; // Bug: 如果所有数都是负数,会返回0
        for (int n : numbers) {
            if (n > max) max = n;
        }
        return max;
    }

    public long factorial(int n) {
        if (n < 0) throw new IllegalArgumentException("n必须非负");
        long result = 1;
        for (int i = 1; i < n; i++) { // Bug: 应包含n,即 i <= n
            result *= i;
        }
        return result;
    }
}

ثم أنشأ اختبارًا، حيث استنسخ المجلد الذي يحتوي على Calculator إلى دليل مؤقت، وقام بتشغيل مشفر LangChain4j الذكي:

@Test
void workflow_should_fix_buggy_calculator() throws Exception {
    var coder = CoderAgenticSystem.supervisorCoder(coderModel());
    Path source = Path.of("src/test/resources/buggy-project");
    Path workDir = Path.of("/tmp/buggy-calculator");
    String result = coder.code(
        "测试当前失败,因为Calculator.java存在Bug。请修复它。",
        workDir.toAbsolutePath().toString());
    assertThat(result).isNotBlank();
    System.out.println("结果: " + result);
}

عند تشغيل الكود، تم استخدام نموذج gpt-4o من OpenAI، لأنه النموذج الافتراضي لـ LangChain4j ويدعم استدعاء الأدوات. ومع ذلك، لم تكن النتائج مرضية، وظهر خطأ بعد بضع دقائق:

dev.langchain4j.agentic.agent.AgentInvocationException: Failed to invoke agent method: public abstract...
منطق التقنية