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

🚀 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:7777https://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"),
© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞2 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容