Type something to search...
Atomic Agents 1.0 简介:构建 Agentic AI 的模块化框架

Atomic Agents 1.0 简介:构建 Agentic AI 的模块化框架

想象一下,构建 AI 应用程序就像组装乐高积木一样轻松。这就是 Atomic Agents 的理念,一个基于 Atomic Design 原则的模块化框架,用于构建 AI 代理。随着 1.0 版本 的发布,Atomic Agents 引入了一个强大的 CLI,称为 Atomic Assembler,使构建、管理和部署 AI 应用程序变得更加简单。

为什么选择原子代理?

许多现有的代理人工智能框架专注于构建自主的多代理系统,这些系统更像是好奇心的产物,而不是实用工具。虽然这些系统可能引人入胜,但它们往往缺乏现实应用所需的可预测性和控制能力。

企业通常并不希望有一个每次都以不同风格撰写文章的机器人。他们希望在风格、结构和语调上保持一致,以与其品牌形象相一致。微调模型是一种方法,但它需要大量的数据和资源,并且在使用最新模型(如GPT-4)时并不总是可行的。

原子代理旨在通过提供以下功能来解决这一问题:

  • 模块化:通过组合简单、可互换的组件构建复杂的人工智能系统。
  • 原子性:原子代理中的每个组件、每个工具、每个代理、每个上下文提供者,都尽可能单一目的和可重用,确保良好的关注点分离。
  • 控制:微调每个单独的步骤和组件,从系统提示到工具。
  • 可预测性:确保可重复和可靠的输出,适合商业用例。
  • 可扩展性:轻松添加或替换组件,而无需彻底改造整个系统。

传统模块化方法

在传统软件开发中,复杂问题被分解为更小、可管理的部分:

  1. 定义问题:从流程、用户故事或客户旅程开始。
  2. 分解:将问题划分为更小、可解决的任务。
  3. 开发模块化代码:编写处理特定任务的函数或类。
  4. 集成:将这些模块组合成完整的应用程序。

Atomic Agents 将这种模块化和可预测性带入 AI 代理开发中。

真实世界场景

与其构建一个“写博客文章”的单体 AI 系统,不如设计一个模块化系统,能够:

  1. 生成 与主题相关的查询。
  2. 识别 最相关的前 X 篇文章。
  3. 访问 每篇识别文章的页面。
  4. 提取 每篇文章的文本。
  5. 生成 每篇文章的摘要。
  6. 存储 摘要到向量数据库中。
  7. 生成 与主题相关的问题。
  8. 使用 向量数据库回答这些问题。
  9. 综合 答案成一篇连贯的博客文章。

这种方法虽然更冗长,但提供了更大的控制、可靠性和适用于现实商业应用的适应性。

CLI的介绍:Atomic Assembler

版本1.0中的一个重要新增功能是Atomic Assembler CLI。这个命令行工具允许您:

  • 下载和管理工具:轻松将新工具或代理添加到您的项目中。
  • 避免不必要的依赖:仅安装您所需的内容。
  • 轻松修改工具:每个工具都有自己的测试和文档。
  • 直接访问工具:如果您愿意,可以手动管理工具,而无需使用CLI。

代理的构成

AI 代理,特别是在 Atomic Agents 框架中,由几个关键组件组成:

  • 系统提示:定义代理的行为和目的。
  • 用户输入:用户提供的数据。
  • 工具:代理可以利用的外部函数或 API。
  • 记忆:跟踪对话或状态。

每个组件都设计为模块化和可互换,遵循关注点分离和单一责任原则。

模块化的力量

通过将代理分解为这些基本组件,您可以:

  • 更换工具 而不影响系统的其余部分。
  • 微调提示 以调整代理的行为。
  • 无缝连接代理和工具,通过匹配它们的输入和输出模式。

使用命令行界面:原子汇编器

安装

要开始使用 Atomic Agents 和 CLI,请通过 pip 安装该软件包:

pip install atomic-agents

运行 CLI

使用以下命令启动 CLI:

