Skip to content

Latest commit

 

History

History
169 lines (131 loc) · 4.39 KB

File metadata and controls

169 lines (131 loc) · 4.39 KB

ArkBench

ArkTS 代码生成能力评测基准

简介

ArkBench 参考业界知名的 SWE-bench 项目,构建了面向 HarmonyOS 应用开发场景的代码生成评测基准。

项目提供了完整的推理与评测流程,能够自动化评估大语言模型在真实开发场景下的代码修复能力。

数据集来源

评测项目来源于:

  • HarmonyOS 官方示例
  • 行业模板
  • HMOS 代码工坊

ArkTs SWE Bench

一、运行环境说明

1. python环境一键安装

# 1.同步环境
uv sync

# 2.安装最新hypium (因为http://hypium.rnd.huawei.com/simple非常慢,所以单独安装)
uv pip install xdevice xdevice-devicetest xdevice-aosp xdevice-ohos xdevice-adaptive_engine hypium --index-url http://hypium.rnd.huawei.com/simple --trusted-host hypium.rnd.huawei.com --extra-index-url https://mirrors.tools.huawei.com/pypi/simple --trusted-host mirrors.tools.huawei.com

# 3.如果后续安装其他包需要加--inexact参数
uv add xxx
uv sync --inexact

2. 配置命令行工具

参考官方文档 搭建流水线

3. 解压评测工程集repos到项目根目录

评测工程集来源于:HarmonyOS 官方示例、行业模板、HMOS 代码工坊。

解压后的目录结构:

repos/
├── HarmonyOS_Samples/
├── Industry_Templates/
└── openharmony/

img.png

4. 安装opencode

npm install -g opencode-ai

opencode底层使用 ripgrep 进行grep, glob, list tools等操作, 需要进行安装。

# 检查是否安装过
rg --version

choco install ripgrep
# 或者
scoop install ripgrep
# 或者
winget install BurntSushi.ripgrep.MSVC

5. 设置 DEVECO_HOME、NODE_HOME

指向 DevEco Studio 安装目录,编译工具 hvigorw 和调试工具 hdc 依赖此路径。

# Windows(永久生效,需重启终端)
[System.Environment]::SetEnvironmentVariable("DEVECO_HOME", "D:\\DevEco Studio", "User")

# 或临时生效
$env:DEVECO_HOME = "D:\\DevEco Studio"

验证路径结构:

$DEVECO_HOME/
├── tools/
│   ├── node/node.exe
│   ├── hvigor/bin/hvigorw.js
│   └── ohpm/bin/
├── sdk/
│   └── default/openharmony/toolchains/hdc.exe
└── jbr/bin/

检查NODE_HOME

$env:NODE_HOME

6. 连接真机设备

要求:Harmony OS >= 6.0.0(20)

验证设备连接:

hdc list targets

应显示设备序列号。

二、运行推理

opencode

# 进行推理
python arktsbench/inference/run_inference.py \
  --run_id 100_beta \
  --model glm-5 \
  --agent opencode \
  --base_url https://your-api-endpoint.com \
  --api_key your-api-key

推理完成后会在result/100_beta_glm-5_opencode路径下生成pred.json推理结果文件。

注意: --base_url--api_key 参数为必填项,用于连接模型服务。

codegenie

# 进行推理(使用内置模型)
python arktsbench/inference/run_inference.py \
  --run_id 100_beta \
  --dataset ArkTs-SWE-bench.json \
  --model glm-5 \
  --agent codegenie

codegenie 使用内置模型,--model 参数指定内置模型名称。

三、运行评测

# 进行模型评测(使用推理生成的预测结果,run_id 需与推理时一致)
python arktsbench/evaluation/run_evaluation.py \
  --run_id 100_beta \
  -p result/100_beta_glm-5_opencode/pred.json

# 进行真值评测(使用数据集自带的正确答案)
python arktsbench/evaluation/run_evaluation.py --run_id 101_beta

四、评测结果

评测完成后,结果保存在 result/{run_id}_{model}_{agent}/ 目录:

汇总报告:

  • summary.json - 汇总报告(包含统计数据、成功率、各实例结果等)

各实例详情({instance_id}/ 目录):

  • report.json - 单实例评测报告
  • result.json - 推理结果
  • model_patch.diff - 模型生成的代码补丁
  • ground_truth.diff - 真值补丁
  • test.gif - 测试执行录屏
  • test_output.txt - 测试输出日志
  • run_inference.log - 推理详细日志
  • run_instance.log - 评测详细日志

TODO

  • 推理时清空.git历史提交,避免模型看到答案
  • 接入codegenie
  • 获取token消耗数
  • 接入codeagent
  • 评测保存完整报告文件
  • 多台真机并行评测, 提高评测效率