Atomic Agents
用可组合的类型化组件构建可控、可预测的 AI 应用。
- Star 数
- ★ 6.3k
- 最近更新
- 今天
- License
- MIT
- 主语言
- Python
- FA 评分
- 64/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台OpenAI API · Claude API
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 低 · 几分钟可跑通
- 开始前需要
- 典型场景
- Python 后端团队需要让模型输出经过 Pydantic 校验的固定字段,以便安全地交给后续业务代码处理。
- 不适合
- 需要开箱即用、可直接部署的终端用户产品的团队
- 希望用可视化界面而非编写 Python 代码来编排智能体的用户
- 不愿自行承担服务层、存储与生产部署设计的团队
- 源码审查
- 64/100 · 存在缺口
这个 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、网页搜索、工具路由和视频内容结构化。
- Python 后端团队需要让模型输出经过 Pydantic 校验的固定字段,以便安全地交给后续业务代码处理。
- 开发搜索或研究流程的工程师,需要把查询生成代理、SearXNG 等搜索工具和答案生成步骤按 Schema 串联。
- 构建 RAG 聊天应用的团队,需要通过
BaseDynamicContextProvider在运行时把检索结果注入系统提示词。 - 需要切换模型供应商的项目,可保留代理和 Schema 设计,同时通过 Instructor 改接 OpenAI、Anthropic、Gemini、Groq、Ollama 或兼容 API。
- 原型开发者希望从 Atomic Forge 选择并下载单个搜索、PDF、天气或 YouTube 工具,而不安装整套工具依赖。
- 需要监控和重试能力的工程团队,可参考仓库中的 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?
查看各维度的扣分理由
框架以显式 Python 配置、输入输出模式和按需工具组合为核心,CI 的默认权限也仅为 contents: read;README 的提示图说明发送给模型的信息,外部调用通常由开发者选择的客户端或工具决定,因此最小权限、数据流和外部影响有一定可控性。扣分点是未见统一的用户确认机制、工具副作用分级、出站数据清单、秘密脱敏或保留策略;API 密钥仅通过环境变量示例体现。reset_history 提供有限状态恢复,但没有面向外部操作的事务或回滚协议。依赖有版本约束且 Instructor 被精确固定,但大量依赖仅使用范围,CI 使用 latest 安装器和未固定提交哈希的 Actions,也未展示漏洞扫描或供应链策略。许可证、作者、邮箱和仓库归属清楚,故来源署名充分;发布者未获企业注册验证仅表示身份未知,并未作为额外扣分依据。
测试覆盖同步、异步、流式、历史同步、模式严格性、钩子隔离及 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 行为,却没有足够源码证据证明所有用户可见失败都有清晰、可操作的消息。
README 明确面向开发者,并覆盖聊天、RAG、研究、搜索、编排、多模态、视频处理和自定义工具等多种场景,受众与用例说明充分。泛型输入输出模式、上下文提供器、可替换模型客户端及 Python 控制流带来较强适配性。扣分在于兼容性主要继承自 Instructor,部分支持表述是概括性的;框架自身没有展示统一的能力声明或权限边界。触发和路由可由模式、系统提示及编排代码精确表达,但安全确认仍由应用作者实现。Python 3.12+、提供商额外包和 API 密钥要求记录清楚,但 requirements.txt 冲突削弱了环境适配的确定性。
README 有目录、核心概念、架构图、安装、项目结构、提供商兼容性、支持、贡献和许可证入口,信息架构与上手说明完整;快速示例和多个完整案例获得充分支持。命名总体稳定,并有明确的 AtomicAgent、AgentConfig、Schema 和 Context Provider 概念,但 Atomic Forge、Atomic Assembler、CLI 包及旧版 requirements 之间存在版本和产品边界混杂。已标注 Beta,并提到提供商依赖,但缺少集中、具体的已知限制、隐私和副作用说明。MIT 正文及元数据一致,许可证充分。pyproject 给出版本,README 宣传 2.0,但所给材料没有实际变更日志或完整迁移记录。作者邮箱、赞助入口、贡献指南和社区渠道提供维护路径,不过个人与组织责任边界及发布者验证状态不够明确。
Pydantic 模式化输出、同步与异步接口、流式响应、历史管理和可组合工具使结果可直接用于代码管线,输出可用性证据较强。相较直接调用模型,框架增加了模式、上下文、钩子和模块化组合,具有实际增量价值;但部分能力来自 Instructor 和 Pydantic,源材料没有量化或对照证明其独有收益,因此未给满分。轻量和按需安装工具有利于成本控制,但模型调用成本、延迟、重试开销、上下文增长和不同提供商的权衡没有被分析。
README 的主要结构性主张可对应到 pyproject、工作流和测试,例如依赖、CLI、模式化输出、历史、流式及提供商适配;多个来源之间也有一定相互印证。扣分是部分广泛宣传语,如可预测、可靠、极轻量和完整提供商兼容性,没有在所给静态材料中被充分界定或测量。徽章和工作流定义不等同于本次已执行或通过,实时 MiniMax 测试还会在无密钥时跳过。文档未始终清楚区分设计目标、继承自依赖的能力、模拟测试结果与经实证验证的运行时结论。
- 不要同时依赖 pyproject.toml 与 requirements.txt 建立环境;两者在框架主版本、Pydantic 下限和 Textual 主版本上冲突,应先确认哪一条安装路径是该修订的权威来源。
- 模型提示、聊天历史、动态上下文和工具输入可能发送给第三方提供商;在生产使用前应自行实现数据分类、脱敏、保留策略和用户同意。
- 框架不提供统一的外部副作用确认或回滚协议;搜索、下载、抓取及自定义工具应由应用层增加预览、确认、幂等和补偿措施。
- 不要把 CI 徽章、工作流定义或带条件跳过的实时测试视为本次修订已独立验证通过。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
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 查看 ↗ -
发布说明摘录
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 查看 ↗ -
发布说明摘录
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 是否需要付费?
是否只能使用 OpenAI?
它会自主决定整个多代理工作流吗?
结构化输出仍可能失败吗?
Atomic Forge 会安装所有工具依赖吗?
atomic-assembler 允许按需下载工具以避免不必要的依赖;每个工具具有自己的输入 Schema、输出 Schema、依赖、安装说明、使用示例和测试。