如何使用开源的 Agno

open-source入门15 分钟阅读2026/7/20

我曾经深陷 Agent 框架复杂性的泥潭中无法自拔。花了好几周时间和 LangGraph 的状态管理死磕,又被 CrewAI 的抽象层折腾得够呛,好不容易搞出了一个能跑的多 Agent 系统,结果每次需要加个新工具或者改个工作流,它就崩给你看。压死骆驼的最后一根稻草,是一个简单的“加个网页搜索工具”的任务,硬生生演变成了一场长达三天的代码重构。我急需一种能顺着我直觉来构建 Agent 的方式——把它们当成可组合的 Python 对象,而不是什么乱糟糟的图或者死板的流水线。

就在那时,我发现了 Agno(前身是 Phi Data)。这是一个开源框架,它把 Agent 当作 Python 的一等公民来对待,并且将模型、工具、记忆和推理干净地解耦。用它重构了我的项目后,我敢说它彻底改变了我开发 Agent 的思路。接下来,我就带你看看到底该怎么用它。

痛点:我为什么换框架

我之前的配置是三个 Agent 协作完成研究任务。每个 Agent 需要不同的工具、不同的模型配置,还要共享记忆。用之前的框架,加个工具意味着要改配置文件、更新状态模式(state schemas),然后祈祷图的执行流程别出岔子。这种心智负担简直把我的生产力按在地上摩擦。

Agno 的卖点很简单:Agent 就是 Python 对象,工具就是函数,你把它们组合在一起就完事了。没有图编辑器,没有 YAML 配置,没有黑魔法。我一开始是怀疑的,但实在被逼急了,就试了试。

上手:真实的配置过程

首先,安装 Agno:

pip install agno

你还需要安装模型提供商的 SDK。我主要用 OpenAI:

pip install openai

设置你的 API key:

export OPENAI_API_KEY=sk-your-key-here

基础配置就这些。不需要 Docker 容器,不需要数据库迁移,不需要配置文件。我真的惊呆了——我之前用的那个框架,光跑个 "hello world" 都得配一个 2GB 的 Docker 环境。

构建你的第一个 Agent(真正管用的方式)

这是一个基础的网络研究 Agent:

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

research_agent = Agent(
    name="Research Agent",
    model=GPT4oMini(id="gpt-4o-mini"),
    tools=[DuckDuckGoTools()],
    instructions=[
        "You are a research assistant.",
        "Always cite your sources with URLs.",
        "Keep responses concise and factual.",
    ],
)

research_agent.print_response("What are the latest developments in Rust's async ecosystem?")

运行它:

python research_agent.py

我注意到的第一件事就是速度。Agno Agent 的启动时间是毫秒级的,而不是秒级。这个框架非常轻量——它不会去加载一堆你根本用不到的抽象。我之前的框架光初始化一个 Agent 就要 8-12 秒,而 Agno 不到 1 秒就能跑起来。

添加工具:Agno 大放异彩的地方

就是这里让我彻底爱上了它。添加自定义工具其实就是写个 Python 函数:

from agno.agent import Agent
from agno.models.openai import GPT4oMini
from agno.tools import tool

@tool
def calculate_moving_average(prices: list[float], window: int) -> float:
    """Calculate the simple moving average for a list of prices.
    
    Args:
        prices: List of price values
        window: Number of periods for the moving average
    """
    if len(prices) < window:
        return sum(prices) / len(prices)
    relevant = prices[-window:]
    return sum(relevant) / window

finance_agent = Agent(
    name="Finance Agent",
    model=GPT4oMini(id="gpt-4o-mini"),
    tools=[calculate_moving_average],
    instructions=["You are a financial analysis assistant."],
)

finance_agent.print_response(
    "Calculate the 3-day moving average for prices [45.20, 46.10, 44.80, 47.30, 48.50]"
)

不需要装饰器注册,不需要定义模式(schema),不需要单独写工具描述文件。函数的 docstring 直接变成了工具描述,类型提示(type hints)直接变成了参数模式。就这么简单。我第一次试的时候,一直在等那个“现在请配置工具清单”的步骤——结果根本没这步。

Agno 还自带了一个超大的预构建工具库。下面这几个是我经常用的:

from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.yfinance import YFinanceTools
from agno.tools.file import FileTools
from agno.tools.python import PythonTools
from agno.tools.sql import SQLTools

多 Agent 团队:真正的考验

我的实际需求是多个 Agent 协同工作。这是我重建研究系统的方式:

from agno.agent import Agent
from agno.models.openai import GPT4oMini, GPT4o
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.python import PythonTools
from agno.team import Team

# 专家 Agent
researcher = Agent(
    name="Researcher",
    role="Find and gather information",
    model=GPT4oMini(id="gpt-4o-mini"),
    tools=[DuckDuckGoTools()],
    instructions=["Focus on finding accurate, recent information."],
)

analyst = Agent(
    name="Analyst",
    role="Analyze and synthesize findings",
    model=GPT4o(id="gpt-4o"),
    tools=[PythonTools()],
    instructions=[
        "Analyze the data provided by the researcher.",
        "Create visualizations when helpful.",
        "Draw evidence-based conclusions.",
    ],
)

# 团队协调者
research_team = Team(
    name="Research Team",
    mode="coordinate",  # Agent 在协调者领导下协同工作
    members=[researcher, analyst],
)

research_team.print_response(
    "Research the current state of WebAssembly adoption and analyze the trends."
)