atomic

或者,如果您使用 Poetry 安装了 Atomic Agents:

poetry run atomic

您将看到一个菜单,用于下载和管理工具:

图像:Atomic CLI 主菜单

每个工具包括:

  • 输入模式
  • 输出模式
  • 使用示例
  • 依赖项
  • 安装说明

管理工具

Atomic Assembler CLI 提供了对您工具的完全控制,让您可以:

  • 避免依赖杂乱:仅安装您需要的工具。
  • 轻松修改工具:每个工具都是自包含的,拥有自己的测试。
  • 直接访问工具:如果您愿意,可以手动管理工具文件夹。

上下文提供者

Atomic Agents 引入了 上下文提供者,以增强您的代理的动态上下文。上下文提供者允许您在运行时将额外信息注入代理的系统提示中。

使用上下文提供者

创建上下文提供者类:子类化 SystemPromptContextProviderBase 并实现 get_info() 方法。

from atomic_agents.lib.components.system_prompt_generator import SystemPromptContextProviderBase   

class SearchResultsProvider(SystemPromptContextProviderBase):
      def __init__(self, title: str, search_results: List[str]):
          super().__init__(title=title)
          self.search_results = search_results

       def get_info(self) -> str:
          return "\n".join(self.search_results)

将上下文提供者注册到代理

## 使用动态数据初始化上下文提供者
search_results_provider = SearchResultsProvider(
      title="搜索结果",
      search_results=["结果 1", "结果 2", "结果 3"]
)   

## 将上下文提供者注册到代理  
agent.register_context_provider("search_results", search_results_provider)

这使得您的代理能够在其系统提示中包含动态数据,如搜索结果,从而根据最新信息增强其响应。

链接模式和代理

Atomic Agents 通过对齐它们的输入和输出模式来简化代理和工具的链接。这个设计促进了模块化和可重用性。

示例:为不同搜索提供者生成查询

假设您有一个生成搜索查询的代理,并且您希望将这些查询与不同的搜索工具一起使用。通过将代理的输出模式与搜索工具的输入模式对齐,您可以轻松地将它们串联或在提供者之间切换。

import instructor
import openai
from pydantic import Field
from atomic_agents.agents.base_agent import BaseIOSchema, BaseAgent, BaseAgentConfig
from atomic_agents.lib.components.system_prompt_generator import SystemPromptGenerator

## Import the search tool
from web_search_agent.tools.searxng_search import SearxNGSearchTool
class QueryAgentInputSchema(BaseIOSchema):
    """Input schema for the QueryAgent."""
    instruction: str = Field(..., description="Instruction to generate search queries for.")
    num_queries: int = Field(..., description="Number of queries to generate.")


## Initialize the query agent
query_agent = BaseAgent(
    BaseAgentConfig(
        client=instructor.from_openai(openai.OpenAI()),
        model="gpt-4",
        system_prompt_generator=SystemPromptGenerator(
            background=[
                "You are an intelligent query generation expert.",
                "Your task is to generate diverse and relevant queries based on a given instruction."
            ],
            steps=[
                "Receive the instruction and the number of queries.",
                "Generate the queries in JSON format."
            ],
            output_instructions=[
                "Ensure each query is unique and relevant.",
                "Provide the queries in the expected schema."
            ],
        ),
        input_schema=QueryAgentInputSchema,
        output_schema=SearxNGSearchTool.input_schema,  # Align output schema
    )
)

模块化:通过将query_agentoutput_schema设置为与SearxNGSearchToolinput_schema匹配,您可以直接将代理的输出用作工具的输入。

可切换性:要切换到不同的搜索提供者,导入另一个搜索工具并更新output_schema

## Import a different search tool
from web_search_agent.tools.another_search import AnotherSearchTool

## Update the output schema
query_agent.config.output_schema = AnotherSearchTool.input_schema

示例:构建一个简单的 AI 代理

现在我们已经介绍了基础知识,让我们使用 Atomic Agents 构建一个简单的 AI 代理,并探讨它的内部工作原理。

