Atomic Agents

用可组合的类型化组件构建可控、可预测的 AI 应用。

Star 数
★ 6.3k
最近更新
今天
License
MIT
主语言
Python

30 秒速览

运行形态
代码库 / SDK开发框架命令行工具
可在哪里用
通用 · 跨平台OpenAI API · Claude API
费用
软件免费,模型调用费用自付
上手难度
低 · 几分钟可跑通
开始前需要
PythonPydanticInstructor提供商 SDK 或 Instructor 提供商扩展Shell / 命令行网络访问本地文件系统
典型场景
Python 后端团队需要让模型输出经过 Pydantic 校验的固定字段,以便安全地交给后续业务代码处理。
不适合
  • 需要开箱即用、可直接部署的终端用户产品的团队
  • 希望用可视化界面而非编写 Python 代码来编排智能体的用户
  • 不愿自行承担服务层、存储与生产部署设计的团队

这个 Agent 能做什么,适合哪些场景?

Atomic Agents 是一个轻量级 Python 框架,用于把代理、工具和上下文提供器组合成 Agentic AI 流程。核心库提供 AtomicAgent、AgentConfig、输入输出 Schema、SystemPromptGenerator、ChatHistory 和动态上下文接口,并借助 Pydantic 与 Instructor 生成和校验结构化结果。控制流由开发者直接用 Python 编写,而不是交给自主多代理系统,因此部署边界是嵌入开发者自己的 Python 应用或服务。仓库采用 monorepo,包含核心库 atomic-agents、组件下载 CLI atomic-assembler、示例项目 atomic-examples 和工具集合 atomic-forge。它支持 OpenAI,并可通过 Instructor 接入 Anthropic、Gemini、Groq、Ollama、Mistral、Cohere 及 OpenAI 兼容 API。适合重视类型约束、模块复用和显式流程控制的团队,但使用者仍需自行设计业务编排、部署方式和错误处理策略。

应用先用继承自 BaseIOSchema 的 Pydantic 模型定义输入和输出,再通过 SystemPromptGenerator 配置背景、步骤和输出要求,并把 Instructor 客户端、模型、提示词生成器及可选的 ChatHistory 传给 AgentConfig。AtomicAgent.run() 接收类型化输入,调用所配置的模型 API,并返回经过目标 Schema 约束的结构化对象。运行时数据可由继承 BaseDynamicContextProvider 且实现 get_info() 的组件注入系统提示词;上下文提供器通过 register_context_provider() 注册。不同代理和工具可通过对齐输出 Schema 与下一组件的输入 Schema 串联,例如让查询生成代理直接产出 SearXNGSearchTool.input_schema。随包安装的 atomic CLI 可浏览和下载 Atomic Forge 工具;仓库列出的工具覆盖 arXiv、BoCha、Hacker News、SearXNG、Tavily、Wikipedia、天气、PDF、网页、YouTube 字幕、日期时间和计算等操作。示例还展示聊天、图像信息提取、深度研究、RAG、网页搜索、工具路由和视频内容结构化。

  1. Python 后端团队需要让模型输出经过 Pydantic 校验的固定字段,以便安全地交给后续业务代码处理。
  2. 开发搜索或研究流程的工程师,需要把查询生成代理、SearXNG 等搜索工具和答案生成步骤按 Schema 串联。
  3. 构建 RAG 聊天应用的团队,需要通过 BaseDynamicContextProvider 在运行时把检索结果注入系统提示词。
  4. 需要切换模型供应商的项目,可保留代理和 Schema 设计,同时通过 Instructor 改接 OpenAI、Anthropic、Gemini、Groq、Ollama 或兼容 API。
  5. 原型开发者希望从 Atomic Forge 选择并下载单个搜索、PDF、天气或 YouTube 工具,而不安装整套工具依赖。
  6. 需要监控和重试能力的工程团队,可参考仓库中的 Hooks System 示例构建错误处理与性能指标流程。

如何安装或部署这个 Agent?

需要 Python、网络访问以及所选模型供应商的有效凭据;来源没有规定 Python 最低版本,也没有给出凭据环境变量名称。OpenAI 支持随默认安装提供:

pip install atomic-agents

如使用其他供应商,还需安装对应的 Instructor extra:

pip install instructor[groq]
pip install instructor[anthropic]
pip install instructor[google-genai]

