- Model: 控制执行流程。它决定是进行推理、行动还是响应。
- Tools: 使 Agent 能够采取行动并与外部系统进行交互。
- Instructions: 是我们对 Agent 进行编程的方式,教它如何使用工具和进行响应。
- Reasoning: 使 Agents 在响应前能够“思考”并“分析”其行动(即工具调用)的结果,这提高了响应的可靠性和质量。
- Knowledge: 是 Agent 在运行时搜索以做出更好决策和提供准确响应的领域特定信息(RAG)。知识存储在向量数据库中,这种运行时搜索模式称为 Agentic RAG/Agentic Search。
- Storage: 用于 Agents 将会话历史和状态保存到数据库。模型 API 是无状态的,而存储使我们能够从中断的地方继续对话。这使得 Agents 具有状态,能够实现多轮、长期的对话。
- Memory: 使 Agents 能够存储和回忆先前交互的信息,从而允许它们学习用户偏好并个性化其响应。
让我们构建几个 Agents 来看看它们是如何工作的。
Level 1: 具有工具和指令的 Agents
最简单的 Agent 拥有模型、工具和指令。让我们构建一个可以使用yfinance 库获取数据的 Agent,并附带显示结果的表格的指令。
level_1_agent.py
1
设置你的虚拟环境
2
安装依赖项
3
导出你的 Anthropic 密钥
4
运行 Agent
设置
debug_mode=True 或 export AGNO_DEBUG=true 以查看系统提示和用户消息。Level 2: 具有知识和存储的 Agents
Knowledge: 虽然模型拥有大量的训练数据,但我们几乎总是需要为它们提供特定领域的信息,以便做出更好的决策和提供准确的响应(RAG)。我们将这些信息存储在向量数据库中,并让 Agent 在运行时进行搜索。 Storage: 模型 API 是无状态的,Storage 驱动程序将聊天历史和状态保存到数据库。当 Agent 运行时,它从数据库读取聊天历史和状态,并将其添加到消息列表中,从而恢复对话并使 Agent 具有状态。
在这个示例中,我们将使用:
UrlKnowledge来加载 Agno 文档到 LanceDB,使用 OpenAI 进行嵌入。SqliteStorage来将 Agent 的会话历史和状态保存在数据库中。
level_2_agent.py
OPENAI_API_KEY 并运行 Agent
1
安装新依赖项
2
运行 Agent
Level 3: 具有记忆和推理的 Agents
- Reasoning: 使 Agents 能够**“思考”和“分析”**,提高可靠性和质量。
ReasoningTools是提高 Agent 回应质量的最佳方法之一。 - Memory: 使 Agents 能够对用户偏好进行分类、存储和回忆,从而实现个性化响应。记忆帮助 Agent 构建用户画像并从先前的互动中学习。
level_3_agent.py