第一步:安装

首先,安装必要的软件包:

pip install atomic-agents openai instructor

步骤 2:导入组件

导入必要的组件:

import os
from atomic_agents.agents.base_agent import BaseAgent, BaseAgentConfig, BaseIOSchema
from atomic_agents.lib.components.system_prompt_generator import SystemPromptGenerator
from atomic_agents.lib.components.agent_memory import AgentMemory
from pydantic import Field
import instructor
import openai

步骤 3:定义自定义输出模式

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

步骤 4:设置系统提示

system_prompt_generator = SystemPromptGenerator(
    background=["这个助手知识渊博、乐于助人,并建议后续问题。"],
    steps=[
        "分析用户的输入,以理解上下文和意图。",
        "制定相关且信息丰富的回应。",
        "为用户生成 3 个建议的后续问题。"
    ],
    output_instructions=[
        "对用户查询提供清晰简洁的信息。",
        "在每个回应的结尾提供 3 个与用户相关的建议问题。"
    ]
)

第5步:初始化代理

## Initialize memory (optional)
memory = AgentMemory()

## Initialize the agent
agent = BaseAgent(
    config=BaseAgentConfig(
        client=instructor.from_openai(openai.OpenAI(api_key=os.getenv('OPENAI_API_KEY'))),
        model="gpt-4o-mini",
        system_prompt_generator=system_prompt_generator,
        memory=memory,
        output_schema=CustomOutputSchema
    )
)

第6步:使用代理

user_input = "Can you explain the benefits of using Atomic Agents?"
response = agent.run(agent.input_schema(chat_message=user_input))
print(f"Agent: {response.chat_message}")
print("Suggested questions:")
for question in response.suggested_questions:
    print(f"- {question}")

幕后发生了什么?

  • System Prompt: 定义代理的行为并指导LLM。
  • Input Schema: 验证用户的输入。
  • Output Schema: 确保代理的响应符合预期格式。
  • Memory: 记录对话历史。

结论

Atomic Agents 1.0 为 AI 代理开发带来了模块化、控制和灵活性。随着 Atomic Assembler CLI 的引入以及上下文提供者和模式链等功能,构建复杂的 AI 应用程序变得前所未有的简单。

无论您是希望构建 AI 驱动工具的开发人员,还是希望自动化复杂任务的企业,Atomic Agents 都提供了创建可靠且易于维护的 AI 系统的基础构件。

今天开始

Related Posts

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

AI 研究报告和论文写作 合并两个系统指令以获得两个模型的最佳效果 Perplexity AI 的 Deep Research 工具提供专家级的研究报告,而 OpenAI 的 ChatGPT-o3-mini-high 擅长推理。我发现你可以将它们结合起来生成令人难以置信的论文,这些论文比任何一个模型单独撰写的都要好。你只需要将这个一次性提示复制到 **

阅读更多
让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

Non members click here作为一名软件开发人员,多年来的一个发现总是让我感到惊讶,那就是人们还在 Excel

阅读更多
使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

10 个常见问题解答 本文是我推出的一个名为“10 个常见问题解答”的新系列的一部分。在本系列中,我旨在通过回答关于该主题的十个最常见问题来分解复杂的概念。我的目标是使用简单的语言和相关的类比,使这些想法易于理解。 图片来自 [Solen Feyissa](https://unsplash.com/@solenfeyissa?utm_source=medium&utm_medi

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

在AI军备竞赛中分辨事实与虚构 DeepSeek AI真的是它所宣传的游戏规则改变者,还是仅仅聪明的营销和战略炒作?👀 虽然一些人将其视为AI效率的革命性飞跃,但另一些人则认为它的成功建立在借用(甚至窃取的)创新和可疑的做法之上。传言称,DeepSeek的首席执行官在疫情期间像囤积卫生纸一样囤积Nvidia芯片——这只是冰山一角。 从其声称的550万美元培训预算到使用Open

阅读更多
Type something to search...