从源码进行本地开发:

git clone https://github.com/eigenwise/atomic-agents.git
cd atomic-agents
uv sync

安装 monorepo 中的全部工作区包、示例和工具:

uv sync --all-packages

如何使用这个 Agent?

先按所选供应商的 SDK 要求配置凭据;来源未给出具体环境变量。下面是文档中的 OpenAI 调用方式,运行后会向模型发送消息并打印结构化回复和三个建议问题:

from pydantic import Field
from openai import OpenAI
import instructor
from atomic_agents import AtomicAgent, AgentConfig, BasicChatInputSchema, BaseIOSchema
from atomic_agents.context import SystemPromptGenerator, ChatHistory

class CustomOutputSchema(BaseIOSchema):
    """Custom structured response."""
    chat_message: str = Field(..., description="The chat message from the agent.")
    suggested_questions: list[str] = Field(..., description="Suggested follow-up questions.")

system_prompt_generator = SystemPromptGenerator(
    background=["This assistant is knowledgeable, helpful, and suggests follow-up questions."],
    steps=[
        "Analyze the user's input to understand the context and intent.",
        "Formulate a relevant and informative response.",
        "Generate 3 suggested follow-up questions for the user."
    ],
    output_instructions=[
        "Provide clear and concise information in response to user queries.",
        "Conclude each response with 3 relevant suggested questions for the user."
    ]
)

client = instructor.from_openai(OpenAI())
agent = AtomicAgent[BasicChatInputSchema, CustomOutputSchema](
    config=AgentConfig(
        client=client,
        model="gpt-5-mini",
        system_prompt_generator=system_prompt_generator,
        history=ChatHistory(),
    )
)

if __name__ == "__main__":
    user_input = "Tell me about atomic agents framework"
    response = agent.run(BasicChatInputSchema(chat_message=user_input))
    print(f"Agent: {response.chat_message}")
    print("Suggested questions:")
    for question in response.suggested_questions:
        print(f"- {question}")

安装后可启动 Atomic Assembler 菜单下载工具:

atomic

在克隆的仓库中也可通过 uv 启动:

uv run atomic

这个 Agent 有哪些优点和局限?

优点
  • 输入和输出由 BaseIOSchema、Pydantic 与 Instructor 明确定义和校验,比自由文本接口更适合接入确定性的业务流程。
  • 代理、工具与上下文提供器都是单一用途组件,并可通过兼容的 Schema 直接组合或替换。
  • 业务控制流保留在普通 Python 中,团队可以沿用现有的测试、代码审查和错误处理方式。
  • 明确记录了 OpenAI、Anthropic、Gemini、Groq、Ollama、Mistral、Cohere 以及 OpenAI 兼容 API 等多供应商路径。
  • 仓库同时提供快速入门和 RAG、研究、搜索、图像分析、编排、Hooks 等较完整示例。
局限
  • 它是用于构建应用的框架而非可直接部署的成品代理;生产服务、用户界面、存储和基础设施需要团队自行实现。
  • 实际运行依赖外部模型或本地模型供应商,供应商凭据、费用、限额和可用性不由框架解决。
  • 非 OpenAI 供应商需要额外安装对应的 Instructor extra,并可能需要调整客户端配置。
  • Schema 对齐和显式 Python 编排提高了控制力,但也把流程设计、状态管理与组件集成工作留给开发者。
  • 来源未注明最低 Python 版本、生产部署方案或统一的凭据配置方式,采用前需要额外确认环境要求。
  • 版本 2.0 被标为重大更新,但所给材料没有列出从 1.x 升级的具体变更,因此旧项目存在待评估的迁移风险。

这个 Agent 与同类方案有什么区别?

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Atomic Agents 当前 64 · 存在缺口 代码库 / SDK免费 + 模型费 ★ 6.3k 今天 Python OpenAI API · Claude API
Mirascope 55 · 缺口较多 代码库 / SDK免费 + 模型费 ★ 1.5k 1 天前 Python Claude API
Agentica 63 · 存在缺口 命令行工具免费 + 模型费 ★ 356 今天 Python OpenAI API · Claude API
Qwen Code 54 · 缺口较多 命令行工具免费 + 模型费 ★ 29k 今天 TypeScript OpenAI API · Claude API

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
存在缺口
64/ 100 五分制 3.2 / 5
本评测基于 2026年8月14日 的源码;此后该项目发布了 5 个正式版本,尚未复审。分数与结论只代表评测时的版本。 最近版本 ↓
信任安全 16/29
可靠稳定 6/14
适用触发 14/18
规范维护 14/18
有效结果 10/13
证据核验 4/8
查看各维度的扣分理由
信任安全16 / 29 · 2.8/5

