Dria Pythonic 智能体基准测试 (DPAB)
引言
绝大多数(如果不是全部)的(据我们所知)大型语言模型 (LLM) 函数调用基准测试都通过模型基于 JSON 的结构化输出来工作,其中包含函数名称和要传递给函数的参数等元数据 [1]。这种方法非常直接且易于实现,并使事情非常确定,这对于创建可重现的基准测试来说非常有用。然而,通过结构化输出进行函数调用并非是唯一(也并非我们认为的最佳)进行函数调用的方式。本周早些时候,我们发布了 Dria-Agent 模型的首个版本,即 Dria-Agent-α-3B 和 Dria-Agent-α-7B。这些模型采用 Pythonic 函数调用 [2],它会提示模型输出一个可执行以生成所需输出的 Python 代码块。这种方法的动机在 Dria-Agent-a 博客文章中有详细解释。
DPAB-α 基准测试
作为 Dria-Agent-α 模型的后续,我们创建了一个新的基准测试,即 DPAB-α,它是 100 个问题的集合,这些问题通过与用于创建 Dria-Agent-α 模型训练数据非常相似的管道进行合成生成和验证。每个数据集行包含以下字段:
difficulty
:问题的难度,可以是easy
(简单)或hard
(困难)。function_schema_python
:用 Python 定义的函数,没有实现。function_schema_json
:JSON 格式的函数模式。mock_functions
:用返回值实现的模拟函数(Python)。这些用于生成和验证检查列表。user_query
:用户查询,是一个模型需要回答/解决的自然语言问题。checklist
:检查列表,是一个函数名称和值的列表,它们需要出现在代码执行的输出中。下面是一个检查列表的示例:
"checklist": {
"functions": [
"identify_large_files"
],
"values": [
[
"/dev/projects/project_a/large_file_1.zip",
"/dev/projects/project_b/large_dataset.csv"
]
]
}
这个检查列表强制模型必须使用 identify_large_files
函数,并且在执行输出中包含值 ["/dev/projects/project_a/large_file_1.zip", "/dev/projects/project_b/large_dataset.csv"]
。我们如何生成执行输出?我们使用 exec-python 中定义的执行引擎,这是一个 Python 包,允许我们执行任何带有任意数量预定义函数的 Python 代码并返回输出。该包是与 DPAB-α 基准测试同步开发的。现在,您可能会有一个问题:我们如何生成和验证检查列表?我们使用了 Dria-Agent-a 博客文章的数据验证部分中描述的方法,其中我们基本上使用了一个三步管道来生成一个有效的检查列表:
Decision
:验证模型决定检查列表是否有效。Justification
:验证模型根据检查列表、模拟函数和用户查询为其决定提供理由。Revision
:如果检查列表无效,验证模型根据理由对其进行修改。
初步结果
在需要创造性或多步骤解决方案的场景中,Pythonic 函数调用性能通常优于基于 JSON 的函数调用,这强化了 Pythonic 函数调用可能更自然、更强大的前提。
我们以严格模式运行了首个版本的 DPAB-α 基准测试,对许多开源和闭源模型进行了测试,结果如下:
模型名称 | Pythonic | JSON |
---|---|---|
闭源模型 | ||
Claude 3.5 Sonnet | 87 | 45 |
o1-preview-2024-09-12 | 55 | 39 |
o1-mini-2024-09-12 | 59 | 35 |
gpt-4o-2024-11-20 | 60 | 30 |
开源模型 | ||
> 1000 亿参数 | ||
DeepSeek V3 (685B) | 63 | 33 |
MiniMax-01 | 62 | 40 |
Llama-3.1-405B-Instruct | 60 | 38 |
> 300 亿参数 | ||
Qwen-2.5-Coder-32b-Instruct | 68 | 32 |
Qwen-2.5-72b-instruct | 65 | 39 |
Llama-3.3-70b-Instruct | 59 | 40 |
QwQ-32b-Preview | 47 | 21 |
< 200 亿参数 | ||
Dria-Agent-a-7B | 70 | 38 |
Qwen2.5-Coder-7B-Instruct | 44 | 39 |
Dria-Agent-a-3B | 72 | 31 |
Qwen2.5-Coder-3B-Instruct | 26 | 37 |
Qwen-2.5-7B-Instruct | 47 | 34 |
Phi-4 (14B) | 55 | 35 |
克隆 DBAP 仓库以运行评估。
未来工作
除了 Dria-Agent 系列模型,我们还将改进首个版本的 DPAB,并发布带有新智能体设置和更困难问题的 DPAB-β。
参考文献
- [1] Yan, Fanjia, et al. Berkeley Function Calling Leaderboard. 2024, https://gorilla.cs.berkeley.edu/blogs/8_berkeley_function_calling_leaderboard.html.
- [2] andthattoo, ‘Atakan Tekparmak’. Dria-Agent-a. https://huggingface.co/blog/andthattoo/dria-agent-a.