BFCL-v3#
概述#
BFCL(Berkeley Function Calling Leaderboard)v3 是首个全面且可执行的函数调用评估基准,用于评估大语言模型(LLM)调用函数的能力。它评估了多种形式的函数调用、多样化的场景以及可执行性。
任务描述#
任务类型:函数调用 / 工具使用评估
输入:包含可用函数定义的用户查询
输出:带有正确参数的函数调用
类别:AST_NON_LIVE、AST_LIVE、RELEVANCE、MULTI_TURN
主要特性#
全面的函数调用评估
测试简单、多重和并行函数调用
多语言支持(Python、Java、JavaScript)
相关性检测(处理无关查询)
多轮对话中的函数调用
提供实时 API 端点用于执行测试
评估说明#
评估前需安装
pip install bfcl-eval==2025.10.27.1对于原生支持函数调用的模型,请设置
is_fc_model=Trueunderscore_to_dot参数控制函数名称的格式化方式详细设置请参阅 使用文档
结果按类别(AST、相关性、多轮)细分
属性#
属性 |
值 |
|---|---|
基准测试名称 |
|
数据集ID |
|
论文 |
N/A |
标签 |
|
指标 |
|
默认示例数 |
0-shot |
评估划分 |
|
数据统计#
指标 |
值 |
|---|---|
总样本数 |
4,441 |
提示词长度(平均) |
291.25 字符 |
提示词长度(最小/最大) |
36 / 10805 字符 |
各子集统计数据:
子集 |
样本数 |
提示平均长度 |
提示最小长度 |
提示最大长度 |
|---|---|---|---|---|
|
400 |
119.66 |
57 |
303 |
|
200 |
120.75 |
65 |
229 |
|
200 |
298.92 |
69 |
781 |
|
200 |
432.17 |
88 |
1249 |
|
100 |
228.93 |
138 |
531 |
|
50 |
222.34 |
118 |
637 |
|
258 |
161.74 |
47 |
1247 |
|
1,053 |
138.76 |
42 |
4828 |
|
16 |
150.44 |
88 |
365 |
|
24 |
217.67 |
72 |
650 |
|
240 |
85.96 |
55 |
203 |
|
18 |
263.83 |
71 |
1214 |
|
882 |
188.26 |
36 |
10805 |
|
200 |
803.33 |
106 |
1756 |
|
200 |
806.75 |
110 |
1760 |
|
200 |
858.2 |
167 |
1791 |
|
200 |
803.29 |
106 |
1756 |
样例示例#
子集:simple
{
"input": [
{
"id": "15e84989",
"content": "[[{\"role\": \"user\", \"content\": \"Find the area of a triangle with a base of 10 units and height of 5 units.\"}]]"
}
],
"target": "[{\"calculate_triangle_area\": {\"base\": [10], \"height\": [5], \"unit\": [\"units\", \"\"]}}]",
"id": 0,
"group_id": 0,
"subset_key": "simple",
"metadata": {
"id": "simple_0",
"multi_turn": false,
"functions": [
{
"name": "calculate_triangle_area",
"description": "Calculate the area of a triangle given its base and height.",
"parameters": {
"type": "dict",
"properties": {
"base": {
"type": "integer",
"description": "The base of the triangle."
},
"height": {
"type": "integer",
"description": "The height of the triangle."
},
"unit": {
"type": "string",
"description": "The unit of measure (defaults to 'units' if not specified)"
}
},
"required": [
"base",
"height"
]
}
}
],
"tools": [
{
"type": "function",
"function": {
"name": "calculate_triangle_area",
"description": "Calculate the area of a triangle given its base and height. Note that the provided function is in Python 3 syntax.",
"parameters": {
"type": "object",
"properties": {
"base": {
"type": "integer",
"description": "The base of the triangle."
},
"height": {
"type": "integer",
"description": "The height of the triangle."
},
"unit": {
"type": "string",
"description": "The unit of measure (defaults to 'units' if not specified)"
}
},
"required": [
"base",
"height"
]
}
}
}
],
"missed_functions": "{}",
"initial_config": {},
"involved_classes": [],
"turns": [
[
{
"role": "user",
"content": "Find the area of a triangle with a base of 10 units and height of 5 units."
}
]
],
"language": "Python",
"test_category": "simple",
"subset": "simple",
"ground_truth": [
{
"calculate_triangle_area": {
"base": [
10
],
"height": [
5
],
"unit": [
"units",
""
]
}
}
],
"should_execute_tool_calls": false,
"missing_functions": {},
"is_fc_model": true
}
}
提示模板#
未定义提示模板。
额外参数#
参数 |
类型 |
默认值 |
描述 |
|---|---|---|---|
|
|
|
在评估时将函数名中的下划线转换为点号。 |
|
|
|
表示被评估的模型原生支持函数调用。 |
使用方法#
使用 CLI#
evalscope eval \
--model YOUR_MODEL \
--api-url OPENAI_API_COMPAT_URL \
--api-key EMPTY_TOKEN \
--datasets bfcl_v3 \
--limit 10 # 正式评估时请删除此行
使用 Python#
from evalscope import run_task
from evalscope.config import TaskConfig
task_cfg = TaskConfig(
model='YOUR_MODEL',
api_url='OPENAI_API_COMPAT_URL',
api_key='EMPTY_TOKEN',
datasets=['bfcl_v3'],
dataset_args={
'bfcl_v3': {
# subset_list: ['simple', 'multiple', 'parallel'] # 可选,评估特定子集
# extra_params: {} # 使用默认额外参数
}
},
limit=10, # 正式评估时请删除此行
)
run_task(task_cfg=task_cfg)