框架以显式 Python 配置、输入输出模式和按需工具组合为核心,CI 的默认权限也仅为 contents: read;README 的提示图说明发送给模型的信息,外部调用通常由开发者选择的客户端或工具决定,因此最小权限、数据流和外部影响有一定可控性。扣分点是未见统一的用户确认机制、工具副作用分级、出站数据清单、秘密脱敏或保留策略;API 密钥仅通过环境变量示例体现。reset_history 提供有限状态恢复,但没有面向外部操作的事务或回滚协议。依赖有版本约束且 Instructor 被精确固定,但大量依赖仅使用范围,CI 使用 latest 安装器和未固定提交哈希的 Actions,也未展示漏洞扫描或供应链策略。许可证、作者、邮箱和仓库归属清楚,故来源署名充分;发布者未获企业注册验证仅表示身份未知,并未作为额外扣分依据。

可靠稳定6 / 14 · 2.1/5

测试覆盖同步、异步、流式、历史同步、模式严格性、钩子隔离及 MiniMax 适配,并通过模拟避免普通单元测试依赖实时服务;实时集成测试在缺少密钥时明确跳过。依赖声明和支持的 Python 版本为常规安装提供基础。主要扣分来自源内不一致:pyproject 声明 2.10.0、Python 3.12+ 和 Textual 5.x,而 requirements.txt 仍要求 atomic-agents 1.x、Pydantic 下限 2.10.3、Textual 0.82.x;这会形成不同安装路径。工作流声称运行测试,但本次仅静态查看,不能确认结果。测试显示错误钩子和 ValidationError 行为,却没有足够源码证据证明所有用户可见失败都有清晰、可操作的消息。

适用触发14 / 18 · 3.9/5

README 明确面向开发者,并覆盖聊天、RAG、研究、搜索、编排、多模态、视频处理和自定义工具等多种场景,受众与用例说明充分。泛型输入输出模式、上下文提供器、可替换模型客户端及 Python 控制流带来较强适配性。扣分在于兼容性主要继承自 Instructor,部分支持表述是概括性的;框架自身没有展示统一的能力声明或权限边界。触发和路由可由模式、系统提示及编排代码精确表达,但安全确认仍由应用作者实现。Python 3.12+、提供商额外包和 API 密钥要求记录清楚,但 requirements.txt 冲突削弱了环境适配的确定性。

规范维护14 / 18 · 3.9/5

README 有目录、核心概念、架构图、安装、项目结构、提供商兼容性、支持、贡献和许可证入口,信息架构与上手说明完整;快速示例和多个完整案例获得充分支持。命名总体稳定,并有明确的 AtomicAgent、AgentConfig、Schema 和 Context Provider 概念,但 Atomic Forge、Atomic Assembler、CLI 包及旧版 requirements 之间存在版本和产品边界混杂。已标注 Beta,并提到提供商依赖,但缺少集中、具体的已知限制、隐私和副作用说明。MIT 正文及元数据一致,许可证充分。pyproject 给出版本,README 宣传 2.0,但所给材料没有实际变更日志或完整迁移记录。作者邮箱、赞助入口、贡献指南和社区渠道提供维护路径,不过个人与组织责任边界及发布者验证状态不够明确。

有效结果10 / 13 · 3.8/5

Pydantic 模式化输出、同步与异步接口、流式响应、历史管理和可组合工具使结果可直接用于代码管线,输出可用性证据较强。相较直接调用模型,框架增加了模式、上下文、钩子和模块化组合,具有实际增量价值;但部分能力来自 Instructor 和 Pydantic,源材料没有量化或对照证明其独有收益,因此未给满分。轻量和按需安装工具有利于成本控制,但模型调用成本、延迟、重试开销、上下文增长和不同提供商的权衡没有被分析。

证据核验4 / 8 · 2.5/5

