AppWorld: A Controllable World of Apps and People for Benchmarking Interactive Coding Agents

Harsh Trivedi, Tushar Khot, Mareike Hartmann, Ruskin Manku, Vinty Dong, Edward Li, Shashank Gupta, Ashish Sabharwal, Niranjan Balasubramanian 2024-07-26
自主智能体 代码生成 基准测试 API 调用 工具使用 交互式编码

一句话总结

AppWorld 构建了一个由 9 个日常应用和 457 个 API 组成的可控执行环境,以及包含 750 个任务的基准测试套件,专门用于评估需要通过编写复杂代码与多个应用交互的自主编码智能体。

背景与前置知识

理解本论文需要掌握以下基础概念:

  • 自主智能体(Autonomous Agent):能够根据自然语言指令,自动规划并执行一系列操作来完成任务的 AI 系统。与传统的单次问答不同,智能体需要在环境中反复交互——观察结果、调整策略、继续执行。
  • 工具使用/函数调用(Tool Use / Function Calling):大语言模型通过调用外部工具(如 API)来完成超出其自身能力的任务。例如查询数据库、发送消息、下单购物等。现有的基准测试大多只涉及简单的线性 API 调用序列。
  • 交互式代码生成(Interactive Code Generation):智能体不仅要调用 API,还需要编写包含复杂控制流(循环、条件判断、异常处理)的代码,并且在与环境交互的过程中迭代地修改和完善代码。
  • 沙箱执行环境(Sandboxed Execution Environment):一个安全隔离的代码运行环境,智能体在其中执行代码不会影响真实世界。AppWorld 就是这样一种环境。
  • 附带损害(Collateral Damage):智能体在完成主要任务时,意外修改或破坏了与任务无关的数据。例如,任务是给 Alice 转账,但智能体不小心删除了 Bob 的联系人信息。

核心思想详解

可以用一个生活中的类比来理解 AppWorld:想象你有一个数字助手,你需要让它帮你完成"查看冰箱里的食材清单(在笔记应用中),然后根据缺少的物品在购物应用下单,最后通过消息应用告诉家人买了什么"这样的跨应用任务。

现有的基准测试存在一个根本性缺陷:它们假设智能体只需要按顺序调用几个 API 就能完成任务。但现实世界中的日常数字任务远比这复杂——它们需要跨多个应用操作,需要编写包含循环、条件判断的代码,需要在执行过程中根据反馈动态调整。

AppWorld 的核心思想是构建一个完整的、可执行的、可控的数字世界

  • AppWorld Engine(引擎):这是一个包含 9 个日常应用(笔记、消息、通讯录、购物、银行、音乐、电影、天气、支出追踪)的执行环境,共有 457 个 API,模拟了约 100 个虚构用户的真实数字生活。引擎约 6 万行代码,每个应用都有完整的后端逻辑和数据库。
  • AppWorld Benchmark(基准):包含 750 个自然、多样且具有挑战性的任务。每个任务不仅要求智能体调用 API,还要求编写具有复杂控制流的代码。基准约 4 万行代码,包括任务描述、参考解答和自动化测试。
  • 评估机制:使用基于状态的单元测试(state-based unit tests)进行评估。这种评估方式允许不同的完成任务路径(殊途同归),同时检测附带损害(确保智能体没有意外修改无关数据)。

方法逐步拆解

关键公式/算法解读

实验设计分析

关键图表

局限性