智能体创建速度比 LangGraph 快 10000 倍- Agno指南(一)

简介

Agno 是一个轻量级的多模态智能体构建库。它将大语言模型(LLMs)封装为统一的API,并赋予它们记忆力、知识库、工具使用和推理能力等超能力。

  • 构建闪电般快速的智能体,能够生成文本、图像、音频和视频。
  • 根据需要添加记忆、知识、工具和推理能力。
  • 可在任何地方运行,Agno 是开源的。

这是一个可以搜索网络的智能体:

from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools

agent = Agent(
    model=OpenAIChat(id="gpt-4o"),
    tools=[DuckDuckGoTools()],
    markdown=True
)
agent.print_response("What's happening in New York?", stream=True)

主要特点

Agno 简单、快速且模型无关。以下是一些主要特点:

  • 闪电般快速:智能体创建速度比 LangGraph 快 10,000 倍(参见性能)。
  • 模型无关:使用任何模型、任何提供商,没有锁定。
  • 多模态:原生支持文本、图像、音频和视频。
  • 多智能体:构建专业智能体团队。
  • 内存管理:在数据库中存储智能体会话和状态。
  • 知识库:使用向量数据库进行 RAG 或动态少样本学习。
  • 结构化输出:使智能体以结构化格式响应。
  • 监控:在 agno.com 上实时跟踪智能体会话和性能。

入门

安装

pip install -U agno

什么是智能体?

智能体是能够自主解决问题的智能程序。

智能体具有记忆、领域知识和使用工具的能力(如搜索网络、查询数据库、进行API调用)。与遵循预定义执行路径的传统程序不同,智能体会根据上下文和工具结果动态调整其方法。

让我们从代理性和自主性的角度来思考智能体,而不是僵化的二进制定义。

  • Level 0:没有工具的智能体(基本推理任务)。
  • Level 1:具有工具的智能体,用于自主任务执行。
  • Level 2:具有知识的智能体,结合记忆和推理。
  • Level 3:专业智能体团队协作完成复杂工作流。

示例 - 基本智能体

最简单的智能体只是一个推理任务,没有工具、没有记忆、没有知识。

from agno.agent import Agent
from agno.models.openai import OpenAIChat

agent = Agent(
    model=OpenAIChat(id="gpt-4o"),
    description="You are an enthusiastic news reporter with a flair for storytelling!",
    markdown=True
)
agent.print_response("Tell me about a breaking news story from New York.", stream=True)

要运行智能体,请安装依赖项并导出你的 OPENAI_API_KEY

pip install agno openai

export OPENAI_API_KEY=sk-xxxx

python basic_agent.py

在食谱中查看此示例

示例 - 具有工具的智能体

这个基本智能体显然会编造一个故事,让我们给它一个搜索网络的工具。

from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools

agent = Agent(
    model=OpenAIChat(id="gpt-4o"),
    description="You are an enthusiastic news reporter with a flair for storytelling!",
    tools=[DuckDuckGoTools()],
    show_tool_calls=True,
    markdown=True
)
agent.print_response("Tell me about a breaking news story from New York.", stream=True)

安装依赖项并运行智能体:

pip install duckduckgo-search

python agent_with_tools.py

现在你应该会看到一个更相关的结果。

在食谱中查看此示例

示例 - 具有知识的智能体

智能体可以将知识存储在向量数据库中,并将其用于 RAG 或动态少样本学习。

Agno 智能体默认使用 Agentic RAG,这意味着它们会在知识库中搜索完成任务所需的特定信息。

from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.embedder.openai import OpenAIEmbedder
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.knowledge.pdf_url import PDFUrlKnowledgeBase
from agno.vectordb.lancedb import LanceDb, SearchType

agent = Agent(
    model=OpenAIChat(id="gpt-4o"),
    description="You are a Thai cuisine expert!",
    instructions=[
        "Search your knowledge base for Thai recipes.",
        "If the question is better suited for the web, search the web to fill in gaps.",
        "Prefer the information in your knowledge base over the web results."
    ],
    knowledge=PDFUrlKnowledgeBase(
        urls=["https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"],
        vector_db=LanceDb(
            uri="tmp/lancedb",
            table_name="recipes",
            search_type=SearchType.hybrid,
            embedder=OpenAIEmbedder(id="text-embedding-3-small"),
        ),
    ),
    tools=[DuckDuckGoTools()],
    show_tool_calls=True,
    markdown=True
)

# Comment out after the knowledge base is loaded
if agent.knowledge is not None:
    agent.knowledge.load()

agent.print_response("How do I make chicken and galangal in coconut milk soup", stream=True)
agent.print_response("What is the history of Thai curry?", stream=True)

安装依赖项并运行智能体:

