Agno是一个轻量级的开源Python框架,专门用于构建多模态AI智能体系统。它支持文本、图像、音频和视频等多种数据类型,并提供记忆、知识库、工具调用和推理等核心能力。
安装Agno
pip install agno
基本智能体初始化
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools
# 创建基础智能体
agent = Agent(
model=OpenAIChat(id="gpt-4o"),
tools=[DuckDuckGoTools()],
markdown=True
)
# 使用智能体进行响应
agent.print_response("What's happening in New York?", stream=True)
完整智能体配置示例
from typing import List
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.knowledge.base import BaseKnowledge
from agno.storage.base import BaseStorage
class AdvancedAgent:
def __init__(
self,
model: OpenAIChat,
tools: List[BaseTool] = [],
knowledge: BaseKnowledge = None,
storage: BaseStorage = None,
reasoning: bool = False
):
self.agent = Agent(
model=model,
tools=tools,
knowledge=knowledge,
storage=storage,
reasoning=reasoning
)
def search_knowledge(self, query: str):
"""知识检索流程"""
if self.agent.knowledge is not None:
# 确保知识库已加载
if not self.agent.knowledge.is_loaded:
self.agent.knowledge.load()
# 执行知识检索
results = self.agent.knowledge.search(query)
return results
return None
def process_query(self, query: str, stream: bool = False):
"""处理查询并返回响应"""
# 首先尝试从知识库检索
knowledge_results = self.search_knowledge(query)
# 如果有相关知识,将其添加到查询中
if knowledge_results:
enhanced_query = f"{query}\n\n相关背景信息:\n{knowledge_results}"
else:
enhanced_query = query
# 获取智能体响应
return self.agent.print_response(enhanced_query, stream=stream)
# 使用示例
if __name__ == "__main__":
# 初始化智能体组件
model = OpenAIChat(id="gpt-4o")
tools = [DuckDuckGoTools()]
# 创建智能体实例
my_agent = AdvancedAgent(
model=model,
tools=tools,
reasoning=True
)
# 处理查询
my_agent.process_query("How do I make chicken and galangal in coconut milk soup?", stream=True)
my_agent.process_query("What is the history of Thai curry?", stream=True)
多智能体协作示例
from agno.agent import Agent
from agno.models.openai import OpenAIChat
# 创建多个专业智能体
research_agent = Agent(
model=OpenAIChat(id="gpt-4o"),
name="Research Specialist",
role="负责信息检索和研究分析"
)
writing_agent = Agent(
model=OpenAIChat(id="gpt-4o"),
name="Content Writer",
role="负责内容创作和文案撰写"
)
analysis_agent = Agent(
model=OpenAIChat(id="gpt-4o"),
name="Data Analyst",
role="负责数据分析和洞察提取"
)
# 智能体协作流程
def collaborative_workflow(topic: str):
"""多智能体协作工作流"""
# 研究智能体收集信息
research_results = research_agent(f"请研究以下主题并收集相关信息: {topic}")
# 分析智能体处理信息
analysis_results = analysis_agent(f"请分析以下研究数据并提供关键洞察:\n{research_results}")
# 写作智能体生成最终内容
final_content = writing_agent(f"基于以下研究和分析,撰写一篇关于{topic}的综合性文章:\n研究: {research_results}\n分析: {analysis_results}")
return final_content
# 执行协作任务
result = collaborative_workflow("人工智能在医疗领域的应用")
print(result)
知识库集成示例
import lancedb
from agno.knowledge.lancedb import LanceDBKnowledge
# 初始化LanceDB知识库
def setup_knowledge_base():
# 创建或连接LanceDB数据库
db = lancedb.connect("./data/knowledge_db")
# 创建知识库实例
knowledge_base = LanceDBKnowledge(
db=db,
table_name="documents",
embedding_model="text-embedding-ada-002"
)
# 加载知识文档(如果有)
# knowledge_base.load_documents(["doc1.pdf", "doc2.txt"])
return knowledge_base
# 使用知识库的智能体
knowledge_agent = Agent(
model=OpenAIChat(id="gpt-4o"),
knowledge=setup_knowledge_base(),
tools=[DuckDuckGoTools()]
)
主要特性
- 极速性能: 智能体创建速度比LangGraph快10,000倍
- 模型无关: 支持OpenAI、Anthropic、Cohere、Ollama等多种模型
- 多模态支持: 原生支持文本、图像、音频和视频处理
- 轻量级: 内存占用仅为其他框架的1/50
- 灵活扩展: 易于添加自定义工具和知识库
应用场景
- 智能客服: 多代理协作处理客户咨询
- 内容创作: 自动化内容生成和优化
- 数据分析: 多角度数据分析和洞察提取
- 教育辅助: 个性化学习建议和资源推荐
- 医疗辅助: 病历分析和诊断支持
Agno框架以其简洁的API设计和卓越的性能表现,为开发者提供了构建复杂AI智能体系统的高效解决方案。