Agno推理Demo是一个基于Agno框架构建的智能体系统,展示了如何利用多智能体协作、知识管理和推理能力解决复杂问题。该demo主要实现了金融数据分析、基础问答、数学推理和网络搜索等功能,通过智能体团队协作完成综合性任务。
| 组件 | 用途 | 版本/说明 |
|---|---|---|
| Python | 开发语言 | 3.8+ |
| Agno | 智能体框架 | 核心库 |
| OpenAI | 大语言模型 | GPT-4o, GPT-4o-mini, o3-mini |
| PostgreSQL | 关系数据库 | 用于存储智能体状态和记忆 |
| LanceDB | 向量数据库 | 用于知识库的向量搜索 |
| FastAPI | Web框架 | 用于提供API服务 |
| DuckDuckGo | 搜索引擎 | 用于网络搜索功能 |
推理demo/
├── reasoning_demo.py # 主程序文件
└── 依赖库 # 通过pip安装
├── openai
├── exa_py
├── ddgs
├── yfinance
├── pypdf
├── sqlalchemy
├── fastapi[standard]
├── youtube-transcript-api
├── python-docx
└── agno
Agno框架采用模块化设计,主要包含以下核心组件:
| 组件 | 功能描述 |
|---|---|
| Agent | 智能体,框架的核心执行单元 |
| Team | 智能体团队,管理多个智能体协作 |
| Knowledge | 知识库,管理和存储结构化知识 |
| Tools | 工具系统,提供各种功能工具 |
| Reasoning | 推理模块,支持逐步推理功能 |
| VectorDB | 向量数据库,用于知识的向量搜索 |
| AgentOS | 智能体操作系统,管理整个系统 |
该推理demo采用了分层架构设计:
核心功能:获取金融数据并以表格形式展示
finance_agent = Agent(
name="Finance Agent",
role="Get financial data",
id="finance-agent",
model=OpenAIChat(id="gpt-4o"),
tools=[
DuckDuckGoTools(
enable_news=True,
)
],
instructions=["Always use tables to display data"],
db=db,
add_history_to_context=True,
num_history_runs=5,
add_datetime_to_context=True,
markdown=True,
)
设计亮点:
核心功能:使用思维链技术回答基础问题
cot_agent = Agent(
name="Chain-of-Thought Agent",
role="Answer basic questions",
id="cot-agent",
model=OpenAIChat(id="gpt-4o-mini"),
db=db,
add_history_to_context=True,
num_history_runs=3,
add_datetime_to_context=True,
markdown=True,
reasoning=True,
)
设计亮点:
reasoning=True,支持思维链推理核心功能:使用专门的推理模型进行数学推理
reasoning_model_agent = Agent(
name="Reasoning Model Agent",
role="Reasoning about Math",
id="reasoning-model-agent",
model=OpenAIChat(id="gpt-4o"),
reasoning_model=OpenAIChat(id="o3-mini"),
instructions=["You are a reasoning agent that can reason about math."],
markdown=True,
db=db,
)
设计亮点:
model:GPT-4o,用于复杂问题处理reasoning_model:o3-mini,专门用于推理过程核心功能:使用推理工具回答问题
reasoning_tool_agent = Agent(
name="Reasoning Tool Agent",
role="Answer basic questions",
id="reasoning-tool-agent",
model=OpenAIChat(id="gpt-4o-mini"),
db=db,
add_history_to_context=True,
num_history_runs=3,
add_datetime_to_context=True,
markdown=True,
tools=[ReasoningTools()],
)
设计亮点:
ReasoningTools(),提供专门的推理工具支持核心功能:处理网络搜索请求并提供来源
web_agent = Agent(
name="Web Search Agent",
role="Handle web search requests",
model=OpenAIChat(id="gpt-4o-mini"),
id="web_agent",
tools=[DuckDuckGoTools()],
instructions="Always include sources",
add_datetime_to_context=True,
db=db,
)
设计亮点:
核心功能:管理和查询知识库
knowledge_agent = Agent(
id="knowledge_agent",
name="Knowledge Agent",
model=OpenAIChat(id="gpt-4o"),
tools=[knowledge_tools],
markdown=True,
db=db,
)
设计亮点:
knowledge_tools,提供知识库的完整功能核心功能:结合网络搜索和金融分析能力,解决综合性金融问题
reasoning_finance_team = Team(
name="Reasoning Finance Team",
model=OpenAIChat(id="gpt-4o"),
members=[
web_agent,
finance_agent,
],
tools=[ReasoningTools(add_instructions=True)],
id="reasoning_finance_team",
instructions=[
"Only output the final answer, no other text.",
"Use tables to display data",
],
markdown=True,
show_members_responses=True,
add_datetime_to_context=True,
db=db,
)
设计亮点:
web_agent和finance_agent,实现优势互补ReasoningTools,增强团队推理能力web_agent:搜索相关金融信息
- finance_agent:分析金融数据并生成表格
agno_docs = Knowledge(
vector_db=LanceDb(
uri="tmp/lancedb",
table_name="agno_docs",
search_type=SearchType.hybrid,
),
)
knowledge_tools = KnowledgeTools(
knowledge=agno_docs,
enable_think=True,
enable_search=True,
enable_analyze=True,
add_few_shot=True,
)
设计亮点:
enable_think:启用思维功能enable_search:启用搜索功能enable_analyze:启用分析功能add_few_shot:添加少量示例
if __name__ == "__main__":
agno_docs.add_content(name="Agno Docs", url="https://www.paulgraham.com/read.html")
agent_os.serve(app="reasoning_demo:app", reload=True)
功能说明:
add_content方法添加URL内容到知识库Agno框架的推理功能基于以下核心组件:
| 组件 | 功能描述 |
|---|---|
| NextAction | 枚举类,定义推理的下一步动作(继续、验证、最终答案、重置) |
| ReasoningStep | 单个推理步骤,包含标题、动作、结果、推理过程等 |
| ReasoningSteps | 推理步骤列表,用于管理多个推理步骤 |
该demo展示了两种主要的推理模式:
reasoning=True启用,如cot_agentreasoning_model使用专门的推理模型,如reasoning_model_agentReasoningTools()提供推理工具支持,如reasoning_tool_agent和reasoning_finance_teamagent_os = AgentOS(
description="Example OS setup",
agents=[
finance_agent,
cot_agent,
reasoning_model_agent,
reasoning_tool_agent,
knowledge_agent,
],
teams=[reasoning_finance_team],
)
app = agent_os.get_app()
功能说明:
AgentOS是智能体操作系统,管理所有智能体和团队get_app()方法获取FastAPI应用实例if __name__ == "__main__":
agno_docs.add_content(name="Agno Docs", url="https://www.paulgraham.com/read.html")
agent_os.serve(app="reasoning_demo:app", reload=True)
功能说明:
serve()方法启动Web服务app参数指定应用入口reload=True启用热重载,便于开发问题:当前代码中数据库URL等配置硬编码在代码中
优化建议:
# 使用环境变量管理配置
import os
from dotenv import load_dotenv
load_dotenv()
db_url = os.getenv("DATABASE_URL", "postgresql+psycopg://ai:ai@localhost:5532/ai")
问题:当前代码缺乏完善的错误处理机制
优化建议:
try:
agno_docs.add_content(name="Agno Docs", url="https://www.paulgraham.com/read.html")
except Exception as e:
print(f"Error adding content to knowledge base: {e}")
问题:当前代码缺乏完善的日志记录
优化建议:
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
logger.info("Starting AgentOS...")
问题:部分智能体使用了较昂贵的模型
优化建议:
# 根据任务复杂度动态选择模型
if task_complexity == "high":
model = OpenAIChat(id="gpt-4o")
elif task_complexity == "medium":
model = OpenAIChat(id="gpt-4o-mini")
else:
model = OpenAIChat(id="o3-mini")
Agno推理Demo展示了一个功能完整、架构清晰的智能体系统,具有以下特点:
该demo为学习智能体系统设计和实现提供了很好的参考:
通过对Agno推理Demo的深入分析,我们可以看到智能体系统在解决复杂问题方面的巨大潜力。随着大语言模型和智能体技术的不断发展,相信未来会出现更多功能强大、应用广泛的智能体系统,为各个领域带来革命性的变化。
还没有人回复