ling-baseling-base

Arena 评测

Agent 基准测试与多 Agent 对比

在线 Playground

在浏览器中直接体验本页相关 API,无需本地安装 Go 环境。

Arena 评测

agentkit/arenaAgent 执行与评测分离,用统一任务集对比不同 Agent、模型或配置。

核心类型

type Task struct {
    Name      string
    Input     string
    Evaluator Evaluator
    SessionID string // 可选,默认 arena:<task-name>
}

type Runner interface {
    Run(ctx context.Context, task Task) (Result, error)
}

type Evaluator interface {
    Evaluate(ctx context.Context, task Task, output string) (score float64, pass bool, feedback string)
}

单 Agent 评测

import "github.com/LingByte/ling-base/agentkit/arena"

tasks := []arena.Task{
    {
        Name:  "capital",
        Input: "What is the capital of France?",
        Evaluator: arena.ContainsEvaluator{Required: []string{"Paris"}},
    },
    {
        Name:  "math",
        Input: "What is 17 * 23?",
        Evaluator: arena.ExactEvaluator{Expected: "391"},
    },
}

results := (&arena.Arena{Runner: myRunner}).RunAll(ctx, tasks, 4)
fmt.Println(arena.Summarize(results))

多 Agent 对比

suite := arena.RunSuite(ctx, tasks, []arena.Competitor{
    {Name: "gpt-4o", Runner: runnerA},
    {Name: "claude", Runner: runnerB},
}, 4)

for _, entry := range arena.RankSuite(suite) {
    fmt.Printf("%s: avg=%.2f pass=%.0f%%\n",
        entry.Name, entry.Summary.AverageScore, entry.Summary.PassRate*100)
}

内置 Evaluator

Evaluator说明
ExactEvaluator标准化精确匹配
ContainsEvaluator必须包含指定片段,支持部分得分
FuncEvaluator自定义 bool 判定
ScoreEvaluator自定义 0–1 分数

接入 go-agent

runner := arena.AgentRunner{Agent: myLLMAgent}
arena.Arena{Runner: runner}.RunAll(ctx, tasks, 1)

结果指标

Result 可记录:耗时、Token 用量、工具调用次数、重试次数、成本、元数据(Runner 提供时)。

On this page