No project description provided
Project description
AgentBenchKit
1. 项目简介
本项目是一个用于评估基于langchain架构的Agent或LLM的通用测试框架——agentbenchkit。
它支持加载多种数据集,并对自定义的 AI Agent 进行benchmark测试与准确率分析。
特性:
- 可基于api测试
- 支持通过配置文件测试
- 内置多种标准数据集加载器(如视觉benchmark:ERQA,文本benchmark:MMLU)
- 可扩展的自定义数据加载器设计
- 集成RAY 并行代理并收集答案
- 内置评分机制(如 Exact Match, IOU 等),且支持自定义评分逻辑
- 可集成 LangFuse 实现追踪记录功能
2. 安装指南
pip install -r requirements.txt
3. 快速开始
以下步骤展示如何为你的 AI Agent 编写测试脚本:
步骤一:定义构建函数
你需要实现三个关键组件作为参数传递给 BenchmarkRunner 构造函数:
(1)构造函数/API地址
如返回一个可调用对象,其必须具有 .ainvoke(state) 方法来异步处理输入状态。
#for demonstration
import react_agent
def build_agent():
agent = react_agent.AgentGraph(config_path="examples")
return agent
from langchain_openai import ChatOpenAI
def build_llm():
llm = ChatOpenAI(model="model", base_url="base_url")
return llm
如使用api,仅需传输api地址:
http://127.0.0.1:8000/api/v1/agent/
(2)state_builder 函数
接收从benchmark提取的问题数据,将其转换成 agent 所需的状态。
对于llm,我们提供默认状态构建函数及配套的结果解析函数,如您需要自定义提示词,
则需您自行实现相关函数。
我们提供的问题格式为以下格式字典,问题对象名为 example:
| 键名 | 类型 | 描述 |
|---|---|---|
image |
List[Image.Image] | 测试集中的图片列表 |
question |
str | 测试集中的问题与选项及提示词(如有) |
correct_answer |
any | 测试集中的正确答案 |
task_name |
str | 测试集中任务的类别名称(如有) |
sample_id |
str | 测试集中id,为测试集名称_idx |
def state_builder(example):
public_urls = ["",""]
initial_state = {
"question": example["question"],
"original_figure_url": public_urls,
"current_turn": 1,
"max_turns": 10,
}
return initial_state
(3)result_parser 函数
解析 agent 输出的结果字符串,提取最终答案部分。
def result_parser(raw_answer):
return raw_answer.content
步骤二:新建一个benchmarkrunner对象,并传入您定义的函数及其它参数
创建一个主程序文件,在其中完成相关设置: 您可以通过list_dataset_loaders()函数查看当前支持的数据集。
# mock示例,请使用您的实际agent
import os, sys
from pathlib import Path
PROJECT_ROOT = Path(__file__).resolve().parents[2]
sys.path.insert(0,str(PROJECT_ROOT/"agentbenchkit"))
import react_agent
from agentbenchkit import BenchmarkRunner
from agentbenchkit import print_dataset_loaders
def state_builder(example):
public_urls = ["",""]
initial_state = {
"question": example["question"],
"original_figure_url": public_urls,
"current_turn": 1,
"max_turns": 10,
}
return initial_state
def result_parser(raw_answer):
return raw_answer.content
def build_agent():
agent = react_agent.AgentGraph()
return agent
if __name__ == "__main__":
print_dataset_loaders()
runner = BenchmarkRunner(build_agent, "erqa", state_builder, result_parser, 2)
runner.run("results", 2)
4. API文档说明
BenchmarkRunner(agent_factory, dataset_loader_name, state_builder_func, result_parser_func, num_workers)
| 参数 | 类型 | 描述 |
|---|---|---|
agent_factory |
Callable or str | 创建一个新的 agent/llm 实例,或api地址 |
dataset_loader_name |
str | 指定使用的数据集名称 |
state_builder_func |
Callable | 将原始样本转化为 agent 输入状态 |
result_parser_func |
Callable | 解析 agent 回复获取最终答案 |
evaluator |
str or list[str] | 评估方式(集) |
num_workers |
int | 并发工作线程数 |
.run(results_dir, limit=None, indices=[1,2])
启动基准测试过程。
| 参数 | 类型 | 描述 |
|---|---|---|
results_dir |
str | 存放输出结果的目录路径 |
limit |
int | 限制测试样本数量,默认无限制 |
indices |
list[int] | 指定运行的样本索引,优先级高于limit |
5. 结果输出说明
每次运行将在指定目录生成如下文件:
{benchmarkname}_results.json: 包含benchmark下每个样本的预测结果与正确答案{benchmark}_evaluation.json: 统计各benchmark下的准确率报告
6. 自定义扩展
你可以注册方式添加新的数据集支持或评估逻辑:
添加新数据集
添加评分规则
7.使用llm模型API评价agent结果
直接使用大语言模型API比较agent答案与标准答案的一致性,通过 agentbenchkit/evaluator/llm_compare_config.yaml进行配置
| 参数 | 类型 | 描述 |
|---|---|---|
llm_evaluator.type |
str | general: 通识评价 |
1 |
str | math: 数学评价 |
2 |
str | default: 与general等价 |
llm_evaluator.parameters.model |
str | 你的模型名字 |
llm_evaluator.parameters.base_url |
str | 你的模型url |
llm_evaluator.parameters.api_key |
str | 你的API Key |
llm_evaluator.parameters.max_tokens |
str | 最大token数 |
8. 高级特性
使用 LangFuse 记录日志
如果你希望记录每次交互详细信息,可以通过环境变量启用 LangFuse:
export LANGFUSE_PUBLIC_KEY=your_public_key
export LANGFUSE_SECRET_KEY=your_secret_key
export LANGFUSE_HOST=https://cloud.langfuse.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentbenchkit-0.0.1.tar.gz.
File metadata
- Download URL: agentbenchkit-0.0.1.tar.gz
- Upload date:
- Size: 32.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.2 cpython/3.12.10 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce6b963c57b306af3c014dbb1378bb2721596994d80c78ee0565b95b4c5ef48b
|
|
| MD5 |
ba184c7ba60f05eb780dbb8aff37d2e9
|
|
| BLAKE2b-256 |
2a298ed73e627e9788e195fddb8b2e209b567f5ab5e4e2ad6cd88b08fe660848
|
File details
Details for the file agentbenchkit-0.0.1-py3-none-any.whl.
File metadata
- Download URL: agentbenchkit-0.0.1-py3-none-any.whl
- Upload date:
- Size: 62.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.2 cpython/3.12.10 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6b1d4f0998cd1c8f23b0d3a83fb914848a868510fe4604b25a138673bb1c9bb
|
|
| MD5 |
4a2682bd1982879afe5c6518e77f0eb9
|
|
| BLAKE2b-256 |
6fc4edce5675b82b08af43e1d45c02e80ca011562fd93276ee39bdab464fdb66
|