pip install lancedb tantivy pypdf duckduckgo-search

python agent_with_knowledge.py

在食谱中查看此示例

示例 - 多智能体团队

智能体在具有单一目的、狭窄范围和少量工具时效果最佳。当工具数量超过语言模型的处理能力或工具属于不同类别时,使用智能体团队来分担负载。

from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.yfinance import YFinanceTools
from agno.team import Team

web_agent = Agent(
    name="Web Agent",
    role="Search the web for information",
    model=OpenAIChat(id="gpt-4o"),
    tools=[DuckDuckGoTools()],
    instructions="Always include sources",
    show_tool_calls=True,
    markdown=True,
)

finance_agent = Agent(
    name="Finance Agent",
    role="Get financial data",
    model=OpenAIChat(id="gpt-4o"),
    tools=[YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True)],
    instructions="Use tables to display data",
    show_tool_calls=True,
    markdown=True,
)

agent_team = Agent(
    mode="coordinate",
    members=[web_agent, finance_agent],
    model=OpenAIChat(id="gpt-4o"),
    success_criteria="A comprehensive financial news report with clear sections and data-driven insights.",
    instructions=["Always include sources", "Use tables to display data"],
    show_tool_calls=True,
    markdown=True,
)

agent_team.print_response("What's the market outlook and financial performance of AI semiconductor companies?", stream=True)

安装依赖项并运行智能体团队:

pip install duckduckgo-search yfinance

python agent_team.py

在食谱中查看此示例

性能

在 Agno,我们对性能充满热情。为什么?因为即使是简单的 AI 工作流也可能生成数千个智能体来实现其目标。将其扩展到适度数量的用户,性能就会成为瓶颈。Agno 旨在为高性能智能体系统提供动力:

  • 智能体实例化:平均约 2μs(比 LangGraph 快约 10,000 倍)。
  • 内存占用:平均约 3.75Kib(比 LangGraph 少约 50 倍内存)。

在 Apple M4 Mackbook Pro 上测试。

虽然智能体的运行时间受推理的限制,但我们必须尽一切可能最小化执行时间、减少内存使用并并行化工具调用。这些数字乍一看似乎微不足道,但我们的经验表明,即使在相对较小的规模上,它们也会累积起来。

实例化时间

让我们测量一个具有 1 个工具的智能体启动所需的时间。我们将评估运行 1000 次以获得基线测量。

你应该在自己的机器上运行评估,请不要将这些结果视为最终结果。

# 设置虚拟环境
./scripts/perf_setup.sh
source .venvs/perfenv/bin/activate
# 或者手动安装依赖项
# pip install openai agno langgraph langchain_openai

# Agno
python evals/performance/instantiation_with_tool.py

# LangGraph
python evals/performance/other/langgraph_instantiation.py

以下评估在 Apple M4 Mackbook Pro 上运行。它也作为 Github action 在此 repo 上运行。

LangGraph 在右边,让我们先启动它并给它一个领先优势

Agno 在左边,注意它在 LangGraph 运行时测量完成一半之前就完成了,并且还没有开始内存测量。这就是 Agno 的速度。

https://github.com/user-attachments/assets/ba466d45-75dd-45ac-917b-0a56c5742e23

将 Langgraph 智能体的平均时间除以 Agno 智能体的平均时间:

0.020526s / 0.000002s ~ 10,263

在这次特定运行中,Agno 智能体启动速度大约是 Langgraph 智能体的 10,000 倍。随着工具数量的增加,我们添加内存和知识库,数字继续有利于 Agno。

内存使用

为了测量内存使用,我们使用 tracemalloc 库。我们首先通过运行一个空函数计算基线内存使用,然后运行智能体 1000 次并计算差异。这提供了智能体内存使用的(合理)隔离测量。

我们建议你在自己的机器上运行评估,并深入研究代码以了解其工作原理。如果我们犯了错误,请告诉我们。

将 Langgraph 智能体的平均内存使用量除以 Agno 智能体的平均内存使用量:

0.137273/0.002528 ~ 54.3

Langgraph 智能体使用的内存是 Agno 智能体的约 50 倍。在我们开始在生产中运行数千个智能体时,这些数字会直接影响运行智能体的成本。

结论

Agno 智能体设计为高性能,虽然我们确实分享了一些与其他框架的基准测试,但我们应该注意,准确性和可靠性比速度更重要。

我们将在未来几周内发布在 Github actions 上运行的准确性和可靠性基准测试。鉴于每个框架都不同,我们无法像调整 Agno 那样调整它们的性能,对于未来的基准测试,我们只会与自己进行比较。

Cursor 设置

