Daily Tech Briefing
AI 科技速览
每天 5 分钟内学习 AI。获取最新的人工智能新闻,理解其重要性,并学习如何将其应用于您的工作。
InfoQ AI · 2026/7/31 15:41:00

自构建智能体:一项 LangChain4j 实验
AI 中文解读
让AI照着说明书“克隆”自己?这是LangChain4j框架的一次大胆实验:研究人员把技术文档丢给代码助手,让它设计一个和自己一样能写代码、测代码、改代码的多智能体系统。结果AI不仅看懂了API,还真构建出了4个分工明确的“小助手”,分别负责探索代码、制定计划、动手修改和运行调试,像一支迷你开发团队。更神奇的是,这个AI生成的系统能实际修复代码里的错误,证明框架本身接口清晰,AI的理解和执行力足够可靠。这次实验也顺带测试了框架的监控工具,相当于给AI做了一次“解剖观察”。对我们普通人来说,这意味着未来的编程工具会更聪明——你不需要懂编程,直接告诉AI“这里算错了”,它就能自动定位问题、修改代码,像给电脑请了一位贴身工程师。虽然目前还在实验阶段,但AI“自举”能力的突破,正让软件开发的自动化门槛大幅降低。
我们决定尝试一个元实验:将 LangChain4j 的文档交给一个代码助手,并要求它参照自己构建一个智能体。具体来说,我们希望它能设计一个多智能体系统,使它能够像人类工程师或代码助手那样编写、测试和调试代码。大语言模型(LLM)能够仅凭文档就构建出自己,这一事实从两个方面印证了 LangChain4j 的优势。首先,其 API 足够清晰易懂,模型可以直接使用;其次,该框架提供了充分的协调能力,使生成的系统能够在真实的调试任务中端到端地运行。该项目还让我们有机会对 LangChain4j 中新增的监控工具做了压力测试。在让一个 AI 构建另一个 AI 时,确实需要深入了解其内部运作机制。本文将详细说明实验过程,并介绍最终生成的项目。该项目已经发布在这个代码库中。通过氛围编码实现一个智能体系统为了让代码助手参照自己构建一个智能编码器,我们编写了以下提示:通过文档和源代码研究 LangChain4j 智能体框架的 API 和功能,并在此基础上设计一个智能编码器,使其成为你自己的克隆体。经过几分钟的思考并根据该提示进行操作后,代码助手认定, LangChain4j 的监督者模式最适合此任务。它提出了一个初步架构:public interface SupervisorCoderSystem { @SupervisorAgent(description = """ A multi-agent coding assistant that can explore codebases, plan implementations, write/edit code, and run builds/tests. It orchestrates specialized sub-agents to fulfill coding requests. """, 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 "Using '" + workingDirectory + "' as your working directory, fulfill the following user request: " + userRequest; }}复制代码代码助手还设计并开发了 4 个由监督代理使用的子代理,以及相应的系统和用户消息。这些代理分析了现有代码,制定了执行待执行操作的计划,按照计划实施了这些操作,并通过编译和执行生成的代码使其投入运行。随后,代码助手为每个代理实现并正确地提供了必要的工具:为“资源管理器”代理提供文件系统资源管理器,为“实现者”代理提供代码编辑器,并为“执行者”代理提供运行代码的途径。首次迭代的成果令人印象深刻。如果你曾经使用过代码助手,就会知道这基本上就是现实世界中“专业”助手所采用的模式:它们通常执行的操作与我们实验中生成的 4 个代理所模拟的四项操作相同。随后,助手会以类似监督者的方式协调这些操作来完成当前任务,这与我们的实现方式如出一辙。编程助手能够设计并实现这样的系统,表明它至少在一个比较高的层面上了解了自身的内部运作机制,并且能够将这种理解转化为智能体系统的具体设计。将智能编码器投入应用为了测试代码助手设计的智能编码器,我们让它编写了一些存在错误的代码,然后使用新创建的系统来修复这些错误。代码助手生成了下面这个 Calculator 类,其中包含 4 个存在轻微错误的方法:/*** 一个简单的计算器,可以对数字列表执行基本的算术运算。*/public class Calculator { /** * 返回列表中所有数值的和。 */ public int sum(List<Integer> numbers) { int total = 0; for (int i = 0; i <= numbers.size(); i++) { total += numbers.get(i); } return total; } /** * 返回列表中所有数值的平均值。 */ public double average(List<Integer> numbers) { if (numbers.isEmpty()) { return 0; } return sum(numbers) / numbers.size(); } /** * 返回列表中所有数值的最大值。 * 如果列表为空,则抛出 IllegalArgumentException 异常。 */ public int max(List<Integer> numbers) { if (numbers.isEmpty()) { throw new IllegalArgumentException("List must not be empty"); } int max = 0; for (int n : numbers) { if (n > max) { max = n; } } return max; } /** * 返回 n 的阶乘。 * 如果 n 为负,抛出 IllegalArgumentException 异常。 */ public long factorial(int n) { if (n < 0) { throw new IllegalArgumentException("n must be non-negative"); } long result = 1; for (int i = 1; i < n; i++) { result *= i; } return result; }}复制代码接下来,它生成了一项测试。该测试将包含 Calculator 类的文件夹克隆到了一个临时目录中,并针对该文件夹运行 LangChain4j 智能代码生成器:@Testvoid 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");Cloud native & AI String result = coder.code(sub-agents + "The tests are currently failing because Calculator.java has bugs. "gpt-5-mini workDir.toAbsolutePath().toString()); assertThat(result).isNotBlank(); System.out.println("Result: " + result);}复制代码现在运行下代码,看看这个基于常见 LLM 的实现是否真的能正常工作。我们为监督器和编码智能体都配置了 OpenAI 的 gpt-4o。选择该模型是因为 OpenAI API 是 LangChain4j 中的默认 base URL,而 gpt-4o 则是其默认模型。此外,该模型还支持工具调用,这也是一个额外的好处。遗憾的是,结果并不尽如人意。运行了几分钟后,我们收到了一个错误提示:dev.langchain4j.agentic.agent.AgentInvocationException: Failed to invoke agent method: public abstract java.lang.String dev.langchain4j.agentic.
分享
阅读原文 ↗