Senior SWE-Bench:评估作为高级工程师的AI代理的开源基准

Hacker News Top 工具

摘要

Senior SWE-Bench 是一个开源基准,用于评估AI代理在需要高级技能的软件工程任务上的表现。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/07/02 05:03

# 高级 SWE-Bench 来源:https://senior-swe-bench.snorkel.ai/ ### 为 BookWorm 添加 Google Books 作为元数据源,用于回退/暂存导入 ### 问题/机会 BookWorm 目前依赖 Amazon 和 ISBNdb 作为其主要元数据源。当元数据缺失、格式错误或不完整时(尤其是仅包含 ISBN-13 的图书),就会产生问题。结果,通过承诺项或 `/api/import` 提交的不完整记录可能无法得到丰富,导致 Open Library 中出现质量低劣的记录。这种限制影响了数据质量和用户导入的成功率,尤其是对于不太常见或国际化的图书。 ### 理由:为什么我们要做这个工作,可衡量的影响是什么? 集成 Google Books 作为回退元数据源,能够增强 Open Library 补充和暂存更丰富版本数据的能力。这将提高导入图书的完整性,减少由于元数据稀疏导致的导入失败,并增强用户对导入体验的信任。影响可通过导入成功率提升以及“Book 978...”等占位条目出现频率降低来衡量。 ### 成功定义:我们如何知道问题已解决? - BookWorm 能够通过 ISBN-13 从 Google Books 获取并暂存元数据。 - 自动化测试确认能准确解析多种 Google Books 响应,包括: - 正确映射可用字段(标题、副标题、作者、出版社、页数、描述、出版日期)。 - 正确处理缺失或不完整的字段(例如无作者、无 ISBN-13)。 - 当 Google Books 返回零个或多个匹配项时,返回无结果。 ### 提案 在 BookWorm 中引入对 Google Books 作为回退元数据提供者的支持。当 Amazon 查询失败或仅提供 ISBN-13 时,BookWorm 应尝试从 Google Books API 获取元数据并暂存以供导入。这包括更新源逻辑、元数据解析,并确保来自 `google_books` 的记录得到正确处理。 要求: - `openlibrary/core/imports.py` 中的元组 `STAGED_SOURCES` 必须包含 `"google_books"` 作为有效源,以便导入管道能够识别并处理来自 Google Books 的暂存元数据。 - 暂存 bookworm 元数据的 URL 是 `http://{affiliate_server_url}/isbn/{identifier}?high_priority=true&stage_import=true`,其中 `affiliate_server_url` 取自 `openlibrary/core/vendors.py`,参数 `identifier` 可以是 ISBN-10、ISBN-13 或 B*ASIN。 - 在 `openlibrary/plugins/importapi/code.py` 中使用 `supplement_rec_with_import_item_metadata` 补充记录时,如果存在 `source_records` 字段,则必须添加(扩展)新的标识符,而不是替换现有值。 - 在 `scripts/affiliate_server.py` 中,必须有一个名为 `stage_from_google_books` 的函数,尝试使用 Google Books API 获取并暂存给定 ISBN 的元数据;如果成功,则通过 `Batch.add_items` 将元数据添加到相应的批次中持久化。 - `scripts/affiliate_server.py` 中的 affiliate 服务器处理程序必须对返回无结果的 Amazon 查询的 ISBN-13 标识符回退到 Google Books,但仅当请求中同时设置了查询参数 `high_priority=true` 和 `stage_import=true` 时。 - 如果 Google Books 对单个 ISBN 查询返回多个结果,逻辑必须记录警告消息并跳过暂存元数据,以避免引入不可靠的数据。 - 从 Google Books 响应中解析并暂存的元数字段必须至少包括:`isbn_10`、`isbn_13`、`title`、`subtitle`、`authors`、`source_records`、`publishers`、`publish_date`、`number_of_pages` 和 `description`,并且必须与 Open Library 导入系统预期的数据结构一致。 - 在 `scripts/promise_batch_imports.py` 中,暂存逻辑必须更新,以便在丰富不完整记录时使用 `stage_bookworm_metadata`,取代以前仅 Amazon 的直接逻辑。 引入的新接口: 以下是新的公共接口,已移除不相关文件中的条目。 函数:fetch_google_book 位置:scripts/affiliate_server.py 输入:isbn(字符串)— ISBN-13 输出:如果 HTTP 200,则返回包含 Google Books API 原始 JSON 响应的字典,否则返回 None 描述:为给定的 ISBN 从 Google Books API 获取元数据。 函数:process_google_book 位置:scripts/affiliate_server.py 输入:google_book_data(字典)— 从 Google Books 返回的 JSON 数据 输出:如果成功,返回包含标准化 Open Library 版本字段的字典,否则返回 None 描述:将 Google Books API 数据处理为标准化的 Open Library 版本记录。 函数:stage_from_google_books 位置:scripts/affiliate_server.py 输入:isbn(字符串)— ISBN-10 或 ISBN-13 输出:布尔值 — 如果元数据成功暂存则为 True,否则为 False 描述:为给定的 ISBN 从 Google Books 获取并暂存元数据,如果找到则将其添加到导入批次中。 函数:get_current_batch 位置:scripts/affiliate_server.py 输入:name(字符串)— 批次名称,如 "amz" 或 "google" 输出:与提供的名称对应的 Batch 实例 描述:获取或创建一个用于暂存导入项的批次对象。 类:BaseLookupWorker 位置:scripts/affiliate_server.py 描述:API 查找工作线程的基类。使用提供的函数处理队列中的项。 方法:BaseLookupWorker.run(self) 位置:scripts/affiliate_server.py 描述:公共方法,在循环中处理队列中的项,对每个检索到的项调用 process_item 可调用对象。 类:AmazonLookupWorker 位置:scripts/affiliate_server.py 描述:线程工作线程,将 Amazon API 查找批量化处理,继承自 BaseLookupWorker。 方法:AmazonLookupWorker.run(self) 位置:scripts/affiliate_server.py 描述:公共方法重写,将队列中最多 10 个 Amazon 标识符批量处理,使用 Amazon 批量处理程序一起处理,并根据 API 约束管理时间。

相似文章

SWE-Bench Pro V2(阅读时间9分钟)

TLDR AI

SWE-Bench Pro V2是一个更新的基准测试,用于在软件工程中评估AI代理,包含来自11个代码库的642个任务,具有改进的评估协议和污染控制。

介绍 SWE-bench Verified

OpenAI Blog

# 介绍 SWE-bench Verified 来源: [https://openai.com/index/introducing-swe-bench-verified/](https://openai.com/index/introducing-swe-bench-verified/) 我们发布了 SWE-bench 的人工验证子集,能更可靠地评估 AI 模型解决实际软件问题的能力。*更新于 2025 年 2 月 24 日* 作为我们[准备框架⁠](https://openai.com/preparedness/)的一部分,OpenAI 开发了一系列指标来追踪、评估和预测模型的自主行动能力