Agno:18.7K Star!快速构建多模态智能体的轻量级框架,运行速度比LangGraph快5000倍!

本文涉及的产品
图像搜索,7款服务类型 1个月
简介: Agno 是一个用于构建多模态智能体的轻量级框架,支持文本、图像、音频和视频等多种数据模态,能够快速创建智能体并实现高效协作。

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


大家好,我是蚝油菜花,今天跟大家分享一下 Agno 这个用于构建多模态智能体的轻量级框架。

🚀 快速阅读

Agno 是一个用于构建多模态智能体的轻量级框架。

  1. 核心功能:支持文本、图像、音频和视频等多种数据模态,创建智能体的速度比传统框架快 5000 倍。
  2. 技术原理:基于 Python 实现,无依赖性设计,支持与向量数据库集成,实现高效的检索增强生成(RAG)或动态少样本学习。

Agno 是什么

Agno

Agno 是一个用于构建多模态智能体的轻量级框架。它支持多种数据模态(如文本、图像、音频和视频),并且可以快速创建智能体。Agno 提供了内存管理和知识库支持,能够将用户会话和智能体状态存储在数据库中,基于向量数据库实现动态少样本学习。此外,Agno 支持多智能体协作,帮助用户实时跟踪智能体会话和性能。

Agno 的设计目标是简化开发流程,提升性能,并确保灵活性。通过无依赖性架构和纯 Python 实现,开发者可以轻松上手并快速构建高效的智能体应用。

Agno 的主要功能

  • 极速智能体创建:创建智能体的速度比传统框架(如 LangGraph)快 5000 倍。
  • 模型无关性:支持任何模型和提供商,用户可以根据需要选择不同的模型,无需担心供应商锁定。
  • 多模态支持:原生支持文本、图像、音频和视频等多种数据模态。
  • 多智能体协作:支持将任务分配给多个专业化的智能体,实现高效的分工和协作。
  • 内存管理:将用户会话和智能体状态存储在数据库中,确保数据的持久化和安全性。
  • 知识库支持:基于向量数据库实现检索增强生成(RAG)或动态少样本学习,提升智能体的知识检索能力。
  • 结构化输出:智能体支持结构化数据格式响应,方便与其他系统集成。
  • 实时监控:在 agno.com 上实时跟踪智能体会话和性能,便于管理和优化。

Agno 的技术原理

  • 纯 Python 实现:Agno 基于 Python 编写,避免复杂的图结构、链式调用或其他复杂的模式,让代码更加简洁易懂,同时也便于开发者快速上手。
  • 无依赖性架构:用无依赖性设计,支持任何模型、任何提供商和任何模态。
  • 向量数据库集成:支持与向量数据库集成,利用向量数据库的高效检索能力,实现检索增强生成(RAG)或动态少样本学习。
  • 多智能体协作机制:基于任务分配和分工,将复杂任务分解为多个子任务,由不同的专业智能体分别处理。

如何运行 Agno

1. 安装 Agno

pip install -U agno

2. 创建基本智能体

from agno.agent import Agent
from agno.models.openai import OpenAIChat

agent = Agent(
    model=OpenAIChat(id="gpt-4o"),
    description="You are an enthusiastic news reporter with a flair for storytelling!",
    markdown=True
)
agent.print_response("Tell me about a breaking news story from New York.", stream=True)

要运行该智能体,请安装依赖项并导出 OPENAI_API_KEY

pip install agno openai

export OPENAI_API_KEY=sk-xxxx

python basic_agent.py

3. 创建带有工具的智能体

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

agent = Agent(
    model=OpenAIChat(id="gpt-4o"),
    description="You are an enthusiastic news reporter with a flair for storytelling!",
    tools=[DuckDuckGoTools()],
    show_tool_calls=True,
    markdown=True
)
agent.print_response("Tell me about a breaking news story from New York.", stream=True)

安装依赖项并运行智能体:

pip install duckduckgo-search

python agent_with_tools.py

4. 创建带有知识库的智能体

from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.embedder.openai import OpenAIEmbedder
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.knowledge.pdf_url import PDFUrlKnowledgeBase
from agno.vectordb.lancedb import LanceDb, SearchType

agent = Agent(
    model=OpenAIChat(id="gpt-4o"),
    description="You are a Thai cuisine expert!",
    instructions=[
        "Search your knowledge base for Thai recipes.",
        "If the question is better suited for the web, search the web to fill in gaps.",
        "Prefer the information in your knowledge base over the web results."
    ],
    knowledge=PDFUrlKnowledgeBase(
        urls=["https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"],
        vector_db=LanceDb(
            uri="tmp/lancedb",
            table_name="recipes",
            search_type=SearchType.hybrid,
            embedder=OpenAIEmbedder(id="text-embedding-3-small"),
        ),
    ),
    tools=[DuckDuckGoTools()],
    show_tool_calls=True,
    markdown=True
)

# Comment out after the knowledge base is loaded
if agent.knowledge is not None:
    agent.knowledge.load()

agent.print_response("How do I make chicken and galangal in coconut milk soup", stream=True)
agent.print_response("What is the history of Thai curry?", stream=True)

安装依赖项并运行智能体:

pip install lancedb tantivy pypdf duckduckgo-search

python agent_with_knowledge.py

5. 创建多智能体协作

from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.yfinance import YFinanceTools

web_agent = Agent(
    name="Web Agent",
    role="Search the web for information",
    model=OpenAIChat(id="gpt-4o"),
    tools=[DuckDuckGoTools()],
    instructions="Always include sources",
    show_tool_calls=True,
    markdown=True,
)

finance_agent = Agent(
    name="Finance Agent",
    role="Get financial data",
    model=OpenAIChat(id="gpt-4o"),
    tools=[YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True)],
    instructions="Use tables to display data",
    show_tool_calls=True,
    markdown=True,
)

