ToolLearning Eval:CodeFuse发布首个中文Function Call的大语言模型评测基准!

CodeFuse发布ToolLearning-Eval,首个中文工具学习评测基准,针对大模型在工具选择、调用及执行结果总结中的能力。评测数据包括清洗的开源数据、翻译后的英文数据和自建的训练集,旨在推动工具学习领域模型的发展和评估。

1. 背景

随着ChatGPT等通用大模型的出现,它们可以生成令人惊叹的自然语言,使得机器能够更好地理解和回应人类的需求,但在特定领域的任务上仅靠通用问答是无法满足日常工作需要。随着OpenAI推出了Function Call功能,工具学习能力越来越作为开源模型的标配,目前业界较有影响力的是ToolBench的英文数据集。但是中文数据集的稀缺,使得我们很难判断各个模型在中文型工具上Function Call的能力差异。

为弥补这一不足,CodeFuse发布了首个面向ToolLearning领域的中文评测基准ToolLearning-Eval,以帮助开发者跟踪ToolLearning领域大模型的进展,并了解各个ToolLearning领域大模型的优势与不足。ToolLearning-Eval按照Function Call流程进行划分,包含工具选择、工具调用、工具执行结果总结这三个过程,方便通用模型可以对各个过程进行评测分析。

目前,我们已发布了第一期的评测榜单,首批评测大模型包含CodeFuse、Qwen、Baichuan、Internlm、CodeLLaMa等开源大语言模型;我们欢迎相关从业者一起来共建ToolLearning Eval项目,持续丰富ToolLearning领域评测题目或大模型,我们也会定期更新评测集和评测榜单。

GitHub 地址:GitHub - codefuse-ai/codefuse-devops-eval: Industrial-first evaluation benchmark for LLMs in the DevOps/AIOps domain.

ModelScope 地址:devopseval-exam

2. 评测数据

2.1. 数据来源

ToolLearning-Eval最终生成的样本格式都为Function Call标准格式,采用此类格式的原因是与业界数据统一,不但能够提高样本收集效率,也方便进行其它自动化评测。经过统计,该项目的数据来源可以分为3类:

  1. 开源数据:对开源的ToolBench原始英文数据进行清洗;
  2. 英译中:选取高质量的ToolBench数据,并翻译为中文;
  3. 大模型生成:采用Self-Instruct方法构建了中文 Function Call 训练数据&评测集;

我们希望越来越多的团队能参与到中文的functioncall数据构建,共同优化模型调用工具的能力。我们也会不断地强化这部分开源的数据集。

2.2. 数据类别

ToolLearning-Eval里面包含了两份评测集,fcdata-zh-luban和fcdata-zh-codefuse。里面总共包含 239 种工具类别,涵盖了59个领域,包含了1509 条评测数据。ToolLearning-Eval的具体数据分布可见下图

2.3. 数据样例

在数据上我们完全兼容了 OpenAI Function Calling,具体格式如下:

Function Call的数据格式

### 基准测试评估的概念、工具与方法 基准测试(Benchmark Evaluation)是一种用于衡量软件性能的技术,通过标准化的方法来比较不同算法或系统的效率和效果。以下是关于基准测试的相关概念、常用工具以及具体实现方式。 #### 什么是基准测试? 基准测试是指利用一组预定义的标准程序或数据集对目标系统进行测量的过程。其目的是量化特定操作的时间消耗或其他资源需求[^1]。在开发过程中,这种技术可以帮助开发者识别瓶颈并优化代码逻辑。 #### 主要的基准测试方法 常见的基准测试方法可以分为两类:微基准测试(Micro-benchmarking) 和宏基准测试(Macro-benchmarking)[^2]: - **微基准测试**: 集中于单个函数或者很小一部分功能的表现分析; - **Macro-Benchmarks** : 测试整个应用程序的行为特征及其对外界环境变化作出响应的能力. 另外还有负载压力下的持续运行时间试验(load testing), 这种类型的实验通常用来验证当面临高并发请求时服务端能否保持稳定工作状态而不崩溃[3]. #### 软件工程领域内的几种流行工具介绍 对于不同的编程语言和技术栈而言, 存在着多种专门设计出来的框架支持执行高效的benchmarks: ##### Python生态中的解决方案 Pytest-benchmark 是一个非常受欢迎的选择因为它易于集成到现有的pytest项目里去同时提供了丰富的命令行选项让用户能够灵活定制化自己的testsuite.[^4] ```python import pytest from mymodule import very_fast_function @pytest.mark.benchmark( min_rounds=5, warmup=True ) def test_example(benchmark): result = benchmark(very_fast_function, arg1="value", kwarg='another value') assert isinstance(result,str)==True ``` 上述例子展示了如何借助`@pytest.mark.benchmark()`装饰器轻松完成一次简单的function call profiling作业. ##### Java平台上的替代品 JMH(JAVA Microbenchmark Harness)由Oracle官方维护发布, 它专攻低级别细节控制比如防止jvm提前编译影响最终成绩等问题发生; 同样也允许使用者自定义线程池大小等工作参数以便获得更加精确的结果反馈.^{5} 下面给出一段基于JMH API构建起来的基础模板供参考学习: ```java package org.sample; import org.openjdk.jmh.annotations.*; import java.util.concurrent.TimeUnit; public class MyBenchmark { @Benchmark public void measureSomething() { // The code you want to measure goes here. } } ``` 以上即为创建一个新的Java microbenchmark所需要遵循的基本结构形式之一. #### 结合实际应用场景举例说明 假设我们现在正在处理一项涉及大规模基因组数据分析的任务,在此情景下我们可以采用HiCExplorer作为我们的主要研究手段之一来进行交互式的可视化探索活动的同时还可以调用其中内置的一些统计学模型辅助我们更深入理解染色质三维空间构象特性等方面的知识点[^6]. 此外如果考虑到后期可能存在的扩展性需求的话那么不妨考虑引入Snakemake这类workflow management system从而简化复杂pipeline搭建流程提升整体工作效率水平. ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值