CodeARC: Benchmarking Reasoning Capabilities of LLM Agents for Inductive Program Synthesis
作者: Anjiang Wei, Tarun Suresh, Jiannan Cao, Naveen Kannan, Yuheng Wu, Kai Yan, Thiago S. F. X. Teixeira, Ke Wang, Alex Aiken
分类: cs.PL, cs.AI, cs.CL, cs.LG
发布日期: 2025-03-29 (更新: 2025-08-08)
🔗 代码/项目: GITHUB
💡 一句话要点
CodeARC:通过交互式程序合成基准测试LLM智能体的推理能力
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 归纳程序合成 大型语言模型 交互式学习 基准测试 代码推理
📋 核心要点
- 现有归纳程序合成评估方法依赖静态数据集,缺乏交互反馈,难以模拟真实场景,限制了对LLM智能体推理能力的有效评估。
- CodeARC构建交互式评估框架,智能体通过查询目标函数、合成候选函数和差分测试迭代优化,模拟真实逆向工程场景。
- CodeARC包含1114个函数的大规模基准测试,实验表明o3-mini表现最佳,微调LLaMA-3.1-8B-Instruct可显著提升性能。
📝 摘要(中文)
归纳程序合成,或称通过示例编程,需要从输入-输出示例中合成能够泛化到未见输入的函数。尽管大型语言模型智能体在自然语言引导的编程任务中展现出潜力,但它们执行归纳程序合成的能力尚未得到充分探索。现有的评估协议依赖于静态的示例集和预留的测试集,在合成函数不正确时无法提供反馈,并且未能反映逆向工程等真实场景。我们提出了CodeARC,即代码抽象与推理挑战,这是一个新的评估框架,智能体通过查询隐藏的目标函数来交互,合成候选函数,并使用差分测试预言机迭代地改进它们的解决方案。这种交互式设置鼓励智能体执行函数调用并基于反馈进行自我纠正。我们构建了第一个大规模的通用归纳程序合成基准,包含1114个函数。在评估的18个模型中,o3-mini表现最佳,成功率为52.7%,突显了这项任务的难度。在精选的合成轨迹上微调LLaMA-3.1-8B-Instruct可产生高达31%的相对性能提升。CodeARC为评估基于LLM的程序合成和归纳推理提供了一个更真实和具有挑战性的测试平台。我们的代码、数据和模型可在https://github.com/Anjiang-Wei/CodeARC公开获取。
🔬 方法详解
问题定义:论文旨在解决大型语言模型(LLM)智能体在归纳程序合成任务中的推理能力评估问题。现有评估方法主要依赖静态数据集,缺乏与目标函数的交互,无法提供有效的反馈,难以模拟真实场景,例如逆向工程。这导致对LLM智能体程序合成能力的评估不够全面和准确。
核心思路:论文的核心思路是构建一个交互式的评估框架,允许LLM智能体通过与隐藏的目标函数进行交互来学习和改进其程序合成能力。通过查询目标函数、合成候选函数并使用差分测试预言机进行迭代优化,智能体可以获得反馈并进行自我纠正,从而提高程序合成的准确性和泛化能力。这种交互式方法更贴近真实世界的程序合成场景。
技术框架:CodeARC的整体框架包含以下几个主要模块: 1. 目标函数:一个隐藏的、待逆向工程的函数。 2. 智能体:负责与目标函数交互、合成候选函数并进行自我纠正的LLM。 3. 查询接口:允许智能体通过输入新的参数来查询目标函数,获取输出结果。 4. 差分测试预言机:用于比较候选函数和目标函数在不同输入下的输出结果,提供反馈信息。 5. 评估指标:用于衡量智能体程序合成的准确性和效率。
关键创新:CodeARC的关键创新在于其交互式的评估框架。与传统的静态评估方法不同,CodeARC允许智能体通过与目标函数进行交互来学习和改进其程序合成能力。这种交互式方法更贴近真实世界的程序合成场景,并且可以更全面地评估LLM智能体的推理能力。此外,CodeARC还构建了一个大规模的通用归纳程序合成基准,为研究人员提供了一个统一的评估平台。
关键设计:CodeARC的关键设计包括: 1. 目标函数的多样性:基准测试包含1114个不同的函数,涵盖各种编程范式和难度级别。 2. 差分测试预言机的有效性:预言机能够准确地比较候选函数和目标函数的输出结果,并提供有效的反馈信息。 3. 评估指标的合理性:评估指标能够全面地衡量智能体程序合成的准确性和效率。 4. 微调策略:通过在精选的合成轨迹上微调LLaMA-3.1-8B-Instruct模型,显著提升了模型在CodeARC上的性能。
🖼️ 关键图片
📊 实验亮点
实验结果表明,在CodeARC基准测试中,o3-mini模型表现最佳,成功率为52.7%,但整体性能仍有提升空间。通过在精选的合成轨迹上微调LLaMA-3.1-8B-Instruct模型,性能提升高达31%。这些结果表明,CodeARC是一个具有挑战性的基准测试,可以有效地评估和促进LLM智能体的程序合成能力。
🎯 应用场景
CodeARC的研究成果可应用于自动化程序合成、软件逆向工程、代码修复和漏洞检测等领域。通过提高LLM智能体的程序合成能力,可以降低软件开发成本,提高软件质量,并增强软件系统的安全性。此外,CodeARC作为一个评估基准,可以促进LLM在程序理解和生成方面的研究进展。
📄 摘要(原文)
Inductive program synthesis, or programming by example, requires synthesizing functions from input-output examples that generalize to unseen inputs. While large language model agents have shown promise in programming tasks guided by natural language, their ability to perform inductive program synthesis is underexplored. Existing evaluation protocols rely on static sets of examples and held-out tests, offering no feedback when synthesized functions are incorrect and failing to reflect real-world scenarios such as reverse engineering. We propose CodeARC, the Code Abstraction and Reasoning Challenge, a new evaluation framework where agents interact with a hidden target function by querying it with new inputs, synthesizing candidate functions, and iteratively refining their solutions using a differential testing oracle. This interactive setting encourages agents to perform function calls and self-correction based on feedback. We construct the first large-scale benchmark for general-purpose inductive program synthesis, featuring 1114 functions. Among 18 models evaluated, o3-mini performs best with a success rate of 52.7%, highlighting the difficulty of this task. Fine-tuning LLaMA-3.1-8B-Instruct on curated synthesis traces yields up to a 31% relative performance gain. CodeARC provides a more realistic and challenging testbed for evaluating LLM-based program synthesis and inductive reasoning. Our code, data, and models are publicly available at https://github.com/Anjiang-Wei/CodeARC