mode 参数控制 Agent 之间如何交互。coordinate 模式是指由一个主 Agent 来分配任务;route 模式是团队为每个查询挑选最合适的 Agent;collaborate 模式则是 Agent 并行工作然后合并结果。

我踩过的坑: 我一开始所有东西都用 mode="collaborate",以为并行执行总是更好的。结果发现,对于有先后顺序的任务(先研究,再分析),coordinate 模式靠谱得多。并行模式下,有时候研究员还没找到资料,分析师就已经在那瞎分析了。

记忆:让 Agent 拥有记忆

默认情况下,Agent 是无状态的。添加记忆非常简单直接:

from agno.agent import Agent
from agno.models.openai import GPT4oMini
from agno.memory.v2.memory import Memory
from agno.storage.sqlite import SqliteStorage

# 持久化存储
storage = SqliteStorage(table_name="agent_sessions", db_file="agents.db")

# 带存储的记忆
memory = Memory()

agent = Agent(
    name="Assistant",
    model=GPT4oMini(id="gpt-4o-mini"),
    memory=memory,
    storage=storage,
    add_history_to_messages=True,
    num_history_responses=5,
)

# 第一次对话
agent.print_response("My name is Sarah and I work on distributed systems.")

# 第二次对话——Agent 记住了
agent.print_response("What field do I work in?")

add_history_to_messages=True 这个参数会把之前的对话轮次注入到上下文中。num_history_responses 控制注入多少轮。我一开始设了 10,但那烧 token 的速度简直飞起。对于我的使用场景,5 轮是最完美的甜点。

使用 AgentOS 部署上线

当你准备部署时,Agno 提供了 AgentOS——一个将 Agent 作为 API 提供服务并带有管理 UI 的运行时。最快的上手方式:

# 克隆启动模板
git clone https://github.com/agno-agi/agentos-docker.git agent-platform
cd agent-platform

# 阅读并按照 README 操作
# 它会配置好:API 服务器、Postgres 数据库、MCP 服务器和控制平面
docker compose up

这会为你的 Agent 提供一个 REST API、持久化存储,以及一个用于监控的 Web UI。我在 DigitalOcean 的一台云主机上大概 20 分钟就部署好了。

你也可以把这套配置丢给编程 Agent 去干。Agno 文档建议给 Claude Code 或 Cursor 这样的工具用下面这个提示词:

Help me set up my agent platform. Clone https://github.com/agno-agi/agentos-railway into a folder called agent-platform, cd in, read the README, and follow the get started guide.

它为不同平台提供了模板:agentos-awsagentos-gcpagentos-azureagentos-flyagentos-renderagentos-modal,以及用于 Kubernetes 的 agentos-helm

来自实战的经验之谈

1. 开发时先用 GPT-4o-mini。 便宜又快。把 GPT-4o 留给生产环境或复杂的推理任务。我第一天就用 GPT-4o 跑所有东西,连测试也不放过,结果一天就烧了 40 美元的 API 费用。

2. 指令要具体。 Agno Agent 会死板地遵守指令。“Be helpful” 只会得到泛泛的回答。“Always respond in bullet points, cite sources with URLs, and flag uncertainty with [UNVERIFIED]” 才能产出稳定、有用的结果。

3. 使用 markdown=True 参数让输出更易读:

agent = Agent(
    name="Writer",
    model=GPT4oMini(id="gpt-4o-mini"),
    markdown=True,  # 将响应格式化为 markdown
)

4. 先独立测试工具。 在把自定义工具接入 Agent 之前,先把它当成普通 Python 函数测一测。我浪费了一个小时调试 Agent 的问题,结果发现是我工具的类型提示(type hints)写错了。

5. 监控 token 用量。 Agno 会记录每次运行的 token 消耗。盯紧点,尤其是在跑多 Agent 团队的时候。两个 Agent 进行长“对话”,分分钟就能吃掉几千个 token。

实话实说的局限性

Agno 并非完美无缺。文档虽然在不断完善,但依然有缺口——我有时候不得不去读源码才能搞懂某些记忆配置选项。框架的演进速度也很快,这意味着版本之间偶尔会出现破坏性更新。记得在 requirements.txt 里锁定你的版本。

内置工具很方便,但定制性有时不够。我就曾为了加限流和结果过滤,不得不去 fork 了 DuckDuckGoTools。社区的工具库在不断壮大,但跟 LangChain 比起来,规模还是差了点。

多 Agent 协作在简单的任务委派上表现很好,但遇到复杂的相互依赖就容易抓瞎。如果你需要 Agent 之间进行协商、投票,或者维护可变的共享状态,你就得自己写协调逻辑了。

最后,AgentOS 还比较新。用它来服务 Agent 和做基础监控没问题基本监控没问题,但如果你需要高级的可观测性(详细的链路追踪、自定义指标),你就得把 Langfuse 或 Phoenix 这样的工具跟它集成在一起用了。

最终评价

用了 Agno 三个月后,我用一半的代码量和四分之一的复杂度重建了我的研究平台。以前要花好几天才能建好的 Agent,现在几个小时就搞定了。这个框架不会碍手碍脚,它让你把精力集中在 Agent 到底要干什么上,而不是怎么把它们接线拼装上。

如果你受够了那些笨重的 Agent 框架,想要一种像写普通 Python 一样的开发体验,试试 Agno 吧。从小处着手——一个 Agent,一个工具——然后再逐步扩展。这种可组合的设计意味着,当你的系统规模增长时,你不会撞到南墙。

相关 Agent

O

OpenClaw

开源 AI Agent 框架,用于构建自主工作流

了解更多 →