README 的主要结构性主张可对应到 pyproject、工作流和测试,例如依赖、CLI、模式化输出、历史、流式及提供商适配;多个来源之间也有一定相互印证。扣分是部分广泛宣传语,如可预测、可靠、极轻量和完整提供商兼容性,没有在所给静态材料中被充分界定或测量。徽章和工作流定义不等同于本次已执行或通过,实时 MiniMax 测试还会在无密钥时跳过。文档未始终清楚区分设计目标、继承自依赖的能力、模拟测试结果与经实证验证的运行时结论。

风险与缓解建议
  • 不要同时依赖 pyproject.toml 与 requirements.txt 建立环境;两者在框架主版本、Pydantic 下限和 Textual 主版本上冲突,应先确认哪一条安装路径是该修订的权威来源。
  • 模型提示、聊天历史、动态上下文和工具输入可能发送给第三方提供商;在生产使用前应自行实现数据分类、脱敏、保留策略和用户同意。
  • 框架不提供统一的外部副作用确认或回滚协议;搜索、下载、抓取及自定义工具应由应用层增加预览、确认、幂等和补偿措施。
  • 不要把 CI 徽章、工作流定义或带条件跳过的实时测试视为本次修订已独立验证通过。
证据充分度:低 评估于 2026年8月14日 审查版本 7c824c482b37 评估后仓库已有新提交,评分可能未覆盖最新改动
查看完整评分方法 →

最近版本

来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。

  1. v2.12.0
    发布说明摘录
    Released 2026-10-15. Firecrawl Search, FXMacroData and Phoenix tracing shipped earlier the same day in 2.11.0. Changes - Discover every page of MCP tools, resources and prompts. Propagate template continuation errors instead of silently dropping them. - Resolve MCP schema references to non-object definitions and decode escaped definition names. - Parse JSON text from real MCP SDK results when structured content is absent. Preserve precedence for present structured content, including empty values. …
    在 GitHub 查看 ↗
  2. v2.11.0
    发布说明摘录
    What's New Arize Phoenix / OpenInference tracing Atomic Agents now ships an optional OpenInference instrumentor. Install atomic-agents[observability] (or just have arize-phoenix-otel installed) and phoenix.otel.register(auto_instrument=True) picks it up automatically. Features - AGENT span per AtomicAgent.run / run_async / run_stream / run_async_stream, named Class[InputSchema, OutputSchema].run, with input/output JSON and atomic_agents.* attributes (model, mode, schema names, history size, context providers, static prompt hash) …
    在 GitHub 查看 ↗
  3. v2.10.3
    发布说明摘录
    What's New Bug Fixes - ChatHistory.copy() no longer serializes and re-imports message classes, so an agent can be created with a history that contains schemas defined inside a function or factory (#288, thanks @YaoxinHuang) - MCP tools with nullable fields ({"type": ["string", "null"]}) no longer disappear from discovery; type arrays resolve to unions and null maps to None instead of Any (#283, thanks @Shy7777) Atomic Forge - New serply_search tool: Google web, News and Scholar search through the Serply API (#284, thanks @googio) Full Changelog …
    在 GitHub 查看 ↗

常见问题

使用 Atomic Agents 是否需要付费?
框架采用 MIT 许可证并可免费使用;调用 OpenAI、Anthropic、Gemini 等模型时,仍可能产生相应供应商的 API 费用。
是否只能使用 OpenAI?
不是。OpenAI 默认包含;借助 Instructor 还可使用 Anthropic、Gemini、Groq、Ollama、Mistral、Cohere 及多种 OpenAI 兼容 API。部分供应商需要安装额外依赖。
它会自主决定整个多代理工作流吗?
框架强调显式控制:开发者用 Python 编写逻辑和控制流,并通过 Schema 串联代理与工具。仓库有 Orchestration Agent 示例,但没有把自主多代理系统描述为核心执行模式。
结构化输出仍可能失败吗?
框架通过 Instructor 和 Pydantic约束输出,但模型调用、供应商服务和验证仍可能出错。仓库提供带错误处理和智能重试的 Hooks System 示例,生产项目需要据此设计自己的失败处理。
Atomic Forge 会安装所有工具依赖吗?
atomic-assembler 允许按需下载工具以避免不必要的依赖;每个工具具有自己的输入 Schema、输出 Schema、依赖、安装说明、使用示例和测试。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents