microsoft/EvoLib

GitHub: microsoft/EvoLib

EvoLib 是微软研究院提出的测试时学习框架,通过维护一个不断演进的知识库,使黑盒 LLM 在无需参数更新的情况下跨任务积累、重用和反思经验。

Stars: 8 | Forks: 1

# EvoLib: 基于演进库的测试时学习 [![arXiv](https://img.shields.io/badge/arXiv-2605.14477-b31b1b.svg)](https://arxiv.org/abs/2605.14477) [![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) 论文官方代码发布 **[基于演进库的测试时学习](https://arxiv.org/abs/2605.14477)** 作者:Weijia Xu, Alessandro Sordoni, Chandan Singh, Zelalem Gero, Michel Galley, Xingdi Yuan, 和 Jianfeng Gao (Microsoft Research)。 ## 概述 EvoLib 是一个测试时学习 (TTL) 框架,使黑盒大型语言模型能够**跨问题实例积累、重用和演进知识**,而无需任何参数更新或外部监督。EvoLib 不调整模型权重,而是维护一个共享的、不断演进的知识抽象库,这些抽象是从模型自身的推理轨迹中提取出来的: - **模块化技能** — 可重用的过程(用于编程的函数、用于推理的子问题解决方案、用于 agentic 任务的子任务工作流)。 - **反思性见解** — 从过去错误中提炼出的自然语言规则。 该库通过抽象提取、合并以及基于**信息增益 (IG)** 和 **未来 IG** 的动态加权方案进行更新,这两者共同捕捉了抽象的即时实用性及其生成未来有用抽象的长期价值。

## 主要特性 - **无梯度更新。** 适用于 API 背后的任何黑盒 LLM。 - **无真实值监督。** 由自我评估得分(合成测试、 多数投票、LLM-as-a-Judge)驱动学习。 - **两种互补的抽象类型。** 技能提供可重用的解决方案 组件;见解引导未来的尝试避开常见错误。 - **动态功劳分配。** IG 因即时 效用而奖励抽象;未来 IG 沿着演进链向后传播功劳,因此 *促成*有用未来抽象的抽象也会获得权重提升。 - **合并机制。** 语义/功能上相似的抽象 会被合并,控制库的增长并产生越来越通用、 可重用的知识单元。 - **支持持续学习。** 对任务排序具有鲁棒性,包括 异构任务的随机流。 ## 结果 比较 EvoLib 与具有竞争力的测试时扩展(Best-of-N, RSA)和测试时学习(Dynamic Cheatsheet)基线的成本-性能曲线。x 轴是加权 token 计数(输入 token 权重为 1,输出 token 权重为 4);y 轴是任务性能。EvoLib 在不同的计算预算下实现了持续更高的准确率,并且每消耗一个 token 改进得更快。


Left: BigCodeBench Hard (GPT-4o). Middle: LiveCodeBench v6 Hard (o4-mini). Right: HMMT 2025–2026 (o4-mini).

