开源项目

sia

sia

自改进AI框架,通过协调Meta-Agent、Target Agent和Feedback Agent形成闭环,自动优化任何AI系统在基准任务上的表现。亮点:在LawBench、GPU内核优化、单细胞RNA降噪等任务上分别取得56.6%、91.9%和502%的提升,且具备可视化仪表板和自定义任务支持。研究向,代码开源(MIT许可),有arXiv论文支撑。

README

SIA(自我改进AI)

arXiv 许可证: MIT Python 3.11+ PyPI 版本

SIA: Self Improving AI with Harness & Weight Updates(Hebbar 等人,2026)的官方实现——一个自我改进循环,其中语言模型代理同时更新任务特定代理的 harness(框架)和权重。论文报告在 LawBench 上获得 56.6% 的提升,GPU 内核运行时减少 91.9%,单细胞 RNA 去噪相对于基线提升 502%。

SIA 是一个自我改进 AI 框架,用于自主提升任何 AI 系统(模型/代理)在基准任务上的性能。

只想试试? 跳到在本地运行 SIA。

介绍视频

架构

SIA 编排流程

Meta、Target 和 Feedback 代理在连续轮次间的控制流。

SIA 通过协调三种主要类型的 AI 代理来运作,这些代理共同工作以持续提升任务性能:

术语表

  1. 元代理(Meta-Agent):读取任务描述并生成一个针对该任务定制的初始目标代理(Target Agent)。
  2. 目标/任务特定代理(Target/Task Specific Agent):尝试完成任务并记录其动作和结果。
  3. 反馈/改进代理(Feedback/Improvement Agent):审查目标代理的性能日志,识别改进点,并相应更新目标代理。

这一迭代过程允许系统自主地精炼和增强其解决科学任务的能力。

基准测试结果

MLE Bench 结果
OpenAI MLE-Bench Hard:一系列真实的 Kaggle 机器学习竞赛,代理必须编写、运行并迭代完整的机器学习流水线。SIA 在所有测试的生成轮次中排名第一。

LawBench 结果
LawBench:根据中国法院案件描述预测刑事罪名,涵盖 191 个罪名类别。SIA-W+H 达到 70.1% 的 Top-1 准确率,超越之前 45% 的 SOTA。

TriMul CUDA 结果
AlphaFold-3 TriMul Triton 内核:将 Triangle Multiplicative Update 实现并优化为 Triton 内核,保持正确性同时达到 H100 延迟目标。SIA-W+H 相对于基线实现 14 倍加速。

去噪结果
scRNA-seq 去噪:在单细胞 RNA 测序数据中插补缺失的基因表达值。SIA-W+H 得分为 0.289 MSEnorm,超越之前 0.220 的 SOTA。


在本地使用内置任务运行 SIA

SIA 内置四个任务:gpqa、lawbench、longcot-chess、spaceship-titanic。

安装

选择与你想要运行的 LLM 匹配的代理实现(agent impl)。

Claude 代理实现(仅限 Claude Agent SDK,Claude 模型):

python3 -m venv .venv && source .venv/bin/activate
pip install 'sia-agent[claude]'
export ANTHROPIC_API_KEY="..."

OpenHands 代理实现(多提供商——Gemini、OpenAI、Anthropic 等):

python3 -m venv .venv && source .venv/bin/activate
pip install 'sia-agent[openhands]'

# 导出你将使用的提供商密钥:
export ANTHROPIC_API_KEY="..."   # 用于 anthropic/* 模型
export GEMINI_API_KEY="..."      # 用于 gemini/* 模型(或 GOOGLE_API_KEY)
export OPENAI_API_KEY="..."      # 用于 openai/* 模型

完整的提供商/模型参考:docs/configuration.md。

运行

CLI 有两个子命令:sia run(自我改进循环)和 sia web(运行可视化器,见可视化运行)。

sia run --task gpqa --max_gen 5 --run_id 1

将 --task 替换为四个内置任务中的任意一个。(sia --task ... 不加 run 子命令仍可工作,被视为 sia run ...。)

工件保存在 runs/run_{run_id}/gen_{n}/ 中:

  • target_agent.py — 该轮次的代理
  • agent_execution.json — 执行日志
  • improvement.md — 差异说明(第 2 轮及之后)

在运行进行时,一个实时仪表盘会在 http://127.0.0.1:8000 自动启动(需要 web 附加组件;使用 --no-web 禁用)。

常用标志(sia run)

标志 默认值 描述
--task — 内置任务名称(与 --task_dir 互斥)
--task_dir — 外部任务目录的路径
--max_gen 3 自我改进轮次数量
--run_id 1 唯一运行标识符
--meta-agent-profile default-meta 元/反馈代理的配置文件(名称或 .json 路径)
--target-agent-profile default-target 目标代理的配置文件(名称或 .json 路径)
--no-web off 运行时不自动启动实时仪表盘
--web-port 8000 实时仪表盘的端口(--web-host 更改绑定主机)

每个代理的模型、代理实现和提供商来自一个配置文件(见下文)。例如,使用 Nebius 上的 Kimi-K2.6 作为目标模型进行评估:

export NEBIUS_API_KEY="..."        # + 用于默认元代理的 ANTHROPIC_API_KEY
sia run --task gpqa --target-agent-profile kimi-nebius-target --max_gen 5 --run_id 2

完整的代理实现、模型和 API 密钥参考:docs/configuration.md。遇到问题?docs/troubleshooting.md。

可视化运行

