Skip to content

第 1 章 · Agent 应用开发与 Agno 概述

本章目标:搞清楚 LLM 应用与 AI Agent 的本质区别,理解 Agno 的定位与核心组件,为后续 23 章的动手实践建立全局地图。

1.1 从 LLM 调用到 Agent

直接调用大模型 API(比如发一段文字给 DeepSeek 然后拿回回复)只能解决"一问一答"的问题。真实业务往往需要模型多步工作:先查数据、再计算、再总结。把这种"感知→决策→行动→观察结果→再决策"的循环封装起来,就是一个 Agent(智能体)

一个典型的 Agent 由五类积木组成:

积木作用类比
模型(Model)负责"思考",产出文本或工具调用大脑
工具(Tools)让模型能查天气、搜网页、调接口
记忆(Memory)跨会话记住用户偏好和事实长期记忆
知识库(Knowledge)通过检索(RAG)注入领域资料参考书架
存储(Storage/DB)保存会话历史,让对话可以续上笔记本

Agent 的运行循环可以概括为一句话:构建上下文发给模型 → 模型要么回答、要么请求调用工具 → 执行工具并把结果喂回模型 → 循环直到模型不再调用工具 → 返回最终答案。用伪代码表达:

python
# Agent 运行循环的骨架(伪代码)
def agent_loop(user_input):
    messages = build_context(user_input)   # 1. 组装上下文
    while True:
        reply = model(messages)            # 2. 请求模型
        if reply.tool_calls:               # 3. 模型想调用工具
            results = run_tools(reply.tool_calls)
            messages.append(results)       # 4. 工具结果回传,继续循环
        else:
            return reply.text              # 5. 没有工具调用 → 最终答案

理解了这个循环,后面所有章节都只是在给这五块积木"升级配件"。

1.2 Agno 是什么

Agno 是一个开源的 Python Agent 框架,当前最新的大版本是 Agno 2.x(本教程基于 agno 2.9.x 编写)。官方对它的定位是三层:

  1. Agent SDK——用几行 Python 定义 Agent;
  2. Agent Runtime——多智能体 Team、步骤化 Workflow 的运行时;
  3. 控制面(AgentOS)——把 Agent 一键变成 FastAPI 服务,提供会话隔离、监控、评估等生产能力。

为什么选 Agno 入门

相比 LangChain 的"链式抽象",Agno 刻意让你用普通 Python 结构(if/else、函数、类)来写 AI 逻辑,概念少、上手快;同时它内置了记忆、知识库、存储、人机协同等生产级特性,从玩具到上线不需要换框架。

1.3 核心组件总览

下面这段代码是 Agno 官方文档的"最小可用 Agent",我们把它改造成接入 DeepSeek(OpenAI 兼容的三方模型)的版本——这也是全书统一的写法:

python
# first_agent.py
import os
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools

agent = Agent(
    # 用 OpenAIChat 连接任意 OpenAI 兼容端点(这里以 DeepSeek 为例)
    model=OpenAIChat(
        id="deepseek-chat",
        api_key=os.getenv("DEEPSEEK_API_KEY"),
        base_url="https://api.deepseek.com/v1",
    ),
    tools=[DuckDuckGoTools()],   # 内置搜索工具包
    instructions=["先搜索再回答", "回答末尾附上信息来源"],
    markdown=True,               # 以 Markdown 格式输出
)

agent.print_response("Agno 框架最新版本是多少?", stream=True)

对照 1.1 的表格,这段代码已经用到了三块积木:模型(model)、工具(tools)、指令(instructions)。后续章节会逐一补齐其余部分:

  • 会话与状态 → 第 10 章;存储 → 第 11 章;记忆 → 第 12 章;
  • 知识库/RAG → 第 13–14 章;多智能体 Team → 第 18–19 章;
  • Workflow → 第 20–21 章;服务化 AgentOS → 第 22 章。

1.4 五大件在代码中的样子

五大积木在 Agno 的 Agent 构造函数里都有对应的参数,先混个脸熟,后续章节逐一实战:

python
# components_map.py —— 五大件与 Agent 参数的对应关系(仅示意,勿直接运行)
Agent(
    model=OpenAIChat(id="deepseek-chat"),   # 模型
    tools=[DuckDuckGoTools()],              # 工具
    db=SqliteDb(db_file="app.db"),          # 存储:会话持久化
    # memory=MemoryManager(...),            # 记忆(第 12 章)
    # knowledge=Knowledge(...),             # 知识库(第 13 章)
)

1.5 Agno 与传统 Chain 框架的差异

初学者常问:"LangChain/LangGraph 也能做 Agent,为什么要用 Agno?"差异主要在三点:

  1. 抽象层级:Chain 框架把流程编排成"链/图"节点;Agno 主张直接写 Python 控制流,调试时你面对的就是普通代码。
  2. 内置完整度:Agno 把会话存储、用户记忆、向量知识库、Guardrails、MCP、AgentOS 服务化做成开箱即用的组件,不用自己拼装十几个集成包。
  3. 性能取向:官方强调 Agent 实例化是微秒级、内存占用极小,适合高并发场景大量创建短生命周期 Agent。

当然,框架没有银弹:如果你的场景是复杂的确定性状态机,Workflow(第 20 章)配合普通函数会更合适——这正是 Agno 提供三种编排形态(单 Agent / Team / Workflow)的原因。

1.6 学习路线与环境准备

本课程从零基础出发,路线如下:

  • 入门(01–06 章):环境搭建、运行模型、流式输出、结构化输出、Prompt 设计;
  • 进阶(07–12 章):工具体系、多模态、会话状态、存储与记忆;
  • 高级(13–19 章):RAG、推理模式、人机协同、MCP、多智能体协作;
  • 生产实践(20–24 章):Workflow 编排、AgentOS 服务化、可观测性与部署。

现在先把环境装好(下一章会详细展开):

bash
python -m venv .venv && source .venv/bin/activate
pip install -U agno python-dotenv
python
# check_env.py —— 验证安装是否成功
import agno

print("agno 版本:", agno.__version__)  # 应输出 2.x.x

1.7 本章小结

  • LLM API 是"一问一答",Agent 是带工具调用循环的自主系统;
  • Agent 五大件:模型、工具、记忆、知识库、存储;
  • Agno = Agent SDK + Runtime + AgentOS 控制面,主张用普通 Python 写 AI 逻辑;
  • 全书示例统一使用 OpenAIChat(base_url=...) 接入三方 OpenAI 兼容模型。

🧪 随堂测验

点击你认为正确的选项。答错时会展示正确答案与原因解析。

1. 下列哪一项不属于 Agent 运行循环中的环节?

2. 在本教程中,接入 DeepSeek 这类 OpenAI 兼容三方模型的推荐方式是?

3. 关于 Agno 的整体定位,说法正确的是?

4. Agent 中"知识库(Knowledge)"和"记忆(Memory)"的区别是?

🛠️ 动手实践

  1. 安装 agno 并运行 check_env.py,记录你的版本号;如果低于 2.x 请升级。
  2. 把 1.3 的 first_agent.py 抄下来运行一次(需要设置 DEEPSEEK_API_KEY 环境变量),观察终端里工具调用的过程。
  3. 画出你理解中"Agent 运行循环"的流程图(纸上或任意画图工具),标注上下文构建发生在哪一步。

准备好了就进入第 2 章:环境搭建与第一个 Agent