第 1 章 · Agent 应用开发与 Agno 概述
本章目标:搞清楚 LLM 应用与 AI Agent 的本质区别,理解 Agno 的定位与核心组件,为后续 23 章的动手实践建立全局地图。
1.1 从 LLM 调用到 Agent
直接调用大模型 API(比如发一段文字给 DeepSeek 然后拿回回复)只能解决"一问一答"的问题。真实业务往往需要模型多步工作:先查数据、再计算、再总结。把这种"感知→决策→行动→观察结果→再决策"的循环封装起来,就是一个 Agent(智能体)。
一个典型的 Agent 由五类积木组成:
| 积木 | 作用 | 类比 |
|---|---|---|
| 模型(Model) | 负责"思考",产出文本或工具调用 | 大脑 |
| 工具(Tools) | 让模型能查天气、搜网页、调接口 | 手 |
| 记忆(Memory) | 跨会话记住用户偏好和事实 | 长期记忆 |
| 知识库(Knowledge) | 通过检索(RAG)注入领域资料 | 参考书架 |
| 存储(Storage/DB) | 保存会话历史,让对话可以续上 | 笔记本 |
Agent 的运行循环可以概括为一句话:构建上下文发给模型 → 模型要么回答、要么请求调用工具 → 执行工具并把结果喂回模型 → 循环直到模型不再调用工具 → 返回最终答案。用伪代码表达:
# 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 编写)。官方对它的定位是三层:
- Agent SDK——用几行 Python 定义 Agent;
- Agent Runtime——多智能体 Team、步骤化 Workflow 的运行时;
- 控制面(AgentOS)——把 Agent 一键变成 FastAPI 服务,提供会话隔离、监控、评估等生产能力。
为什么选 Agno 入门
相比 LangChain 的"链式抽象",Agno 刻意让你用普通 Python 结构(if/else、函数、类)来写 AI 逻辑,概念少、上手快;同时它内置了记忆、知识库、存储、人机协同等生产级特性,从玩具到上线不需要换框架。
1.3 核心组件总览
下面这段代码是 Agno 官方文档的"最小可用 Agent",我们把它改造成接入 DeepSeek(OpenAI 兼容的三方模型)的版本——这也是全书统一的写法:
# 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 构造函数里都有对应的参数,先混个脸熟,后续章节逐一实战:
# 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?"差异主要在三点:
- 抽象层级:Chain 框架把流程编排成"链/图"节点;Agno 主张直接写 Python 控制流,调试时你面对的就是普通代码。
- 内置完整度:Agno 把会话存储、用户记忆、向量知识库、Guardrails、MCP、AgentOS 服务化做成开箱即用的组件,不用自己拼装十几个集成包。
- 性能取向:官方强调 Agent 实例化是微秒级、内存占用极小,适合高并发场景大量创建短生命周期 Agent。
当然,框架没有银弹:如果你的场景是复杂的确定性状态机,Workflow(第 20 章)配合普通函数会更合适——这正是 Agno 提供三种编排形态(单 Agent / Team / Workflow)的原因。
1.6 学习路线与环境准备
本课程从零基础出发,路线如下:
- 入门(01–06 章):环境搭建、运行模型、流式输出、结构化输出、Prompt 设计;
- 进阶(07–12 章):工具体系、多模态、会话状态、存储与记忆;
- 高级(13–19 章):RAG、推理模式、人机协同、MCP、多智能体协作;
- 生产实践(20–24 章):Workflow 编排、AgentOS 服务化、可观测性与部署。
现在先把环境装好(下一章会详细展开):
python -m venv .venv && source .venv/bin/activate
pip install -U agno python-dotenv# check_env.py —— 验证安装是否成功
import agno
print("agno 版本:", agno.__version__) # 应输出 2.x.x1.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)"的区别是?
🛠️ 动手实践
- 安装 agno 并运行
check_env.py,记录你的版本号;如果低于 2.x 请升级。 - 把 1.3 的
first_agent.py抄下来运行一次(需要设置DEEPSEEK_API_KEY环境变量),观察终端里工具调用的过程。 - 画出你理解中"Agent 运行循环"的流程图(纸上或任意画图工具),标注上下文构建发生在哪一步。
准备好了就进入第 2 章:环境搭建与第一个 Agent。