🚀 Agno快速学习攻略:从零到精通的完整指南

📖 前言
Agno是一个功能强大的全栈框架,专门用于构建具有记忆、知识和推理能力的多智能体系统。本攻略将带你从零开始,快速掌握Agno的核心概念和实际应用。
🎯 学习目标
通过本攻略,你将学会:
Agno的核心概念和架构
如何创建和配置智能体
工具集成和多模态处理
构建多智能体系统
生产环境部署和监控
📋 目录
环境准备
核心概念
第一个智能体
五个等级的智能体系统
工具和多模态
知识库和记忆
多智能体系统
部署和监控
最佳实践
进阶学习
🛠️ 环境准备
1. 安装Agno
# 创建虚拟环境
python3 -m venv agno-env
source agno-env/bin/activate # Mac/Linux
# agno-envScriptsactivate # Windows
# 安装Agno
pip install -U agno
2. 设置API密钥
# OpenAI API密钥(推荐)
export OPENAI_API_KEY=sk-***
# 其他可选的API密钥
export ANTHROPIC_API_KEY=sk-***
export GOOGLE_API_KEY=***
3. 验证安装
# 设置Agno
ag setup
# 检查连接
ag ping
🧠 核心概念
Agno的五个等级
Agno支持构建五个等级的智能体系统:
Level 1: 带工具和指令的智能体
Level 2: 带知识库和存储的智能体
Level 3: 带记忆和推理的智能体
Level 4: 能推理和协作的智能体团队
Level 5: 带状态和确定性的智能体工作流
核心组件
Agent: 智能体核心类
Model: 支持23+模型提供商
Tools: 工具集,让智能体与外部系统交互
Knowledge: 知识库,提供领域特定信息
Memory: 记忆系统,存储用户偏好和历史
Storage: 持久化存储
Team: 多智能体团队
Workflow: 确定性工作流
🤖 第一个智能体
基础智能体
# basic_agent.py
from agno.agent import Agent
from agno.models.openai import OpenAIChat
# 创建基础智能体
agent = Agent(
model=OpenAIChat(id="gpt-4o"),
description="你是一个友好的AI助手",
instructions=[
"用中文回答问题",
"保持回答简洁明了",
"如果不确定,请说明"
],
markdown=True
)
# 与智能体对话
agent.print_response("你好,请介绍一下自己", stream=True)
带工具的智能体
# web_search_agent.py
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools
# 创建网络搜索智能体
web_agent = Agent(
model=OpenAIChat(id="gpt-4o"),
tools=[DuckDuckGoTools()],
description="我是一个能搜索网络信息的智能体",
instructions=[
"使用搜索工具获取最新信息",
"总是包含信息来源",
"用中文回答"
],
show_tool_calls=True,
markdown=True
)
# 搜索最新信息
web_agent.print_response("最近AI领域有什么重要进展?", stream=True)
🏗️ 五个等级的智能体系统
Level 1: 工具和指令
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools
level1_agent = Agent(
model=OpenAIChat(id="gpt-4o"),
tools=[DuckDuckGoTools()],
instructions=["搜索最新信息", "提供准确答案"],
markdown=True
)
Level 2: 知识库和存储
from agno.agent import Agent
from agno.knowledge.pdf import PDFKnowledge
from agno.storage.sqlite import SqliteStorage
from agno.vectordb.lancedb import LanceDb
level2_agent = Agent(
model=OpenAIChat(id="gpt-4o"),
knowledge=PDFKnowledge(
path="documents/",
vector_db=LanceDb(uri="tmp/lancedb")
),
storage=SqliteStorage(
table_name="agent_sessions",
db_file="tmp/agent.db"
),
search_knowledge=True,
add_history_to_messages=True
)
Level 3: 记忆和推理
from agno.agent import Agent
from agno.memory.v2.memory import Memory
from agno.memory.v2.db.sqlite import SqliteMemoryDb
from agno.tools.reasoning import ReasoningTools
level3_agent = Agent(
model=OpenAIChat(id="gpt-4o"),
tools=[ReasoningTools(add_instructions=True)],
memory=Memory(
db=SqliteMemoryDb(
table_name="user_memories",
db_file="tmp/memory.db"
)
),
enable_agentic_memory=True,
markdown=True
)
🔧 工具和多模态
使用预建工具集
from agno.agent import Agent
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.yfinance import YFinanceTools
from agno.tools.python import PythonTools
multi_tool_agent = Agent(
model=OpenAIChat(id="gpt-4o"),
tools=[
DuckDuckGoTools(), # 网络搜索
YFinanceTools(stock_price=True), # 金融数据
PythonTools() # Python代码执行
],
show_tool_calls=True
)
自定义工具
import json
import httpx
from agno.agent import Agent
def get_weather(city: str) -> str:
"""获取指定城市的天气信息
Args:
city: 城市名称
Returns:
天气信息的JSON字符串
"""
# 这里是示例,实际需要调用天气API
return f"{
{"city": "{city}", "temperature": "25°C", "condition": "晴天"}}"
weather_agent = Agent(
model=OpenAIChat(id="gpt-4o"),
tools=[get_weather],
description="我可以查询天气信息"
)
多模态智能体
from agno.agent import Agent
from agno.media import Image
from agno.tools.dalle import DalleTools
# 图像处理智能体
image_agent = Agent(
model=OpenAIChat(id="gpt-4o"),
tools=[DalleTools()],
description="我可以分析和生成图像"
)
# 分析图像
image_agent.print_response(
"描述这张图片",
images=[Image(url="https://example.com/image.jpg")]
)
# 生成图像
image_agent.print_response("生成一张日落的图片")
📚 知识库和记忆
知识库配置
from agno.knowledge.url import UrlKnowledge
from agno.knowledge.pdf import PDFKnowledge
from agno.vectordb.lancedb import LanceDb
from agno.embedder.openai import OpenAIEmbedder
# URL知识库
url_knowledge = UrlKnowledge(
urls=["https://docs.agno.com"],
vector_db=LanceDb(
uri="tmp/knowledge_db",
embedder=OpenAIEmbedder(id="text-embedding-3-small")
)
)
# PDF知识库
pdf_knowledge = PDFKnowledge(
path="documents/",
vector_db=LanceDb(uri="tmp/pdf_db")
)
knowledge_agent = Agent(
model=OpenAIChat(id="gpt-4o"),
knowledge=url_knowledge,
search_knowledge=True
)
记忆管理
from agno.memory.v2.memory import Memory
from agno.memory.v2.db.sqlite import SqliteMemoryDb
# 配置记忆系统
memory = Memory(
model=OpenAIChat(id="gpt-4o"),
db=SqliteMemoryDb(
table_name="user_memories",
db_file="tmp/memory.db"
)
)
memory_agent = Agent(
model=OpenAIChat(id="gpt-4o"),
memory=memory,
enable_agentic_memory=True, # 智能体自主管理记忆
enable_user_memories=True, # 每次对话后创建记忆
)
# 与智能体对话,它会记住你的偏好
memory_agent.print_response("我叫张三,喜欢喝咖啡", user_id="user_123")
memory_agent.print_response("推荐一些适合我的饮品", user_id="user_123")
👥 多智能体系统
Level 4: 智能体团队
from agno.agent import Agent
from agno.team.team import Team
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.yfinance import YFinanceTools
# 创建专门的智能体
researcher = Agent(
name="研究员",
role="负责信息搜索和研究",
model=OpenAIChat(id="gpt-4o"),
tools=[DuckDuckGoTools()],
instructions=["搜索最新信息", "提供详细分析"]
)
analyst = Agent(
name="分析师",
role="负责数据分析和报告",
model=OpenAIChat(id="gpt-4o"),
tools=[YFinanceTools(stock_price=True)],
instructions=["分析数据", "生成专业报告"]
)
# 创建团队
research_team = Team(
name="研究团队",
members=[researcher, analyst],
instructions=[
"协作完成研究任务",
"确保信息准确性",
"提供综合分析报告"
],
show_members_responses=True
)
# 团队协作
research_team.print_response("分析苹果公司的最新财务状况", stream=True)
Level 5: 工作流
from typing import Iterator
from agno.agent import Agent, RunResponse
from agno.workflow import Workflow
from agno.models.openai import OpenAIChat
class DataAnalysisWorkflow(Workflow):
# 定义工作流中的智能体
data_collector = Agent(
name="数据收集器",
model=OpenAIChat(id="gpt-4o"),
tools=[DuckDuckGoTools()]
)
data_analyzer = Agent(
name="数据分析器",
model=OpenAIChat(id="gpt-4o")
)
def run(self, query: str) -> Iterator[RunResponse]:
# 步骤1: 收集数据
yield RunResponse(content="🔍 开始收集数据...")
data_response = yield from self.data_collector.run(f"收集关于{query}的数据")
# 步骤2: 分析数据
yield RunResponse(content="📊 开始分析数据...")
analysis_response = yield from self.data_analyzer.run(
f"分析以下数据: {data_response.content}"
)
# 步骤3: 生成报告
yield RunResponse(content="📋 生成最终报告...")
yield RunResponse(content=f"## 分析报告
{analysis_response.content}")
# 运行工作流
workflow = DataAnalysisWorkflow()
for response in workflow.run("人工智能市场趋势"):
print(response.content)
🚀 部署和监控
Playground界面
# playground.py
from agno.agent import Agent
from agno.playground import Playground, serve_playground_app
from agno.storage.sqlite import SqliteStorage
# 创建智能体
agents = [
Agent(
name="通用助手",
model=OpenAIChat(id="gpt-4o"),
storage=SqliteStorage(table_name="general_agent", db_file="tmp/agents.db")
),
Agent(
name="网络搜索助手",
model=OpenAIChat(id="gpt-4o"),
tools=[DuckDuckGoTools()],
storage=SqliteStorage(table_name="web_agent", db_file="tmp/agents.db")
)
]
# 创建Playground
app = Playground(agents=agents).get_app()
if __name__ == "__main__":
serve_playground_app("playground:app", reload=True)
运行后访问 http://localhost:7777 或 https://app.agno.com/playground
FastAPI部署
# api_server.py
from agno.agent import Agent
from agno.app.fastapi.app import FastAPIApp
# 创建智能体
api_agent = Agent(
name="API智能体",
model=OpenAIChat(id="gpt-4o"),
















暂无评论内容