perplexityai/wandr

GitHub: perplexityai/wandr

WANDR 是一个评估 AI 模型在广泛研究和结构化信息提取任务上表现的综合基准测试框架。

Stars: 4 | Forks: 1

# WANDR WANDR 是一个用于广泛研究的基准测试:结构化、大容量的信息工作,需要广泛的探索、系统的提取和有证据支持的答案。其实现分为四个独立且实用的层: 1. **WANDR 源数据。** `reference/wandr_tasks/` 包含 WANDR 源格式下的可编辑任务配置、schema、prompt 和 artifacts。该源树是可移植数据,可以独立于此代码库进行托管。 2. **WANDR 到 Harbor 的 adapter。** `adapters/wandr/` 使用 WANDR 源树并确定性地生成 Harbor 任务包。它负责格式转换和打包,而不涉及 benchmark 语义。 3. **Harbor 格式的 WANDR 任务。** `datasets/wandr/` 包含生成的、自包含的任务包,这些任务包也通过 Harbor registry 发布。每个包都带有其指令、环境、评估器和特定于任务的评分材料。 4. **Relay。** `agents/relay/` 是一个用于 repository-patch 和 file-output benchmark 的通用 Harbor agent。它通过收集标准请求/完成式远程 endpoint 的输出文件并将其具体化到任务工作区中,从而使它们适应 Harbor;它并非 WANDR 专用。 Harbor 提供任务环境和生命周期。WANDR 定义正确性和评分;Relay 定义 endpoint 输出如何成为工作区文件。 ## 快速开始 ### 前置条件 - Python 3.12 - [uv](https://docs.astral.sh/uv/) - Docker 及其正在运行的 daemon,用于本地任务环境 - 选定 config 所使用的提供商的 API key 克隆代码库并安装锁定的工作区: ``` git clone https://github.com/ppl-ai/wandr.git cd wandr uv --no-config sync --locked ``` 创建一个本地环境文件: ``` cp .env.example .env ``` 设置您打算使用的 key,然后运行代码库检查: ``` ./scripts/wandr check ``` 成本最低的端到端运行使用 `smoke` 任务和一个低开销的 OpenAI solver。它仍然会发起付费的 OpenAI 和 Perplexity API 调用: ``` ./scripts/wandr smoke-local ``` 首次本地运行会构建任务镜像,耗时可能比后续运行更长。Harbor 会将运行状态和结果写入 `jobs/` 下。 ### E2B E2B 是可选的,可能会产生执行费用。在 `.env` 中设置 `E2B_API_KEY`,然后在 E2B 环境中运行相同的 smoke 工作流: ``` ./scripts/wandr smoke-e2b ``` E2B 路径基于已提交的任务 Dockerfile 进行构建。它使用与本地 Docker 路径相同的 task、Relay 和 verifier 合约。 ## 凭证 `.env` 会被 Git 忽略。包装器在调用 Harbor 之前将其解析为 dotenv 数据;它从不会将其作为 shell 代码执行。导出的环境变量优先于 `.env` 中的值。 | 变量 | 用途 | | --- | --- | | `OPENAI_API_KEY` | OpenAI Relay 运行和 WANDR judge 调用 | | `ANTHROPIC_API_KEY` | Anthropic Managed Agents Relay 运行 | | `PERPLEXITY_API_KEY` | Perplexity Relay 运行和 verifier 页面抓取 | | `EXA_API_KEY` | Exa Agent Relay 运行 | | `PARALLEL_API_KEY` | Parallel Task API Relay 运行 | | `GEMINI_API_KEY` 或 `GOOGLE_API_KEY` | Gemini Deep Research Relay 运行 | | `E2B_API_KEY` | 可选的 E2B 执行环境 | `configs/smoke.yaml` 需要 OpenAI 和 Perplexity key。全提供商 config 需要全部六个提供商的 key。E2B 运行还需要 `E2B_API_KEY`。 ## 运行 Config 已提交的 config 形成了一个成本和覆盖率递增的阶梯: | Config | 覆盖范围 | 目的 | | --- | --- | --- | | `configs/smoke.yaml` | 一个 smoke task,一个低开销 endpoint | 快速的本地端到端检查 | | `configs/smoke-all.yaml` | 一个 smoke task,所有 Relay endpoint 均为低/快速设置 | 提供商集成检查 | | `configs/validation.yaml` | 所有 endpoint 上的两个代表性任务 | 标准发布验证 | | `configs/wandr.yaml` | 所有 endpoint 上的完整评分任务集 | 完整的 benchmark 运行 | 直接通过包装器运行全提供商的 smoke config: ``` ./scripts/wandr run -y -c configs/smoke-all.yaml ``` 运行标准的双任务验证: ``` ./scripts/wandr validate ``` 仅在 smoke 和 validation 通过后才运行完整的 benchmark: ``` ./scripts/wandr run -y -c configs/wandr.yaml ``` 这些命令会向 solver、fetch 和 judge API 发起付费调用。validation 和完整 config 会在六个提供商之间展开;完整 config 会将此矩阵应用于整个数据集,并且可能会非常昂贵。在启动它们之前,请检查每个提供商的当前定价和账户限制。Harbor 不强制实施支出上限。 使用通用包装器处理自定义 Harbor 参数或已编辑的 config: ``` ./scripts/wandr run ``` ## 运行工作原理 ``` Harbor task environment -> Relay snapshots the workspace and invokes one configured endpoint -> Relay materializes the endpoint's declared files in /workspace -> Harbor starts the task-local WANDR verifier -> WANDR fetches submitted pages, normalizes entities, deduplicates, and judges -> Harbor records rewards, diagnostics, reports, and Relay observability ``` 每个生成的任务都是可独立运行的,包含: - `instruction.md`:面向 solver 的任务指令; - `task.toml`:Harbor 元数据、资源、verifier 环境,以及任务拥有的 `metadata.required_file_paths` 输出合约; - `environment/`:公开的 Docker 构建; - `tests/wandr_task/`:特定于任务的配置、schema、prompt 片段和所需的 artifacts; - `tests/wandr_core/`:评估器 runtime 的 vendored 副本; - `tests/manifest.json`:verifier 使用的有序 WANDR 任务名称。 任务本地评估器是刻意设计的。一个任务可以在运行时不需要单独的 WANDR 包的情况下被发布、下载和验证。 生成的任务不提供示例 solver 输出或捆绑的 solver; verifier 始终对 `/workspace` 中已存在的所需文件进行评分。 任务本地测试可能包含仅用于 grader 的紧凑评分标准和任务拥有的公开证据资产。除非明确作为任务输入的一部分,否则它们都不会被复制到 agent 工作区或渲染到 solver 指令中。 ## 输出 Harbor 创建 `jobs//` 目录,其中每次运行对应一个目录。最有用的文件是: - `/result.json`:Harbor 的运行结果; - `/agent/events.jsonl`:提供商中立的 Relay 事件; - `/agent/trajectory.json`:ATIF 轨迹; - `/agent/status.json`:Relay 生命周期状态; - `/verifier/reward.json`:主要奖励和命名奖励; - `/verifier/wandr_metrics.json`:WANDR 指标汇总; - `/verifier/report.html`:详细的人类可读报告; - `/verifier/wandr-details.json`:verifier 诊断信息; - `/verifier/error.json`:安装程序或评估器失败时(如果存在)。 完成的零奖励是一个评分结果。出现 `error.json` 意味着 verifier 没有产生有效的分数。 ## 任务开发 `datasets/wandr/` 下的文件是生成的。请在 `reference/wandr_tasks/` 中编辑任务,在 `adapters/wandr/src/wandr/origin/wandr_core/` 中编辑共享评估器,并在 `adapters/wandr/src/wandr/task-template/` 中编辑通用 Harbor 包装器。 通过其下划线分隔的 WANDR 名称重新生成单个任务: ``` uv --no-config run --project adapters/wandr --locked wandr \ pharma_former_rd_heads --overwrite ``` 重新生成所有任务: ``` uv --no-config run --project adapters/wandr --locked wandr --overwrite ``` 生成过程还会刷新 `datasets/wandr/dataset.toml`。请勿手动编辑生成的任务,使其与源码或 adapter 模板产生偏差。代码库检查会验证任务源、vendored 评估器副本、包装器文件以及数据集摘要: ``` ./scripts/wandr check ``` Adapter 详情位于 [`adapters/wandr/README.md`](adapters/wandr/README.md)。 Relay 详情位于 [`agents/relay/README.md`](agents/relay/README.md)。 任务源详情位于 [`reference/wandr_tasks/README.md`](reference/wandr_tasks/README.md)。 ## 数据及第三方来源 所需的任务 artifacts 可能包括派生的公开记录材料。第三方源材料仍受其自身条款的约束;在重复使用或重新分发时,请遵循链接的来源条款。 ## 故障排除 - `uv lock --check` 失败:从代码库根目录运行 `uv --no-config sync --locked`,并确认提交的 lockfile 没有在本地被更改。 - Docker 连接失败:启动 Docker 并验证 `docker info` 是否成功。 - 凭证缺失:将 `.env` 与 `.env.example` 进行比较;预检会报告选定工作流所需的变量。 - 提供商失败:在重试之前检查 `/agent/status.json`、`events.jsonl` 和 `result.json`。 - Verifier 失败:检查 `/verifier/error.json`、`setup.log` 和 `wandr/stdio.log`。缺少奖励文件属于 verifier 失败,而不是零分。 - 首次运行缓慢:留出时间进行 Docker 或 E2B 镜像构建以及锁定的 Python 依赖项安装。后续运行将重用这些缓存。
标签:DLL 劫持, Python, 人工智能, 大语言模型, 无后门, 用户模式Hook绕过, 自动化智能体, 请求拦截, 逆向工具