🚀AI评测这么玩——使用开源评测引擎eval-engine快速实现AI评测

开源啦!欢迎大家Star&Fork,基于Java的开源评测引擎eval-engine:gitee.com/skeletron20...

介绍

eval-engine 是一个基于Java的评测引擎,功能包括:评测数据加载、评测接口调用、结果评估、结果上报。

  • 评测数据加载:支持加载评测数据,已实现从本地或者远程Excel文件加载数据,也可以扩展DataLoader类实现自定义的评测数据加载。
  • 评测接口调用:支持调用评测接口,获取评测结果,已实现调用Http流式&非流式接口调用,也可扩展ApiCompletion类实现自定义的接口调用。
  • 结果评估:支持对评测结果进行评估,没有实现任何评估其,需要扩展Scorer类实现自定义的评估器。
  • 结果上报:支持将评测结果上报到指定的数据源,已实现导出结果到本地Excel,可扩展Reporter类实现自定义的结果上报。

快速入门

引入依赖

xml 复制代码
<dependency>
    <groupId>io.gitee.skeletron2011</groupId>
    <artifactId>eval-engine</artifactId>
    <version>0.0.1</version>
</dependency>

快速实现一个评测

java 复制代码
import org.evaltool.evalengine.eval.model.ApiCompletionResult;
import org.evaltool.evalengine.eval.model.DataItem;
import org.evaltool.evalengine.eval.model.InputData;
import org.evaltool.evalengine.eval.model.ScorerResult;
import org.evaltool.evalengine.eval.node.api.ApiCompletion;
import org.evaltool.evalengine.eval.node.dataloader.DataLoader;
import org.evaltool.evalengine.eval.node.reporter.Reporter;
import org.evaltool.evalengine.eval.node.scorer.Scorer;
import org.evaltool.evalengine.workflow.WorkflowBuilder;
import org.testng.annotations.Test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class EvalTest {

    @Test
    public void test() {
        WorkflowBuilder builder = new WorkflowBuilder();

        // 评测数据集加载器
        DataLoader dataLoader = new DataLoader() {
            @Override
            public List<InputData> prepareDataList() {
                List<InputData> inputDatas = new ArrayList<>();
                inputDatas.add(new InputData(new HashMap<>(Map.of("query", "hello, world!"))));
                return inputDatas;
            }
        };

        // 接口调用器
        ApiCompletion apiCompletion = new ApiCompletion() {
            @Override
            protected ApiCompletionResult invoke(DataItem dataItem) {
                return new ApiCompletionResult(new HashMap<>(Map.of("reply", "hi!")));
            }
        };

        // 评估器
        Scorer scorer = new Scorer("评估器测试") {
            @Override
            public ScorerResult eval(DataItem dataItem) {
                return new ScorerResult("评估指标1", 1.0, "通过", null);
            }
        };

        // 结果上报器
        Reporter reporter = new Reporter() {
            @Override
            protected void report(List<DataItem> items) {
                items.forEach(System.out::println);
            }
        };

        // 构建&执行评测工作流
        builder.addNodes(dataLoader, apiCompletion, scorer, reporter)
                .addDependency(dataLoader, apiCompletion)
                .addDependency(apiCompletion, scorer)
                .addDependency(scorer, reporter).build().execute();
    }
}

技术文档

gitee.com/skeletron20...

评测相关资料

相关推荐
东小西9 分钟前
【SAA实战】第 2 篇:模型与消息——ReactAgent 怎么挑模型、怎么传消息
java·后端·spring
qo_tn15 分钟前
Docker_02-容器操作_11-怎样进入容器执行命令
后端
架构精进之路18 分钟前
Claude Code 深度使用指南:从"会用"到"用好"的7个进阶心法
后端·openai·ai编程
明月_清风23 分钟前
看完 DSH 文档后,我总结了这 7 个关键点
前端·后端·deepseek
元界metalite24 分钟前
Spring-MVC微服务接口怎么分层-网关Controller与Service边界
后端
省长37 分钟前
不想写代码,但想要集成一个登录页面?Sa-Token-Quick-Login 帮你实现!
java·后端·开源
铁皮饭盒40 分钟前
浏览器AI肯定离不开onnxruntime, 微软开源
前端·javascript·后端
得物技术40 分钟前
企业级 MultiAgent 的记忆系统:短期上下文与四层记忆架构实现|得物技术
java·人工智能·后端
MacroZheng1 小时前
又一个神级画图Skill开源,再见draw.io!
java·人工智能·后端
唐青枫2 小时前
把代码搬到编译期:Zig comptime、泛型与类型反射实战
后端