有关完整结果表(包括 agentic 任务的结果)、消融实验和进一步分析,请参阅论文。 ## 仓库结构 ``` . ├── EvoLib/ # EvoLib agent + evaluation on math and code generation │ ├── evolib_agent.py # Core EvoLib algorithm. │ ├── eval_main.py # CLI entry point and per-benchmark task prompts. │ ├── llm.py # Azure OpenAI chat wrapper with token accounting. │ ├── embed.py # Embedding model wrapper. │ └── utils.py # Utility functions. │ └── AgentBoard/ # AgentBoard fork with the EvoLib agent integrated for multi-turn agentic tasks ├── agentboard/agents/evo_agent.py ├── eval_configs/evo_agent_all_tasks.yaml └── README.md # AgentBoard setup and evaluation instructions. ``` ## 安装说明 EvoLib 分为两个子项目,因为它们有不同的上游 依赖项。只需安装您需要的部分即可。 ### EvoLib (数学 + 代码) ``` cd EvoLib pip install -r requirements.txt ``` 特定于任务的依赖项(仅为您想要运行的基准测试安装): - **LiveCodeBench:** [`lcb_runner`](https://github.com/LiveCodeBench/LiveCodeBench) - **BigCodeBench:** [`bigcodebench`](https://github.com/bigcode-project/bigcodebench) - **HMMT:** [`matharena`](https://github.com/eth-sri/matharena) ### AgentBoard (ScienceWorld / PDDL) 有关完整的环境设置,包括数据集下载,请参阅 [AgentBoard/README.md](AgentBoard/README.md)。 ## 快速开始 ### 在编程或数学基准测试上运行 EvoLib 所有数学/代码实验均通过 `EvoLib/eval_main.py` 运行。身份验证通过 `azure-identity` 使用 Azure 托管标识 / Azure CLI token。 ``` cd EvoLib # BigCodeBench Hard (GPT-4o) python eval_main.py \ --task bigcodebench \ --k_q_per_problem 3 \ --endpoint \ --embedding_endpoint \ --syn_test_data_file \ --log_file ./runs/bigcode.log # LiveCodeBench v6 Hard (o4-mini, high reasoning) python eval_main.py \ --task livecodebench \ --k_q_per_problem 3 \ --endpoint \ --embedding_endpoint \ --syn_test_data_file \ --log_file ./runs/livecode.log # HMMT 2025-2026 (o4-mini, high reasoning) python eval_main.py \ --task hmmt \ --k_q_per_problem 10 \ --endpoint \ --embedding_endpoint \ --log_file ./runs/hmmt.log ``` 使用相同的 `--log_file` 重新运行将从日志中记录的最后一个 `[Iter N]` 处恢复。 库和解决方案快照将作为 `*.skill.json`, `*.insight.json`, `*.score.json` 和 `*.solution.json` 写入到日志文件旁边,每 20 次迭代更新一次。 ### 在 AgentBoard (ScienceWorld / PDDL) 上运行 EvoLib ``` cd AgentBoard python agentboard/eval_main.py \ --cfg-path eval_configs/evo_agent_all_tasks.yaml \ --tasks pddl \ --model o4-mini \ --wandb \ --log_path ./results/pddl-evolib-o4-mini \ --project_name evaluate-pddl-evolib-o4-mini \ --baseline_dir ./data/baseline_results ``` 将 `--tasks pddl` 切换为 `--tasks scienceworld` 即可进行 ScienceWorld 实验。 ## 引用 如果您在研究中使用 EvoLib,请引用: ``` @article{xu2026evolib, title = {Test-Time Learning with an Evolving Library}, author = {Xu, Weijia and Sordoni, Alessandro and Singh, Chandan and Gero, Zelalem and Galley, Michel and Yuan, Xingdi and Gao, Jianfeng}, journal = {arXiv preprint arXiv:2605.14477}, year = {2026}, url = {https://arxiv.org/abs/2605.14477} } ``` ## 许可证 本项目基于 [MIT 许可证](LICENSE) 发布。来自上述上游项目的代码保留其原始许可证。 ## 最佳实践 通过选择强大且管理良好的基础模型、仔细配置提示和评估设置、在目标任务分布上验证行为,以及随着时间的推移监控库的增长和抽象质量,可以实现更好的性能。 我们强烈鼓励用户使用支持稳健的负责任 AI 缓解措施的 LLM/MLLM,例如 Azure Open AI (AOAI) 服务。此类服务会根据负责任使用的最新行业标准,不断更新其安全和 RAI 缓解措施。有关在脚本和应用程序中使用基础模型时 AOAI 的更多最佳实践: [什么是 Azure AI 内容安全?](https://learn.microsoft.com/en-us/azure/ai-services/content-safety/overview) [Azure OpenAI 模型的负责任 AI 实践概述](https://learn.microsoft.com/en-us/legal/cognitive-services/openai/overview) [Azure OpenAI 透明度说明](https://learn.microsoft.com/en-us/legal/cognitive-services/openai/transparency-note) [OpenAI 的使用政策](https://openai.com/policies/usage-policies) [Azure OpenAI 行为准则](https://learn.microsoft.com/en-us/legal/cognitive-services/openai/code-of-conduct) 用户有责任合法且合乎道德地获取其数据集。这可能包括确保获得适当的权利、确保获得使用音频/图像的同意,和/或在用于研究之前对数据进行匿名化处理。 提醒用户注意数据隐私问题,并鼓励用户审查与任何与 EvoLib 交互的模型和数据存储解决方案相关的隐私政策。 用户有责任确保 EvoLib 的使用符合相关的数据保护法规、许可条款和组织准则。 开发者应遵循透明度最佳实践,并告知最终用户他们正在与 AI 系统进行交互。 ## 超出范围的使用 如果不进行进一步的测试和开发,我们不建议将 EvoLib 用于商业或实际应用中。它的发布仅供研究之用。 EvoLib 并非为所有可能的下游目的而设计或评估的。在基础模型无法可靠地评估和验证解决方案的任务中,EvoLib 算法的迭代特性可能会引入累积错误,从而降低下游性能。开发者在选择用例时应考虑其固有的局限性,并针对每个预期的下游用途评估并缓解准确性、安全性和公平性方面的担忧。 如果不进行进一步的测试和开发,EvoLib 不应用于那些不准确输出可能会建议导致伤害或对个人的法律、财务或生活机会产生负面影响的行动的敏感领域。 我们不建议在高风险决策环境中(例如在执法、法律、金融或医疗保健领域)使用 EvoLib。 ## 联系方式 这项研究是由 Microsoft Research 进行的。我们欢迎受众提供反馈并进行合作。如果您对我们的技术有任何建议、问题,或观察到意外或冒犯性的行为,请联系 Weijia Xu (`weijiaxu@microsoft.com`)。 如果团队收到关于不良行为的报告或独立发现问题,我们将使用适当的缓解措施更新此仓库。
标签:DLL 劫持, 人工智能, 大语言模型, 测试时学习, 用户模式Hook绕过, 研究论文, 逆向工具