一个内置的 web 仪表盘渲染 runs/ 下的所有内容:每轮的目标代理代码(语法高亮)、元/反馈提示、改进计划、评估分数(带有跨轮次准确率图表和按领域细分)、执行轨迹和日志。

sia web                          # 在 http://127.0.0.1:8000 提供 ./runs 服务
sia web --runs-dir ./runs --port 8080

它也会在 sia run 时自动启动(使用 --no-web 禁用),因此你可以实时观察轮次生成。

标志 默认值 描述
--runs-dir ./runs 要可视化的运行目录
--host 127.0.0.1 绑定主机
--port 8000 绑定端口
--no-browser off 不自动打开浏览器窗口

编写你自己的配置文件

提供商是一个端点 + 凭据;配置文件配置一个代理角色。元代理配置文件绑定 (agent_impl, model, provider);目标代理配置文件绑定 (model, provider, agent_reference)。两者都是 JSON 文件——内置默认值位于 sia/defaults/{providers,profiles}/,你可以将自己的文件放在 ./providers/ 和 ./profiles/ 下(或设置 $SIA_PROVIDERS_DIR / $SIA_PROFILES_DIR)。无需修改代码。

mkdir -p providers profiles
// providers/my-endpoint.json   — 一个与 OpenAI 兼容的提供商
{
  "provider_id": "my-endpoint",
  "name": "My Endpoint",
  "client_kind": "openai",                 // anthropic | openai | google
  "base_url": "https://api.example.com/v1",
  "api_key_env": "MY_ENDPOINT_API_KEY"
}
// profiles/my-target.json      — 目标代理的模型 + 提供商 + 参考
{
  "profile_id": "my-target",
  "name": "My model on My Endpoint",
  "model": "vendor/my-model",
  "provider_id": "my-endpoint",             // 引用上面的提供商
  "agent_reference": "default"              // "default" = 任务包的参考;
                                            // 或 { "source": "./my_agent_dir/", "entrypoint": "main.py" }
}
export MY_ENDPOINT_API_KEY="..."
sia run --task gpqa --target-agent-profile my-target      // 按名称(解析 ./profiles/my-target.json)
sia run --task gpqa --target-agent-profile ./profiles/my-target.json   // 或显式路径

agent_reference 是元代理开始的种子,也是反馈代理改进的对象:"default" 使用任务包捆绑的参考,或者通过 { "source": "./my_agent.py" }(单个文件)或 { "source": "./dir/", "entrypoint": "main.py" }(一个多文件目录,代理使用其工具读取)提供你自己的参考。目录参考中的 requirements.txt 会在每轮生成时安装。

要在其他地方运行元/反馈代理,给元配置文件指定不同的 agent_impl(openhands 或 pydantic-ai)并通过 --meta-agent-profile 传递。claude 代理实现仅限 Anthropic。参见 docs/configuration.md 获取完整架构和更多示例。


引入你自己的任务

准备一个任务目录,布局如下,并将 --task_dir 指向它:

my-task/
├── data/
│   ├── public/
│   │   ├── task.md          # 任务描述 — SIA 读取此文件
│   │   └── ...              # 允许代理看到的输入
│   └── private/             # 保留的评估数据;从不暴露给代理
└── reference/
    ├── reference_target_agent.py     # 模板;从 sia/tasks/_shared/ 复制
    └── SAMPLE_TASK_DESCRIPTIONS.md   # 可选:用于元代理的示例任务
sia run --task_dir ./my-task --max_gen 5 --run_id 1

或者引入 MLE-Bench 比赛。 SIA 可以直接从任何 MLE-Bench 比赛引导一个任务目录——它会通过 Kaggle API 拉取数据集,设置 public/private 分割,并放入参考代理模板:

python -m sia.prepare_mlebench_dataset -c "spaceship-titanic"
sia run --task_dir ./tasks/spaceship-titanic --max_gen 5 --run_id 1

两种路径的完整分步指南:docs/walkthrough.md。


评估

每轮之后,编排器自动对目标代理进行评分,并将结果输入下一轮的反馈提示中——这是自我改进循环优化的信号。

  1. 目标代理将其输出写入该轮目录(例如 gen_1/submission.csv)。
  2. 编排器运行任务的评估器:python evaluate.py --gen-dir gen_1/。
  3. evaluate.py 根据 data/private/ 中的保留真实数据对输出评分,并写入 gen_1/results.json(或 evaluation_results.json)。
  4. 这些指标会注入到反馈提示中,并显示在 context.md 和 web 仪表盘(跨轮次准确率图表、按领域细分)中。

四个内置任务已自带评估器。对于自定义任务,将一个暴露 evaluate() 函数的 evaluate.py 放入 data/public/——它决定提交格式,与 data/private/ 比较,并返回一个指标字典。在完整运行前单独测试它:

python my-task/data/public/evaluate.py --gen-dir runs/run_1/gen_1   # 应该写入 results.json

完整约定、返回格式规则及完整示例:EVALUATION_GUIDE.md。


深入阅读

引用

如果你在研究中使用 SIA,请引用:

@article{hebbar2026sia,
  title   = {SIA: Self Improving AI with Harness \& Weight Updates},
  author  = {Hebbar, Prannay and Manawat, Yogendra and Verboomen, Samuel and Ivanova, Alesia and Palanimalai, Selvam and Bhatia, Kunal and Baskaran, Vignesh},
  journal = {arXiv preprint arXiv:2605.27276},
  year    = {2026},
  url     = {https://arxiv.org/abs/2605.27276}
}
开源项目hexo-ai2026-06-11原文

相关内容