agent_team = Agent(
    team=[web_agent, finance_agent],
    model=OpenAIChat(id="gpt-4o"),
    instructions=["Always include sources", "Use tables to display data"],
    show_tool_calls=True,
    markdown=True,
)

agent_team.print_response("What's the market outlook and financial performance of AI semiconductor companies?", stream=True)

安装依赖项并运行智能体团队:

pip install duckduckgo-search yfinance

python agent_team.py

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

相关文章
|
13天前
|
机器学习/深度学习 人工智能 监控
DiffuEraser:阿里通义实验室推出的视频修复模型,支持高清修复、时间一致性优化
DiffuEraser 是阿里通义实验室推出的基于稳定扩散模型的视频修复工具,能够生成丰富的细节并保持时间一致性,适用于电影修复、监控增强等场景。
104 25
DiffuEraser:阿里通义实验室推出的视频修复模型,支持高清修复、时间一致性优化
|
3天前
|
存储 人工智能 缓存
DiffSplat:输入文本或图像,2秒内生成3D建模!北大联合字节开源3D建模生成框架
DiffSplat 是由北京大学和字节跳动联合推出的一个高效 3D 生成框架,能够在 1-2 秒内从文本提示或单视图图像生成高质量的 3D 高斯点阵,并确保多视图下的一致性。
76 19
DiffSplat:输入文本或图像,2秒内生成3D建模!北大联合字节开源3D建模生成框架
|
3天前
|
机器学习/深度学习 存储 人工智能
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
MNN-LLM App 是阿里巴巴基于 MNN-LLM 框架开发的 Android 应用,支持多模态交互、多种主流模型选择、离线运行及性能优化。
297 13
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
|
12天前
|
机器学习/深度学习 人工智能 算法
《一文读懂!Q-learning状态-动作值函数的直观理解》
Q-learning算法是强化学习领域的核心,广泛应用于机器人控制、游戏AI和自动驾驶等领域。其关键在于理解状态-动作值函数(Q值),即智能体在特定状态下采取某动作的长期价值评估。通过不断与环境交互,智能体根据奖励信号更新Q值,逐步优化行为策略,最终实现累积奖励最大化。掌握Q值计算及其更新机制,是深入理解强化学习的基础,也是设计高效AI系统的关键。
70 25
|
11天前
|
网络协议 应用服务中间件 网络安全
Nginx,正向代理
本文介绍了Nginx作为HTTPS正向代理的两种方案:HTTP CONNECT隧道(7层)和NGINX stream(4层)。HTTP CONNECT隧道需要客户端手动配置代理,通过CONNECT请求建立隧道;而NGINX stream则更适合透明代理,利用SNI字段实现流量转发。文章详细讲解了两者的原理、环境搭建、使用场景及常见问题,并提供了配置示例和最佳实践建议。内容转载自阿里云开发者社区@怀知的文章,推荐读者参阅原文获取更多信息。感谢您的阅读!
226 80
Nginx,正向代理
|
13天前
|
机器学习/深度学习 数据采集 监控
深度学习中模型训练的过拟合与欠拟合问题
在机器学习和深度学习中,过拟合和欠拟合是影响模型泛化能力的两大常见问题。过拟合指模型在训练数据上表现优异但在新数据上表现差,通常由模型复杂度过高、数据不足或质量差引起;欠拟合则指模型未能充分学习数据中的模式,导致训练和测试数据上的表现都不佳。解决这些问题需要通过调整模型结构、优化算法及数据处理方法来找到平衡点,如使用正则化、Dropout、早停法、数据增强等技术防止过拟合,增加模型复杂度和特征选择以避免欠拟合,从而提升模型的泛化性能。
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
Baichuan-Omni-1.5:百川智能开源全模态理解与生成模型,支持文本、图像、音频和视频的多模态输入和输出
Baichuan-Omni-1.5 是百川智能开源的全模态理解模型,支持文本、图像、音频和视频的多模态输入和输出,显著提升多模态交互体验。
109 22
Baichuan-Omni-1.5:百川智能开源全模态理解与生成模型,支持文本、图像、音频和视频的多模态输入和输出
|
18天前
|
人工智能 自然语言处理 API
UI-TARS:字节跳动开源专注于多平台 GUI 自动化交互的视觉语言模型
UI-TARS 是字节跳动推出的新一代原生图形用户界面(GUI)代理模型,支持跨平台自动化交互,具备强大的感知、推理、行动和记忆能力,能够通过自然语言指令完成复杂任务。
278 16
UI-TARS:字节跳动开源专注于多平台 GUI 自动化交互的视觉语言模型
|
10天前
|
并行计算 安全 Java
Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
在Python开发中,GIL(全局解释器锁)一直备受关注。本文基于CPython解释器,探讨GIL的技术本质及其对程序性能的影响。GIL确保同一时刻只有一个线程执行代码,以保护内存管理的安全性,但也限制了多线程并行计算的效率。文章分析了GIL的必要性、局限性,并介绍了多进程、异步编程等替代方案。尽管Python 3.13计划移除GIL,但该特性至少要到2028年才会默认禁用,因此理解GIL仍至关重要。
61 16
Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
|
9天前
|
机器学习/深度学习 人工智能 算法
o3-mini:OpenAI 发布最新推理模型,强大的STEM推理能力,灵活调整推理强度
OpenAI o3-mini是OpenAI推出的全新推理模型,专为科学、数学和编程等技术领域优化,支持三种推理强度,灵活调整性能。
123 25
o3-mini:OpenAI 发布最新推理模型,强大的STEM推理能力,灵活调整推理强度

热门文章

最新文章