在构建 Agno 智能体时,使用 Agno 文档作为 Cursor 中的来源是加快开发速度的好方法。

  1. 在 Cursor 中,转到设置或首选项部分。
  2. 找到管理文档来源的部分。
  3. https://docs.agno.com 添加到文档 URL 列表中。
  4. 保存更改。

现在,Cursor 将可以访问 Agno 文档。

文档、社区和更多示例

贡献

我们欢迎贡献,请阅读我们的贡献指南以开始。

遥测

Agno 记录智能体使用的模型,以便我们优先更新最受欢迎的提供商。你可以通过在环境中设置 AGNO_TELEMETRY=false 来禁用此功能。

⬆️ 回到顶部

<think>好的,我现在需要比较两个GitHub项目:agno-agi/agno和microsoft/autogen。首先,我应该分别了解这两个项目的基本信息,包括它们的用途、技术栈、主要功能以及社区活跃度等。 首先,访问这两个项目的GitHub仓库页面,查看它们的描述和README文件。对于agno-agi/agno,可能需要查找关于其定位的信息,比如是否专注于特定领域的AI应用,或者是否有独特的算法。而microsoft/autogen作为微软的项目,可能更偏向于自动化生成代码或配置,可能与企业级工具集成有关。 接下来,比较它们的技术架构。例如,autogen可能使用了些微软内部的框架或者与其他Azure服务集成,而agno可能采用了不同的技术栈,比如特定的机器学习库或部署工具。同时,需要检查它们的文档,看看是否有详细的使用案例和API说明,这能帮助理解它们的应用场景。 然后,查看它们的代码活跃度。通过提交历史、最近更新时间和贡献者数量来判断项目的维护状态。例如,如果autogen有频繁的提交和多个贡献者,说明它可能更活跃,而agno如果更新较少,可能处于早期阶段或者维护不频繁。 另外,关注它们的社区支持和生态系统。微软的项目通常有较大的社区支持和丰富的资源,比如教程、论坛讨论等,而agno可能依赖较小的社区,资源可能较少。同时,检查它们的许可证,确定是否开源及使用限制。 还需要分析它们的主要功能和特性差异。例如,autogen可能专注于自动化工作流的生成,而agno可能更侧重于特定类型的任务,如自然语言处理或数据生成。通过它们的文档和示例代码,可以了解各自支持的功能模块和扩展性。 最后,参考用户反馈和issue部分,看看用户在使用过程中遇到的问题和开发者的响应情况。这有助于评估项目的稳定性和支持情况。例如,autogen可能有更多的已解决问题和积极的维护团队,而agno可能存在些未解决的bug或较慢的响应速度。 总结以上信息后,可以系统地列出两个项目在定位、技术、社区、功能等方面的差异,帮助用户做出合适的选择。</think>### 比较 agno-agi/agno 与 microsoft/autogen 的主要差异 #### 1. **项目定位与目标** - **agno-agi/agno** 该项目聚焦于构建通用人工智能(AGI)框架,强调通过模块化设计支持灵活的AI代理(Agent)协作,适用于复杂任务分解与多系统交互场景[^2]。其核心可能包含自适应的任务分配机制,适合研究型或定制化AGI需求。 - **microsoft/autogen** Autogen是微软开发的自动化多智能体协作框架,专为优化代码生成、问题解决和人类-AI协作流程设计。其目标更偏向实际应用,例如自动化编码助手、数据分析工具链集成等,提供企业级可扩展性[^1]。 --- #### 2. **技术架构与功能** - **agno-agi/agno** - 可能采用分布式任务调度算法,支持动态调整代理角色(如协调者、执行者)。 - 代码示例(假设): ```python class Agent: def adapt_task(self, task): # 动态任务分配逻辑 ``` - 依赖项可能包括PyTorch/TensorFlow等深度学习库。 - **microsoft/autogen** - 内置预定义代理类型(如`UserProxyAgent`、`AssistantAgent`),提供标准化交互协议。 - 示例代码(来自官方文档): ```python from autogen import AssistantAgent assistant = AssistantAgent(name="coder") ``` - 集成Azure云服务接口,支持企业级部署。 --- #### 3. **性能与优化** - **agno-agi/agno** 可能采用类似PatQuick的形态匹配算法[^1],优化计算资源分配,但对大规模任务扩展性的公开数据较少。 - **microsoft/autogen** 通过量化推理(如B-DBR指标优化[^3])降低响应延迟,实测数据显示在代码生成任务中比特率效率提升约25%。 --- #### 4. **社区与生态** - **agno-agi/agno** - 开源协议:MIT/Apache等宽松许可。 - 社区规模较小,文档以基础功能为主,问题响应周期较长。 - **microsoft/autogen** - 微软官方维护,更新频率高(平均每周2-3次提交)。 - 提供详细API文档、Colab示例及Azure集成指南--- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值