AI在线 AI在线

使用Agno实现AI代理设计的五个层级,由易到难

AI代理设计指南本指南将代理设计分解为五个实际难度级别,每个级别均提供可运行的代码示例。 无论开发者是初学者还是处理现实世界的复杂任务,本指南都能帮助避免常见陷阱,构建真正有效的代理。 这些级别包括:•级别1:带工具和指令的代理•级别2:带知识和记忆的代理•级别3:带长期记忆和推理的代理•级别4:多代理团队•级别5:代理系统以下逐一介绍各级别。

AI代理设计指南

本指南将代理设计分解为五个实际难度级别,每个级别均提供可运行的代码示例。

无论开发者是初学者还是处理现实世界的复杂任务,本指南都能帮助避免常见陷阱,构建真正有效的代理。

这些级别包括:

•级别1:带工具和指令的代理•级别2:带知识和记忆的代理•级别3:带长期记忆和推理的代理•级别4:多代理团队•级别5:代理系统

以下逐一介绍各级别。

图片图片

级别1:带工具和指令的代理

此级别为基础设置,涉及一个遵循指令并在循环中调用工具的大语言模型(LLM)。当提到“代理是LLM加上工具使用”时,通常指这一级别,反映了基础但功能有限的实现。

图片图片

指令明确代理的任务,工具赋予其行动能力,例如获取数据、调用API或触发工作流程。尽管简单,此设置已足以自动化某些任务。

复制
from agno.agent importAgent
from agno.models.openai importOpenAIChat
from agno.tools.duckduckgo importDuckDuckGoTools


agno_assist =Agent(
  name="Agno AGI",
  model=OpenAIChat(id="gpt-4.1"),
  descriptinotallow=dedent("""\
Agno AGI是一个利用Agno框架构建代理的自主AI代理。其目标是通过提供解释、可运行的代码示例以及可选的视觉和音频解释,帮助开发者理解和使用Agno的关键概念。"""),
  instructinotallow="搜索网络以获取关于Agno的信息。",
  tools=[DuckDuckGoTools()],
  add_datetime_to_instructinotallow=True,
  markdown=True,
)
agno_assist.print_response("Agno是什么?", stream=True)

级别2:带知识和记忆的代理

许多任务需要模型不具备的外部信息。由于上下文容量有限,代理需在运行时获取知识,这通过代理式RAG或动态少样本提示实现。

图片图片

搜索采用混合模式(全文+语义),并需重新排序。混合搜索结合重新排序是代理式检索的最佳即插即用方案。

存储功能为代理提供记忆。LLM默认无状态,存储过去的行动、消息和观察结果使代理具备状态,能够参考历史信息并优化决策。

复制
... imports
# 可参考 https://docs.agno.com/llms-full.txt 获取完整文档
knowledge_base =UrlKnowledge(
  urls=["https://docs.agno.com/introduction.md"],
  vector_db=LanceDb(
    uri="tmp/lancedb",
    table_name="agno_docs",
    search_type=SearchType.hybrid,
    embedder=OpenAIEmbedder(id="text-embedding-3-small"),
    reranker=CohereReranker(model="rerank-multilingual-v3.0"),
),
)
storage =SqliteStorage(table_name="agent_sessions", db_file="tmp/agent.db")


agno_assist =Agent(
  name="Agno AGI",
  model=OpenAIChat(id="gpt-4.1"),
  descriptinotallow=...,
  instructinotallow=...,
  tools=[PythonTools(),DuckDuckGoTools()],
  add_datetime_to_instructinotallow=True,
# 当提供“knowledge”时,默认启用代理式RAG
  knowledge=knowledge_base,
# 将代理会话存储在sqlite数据库中
  storage=storage,
# 将聊天历史添加到消息中
  add_history_to_messages=True,
# 历史运行次数
  num_history_runs=3,
  markdown=True,
)


if __name__ =="__main__":
# 加载知识库,首次运行后可注释
# agno_assist.knowledge.load(recreate=True)
  agno_assist.print_response("Agno是什么?", stream=True)

级别3:带长期记忆和推理的代理

长期记忆使代理能够跨会话回忆细节,例如用户偏好、过去行为或失败尝试,并随时间适应,从而实现个性化和连续性。自我学习——基于过去经验优化行为——是此级别的重要潜力。

图片图片

推理能力进一步提升代理表现,帮助分解问题、优化决策并更可靠地执行多步骤指令。推理不仅关乎理解,还能提高每一步的成功率,是严肃代理开发者必须掌握的核心技能。

复制
... imports


knowledge_base =...


memory =Memory(
# 使用任意模型创建记忆
  model=OpenAIChat(id="gpt-4.1"),
  db=SqliteMemoryDb(table_name="user_memories", db_file="tmp/agent.db"),
  delete_memories=True,
  clear_memories=True,
)


storage =...


agno_assist =Agent(
  name="Agno AGI",
  model=Claude(id="claude-3-7-sonnet-latest"),
# 用于记忆的用户ID
  user_id="ava",
  descriptinotallow=...,
  instructinotallow=...,
# 赋予代理推理能力
  tools=[PythonTools(),DuckDuckGoTools(),
ReasoningTools(add_instructinotallow=True)],
...
# 将记忆存储在sqlite数据库中
  memory=memory,
# 让代理管理其记忆
  enable_agentic_memory=True,
)


if __name__ =="__main__":
# 首次运行后可注释,代理会记住
  agno_assist.print_response("总是以‘hi ava’开始你的消息", stream=True)
  agno_assist.print_response("Agno是什么?", stream=True)

级别4:多代理

代理在专注于单一领域并配备精简工具集(理想少于10个)时表现最佳。为应对复杂或广泛任务,可将多个代理组成团队,每个代理处理问题的一部分,共同覆盖更广领域。

图片图片

然而,若团队领导者缺乏强大推理能力,处理细微问题时易失败。当前,自主多代理系统的可靠性不足,成功率低于50%,尚无法满足实际需求。

某些架构可简化协调。例如,Agno支持协调、路由和协作三种执行模式,并提供内置的记忆和上下文管理。谨慎设计仍不可或缺,但这些功能使多代理工作更具可行性。

复制
... imports


web_agent =Agent(
  name="Web Search Agent",
  role="处理网页搜索请求",
  model=OpenAIChat(id="gpt-4o-mini"),
  tools=[DuckDuckGoTools()],
  instructinotallow="始终包含来源",
)


finance_agent =Agent(
  name="Finance Agent",
  role="处理金融数据请求",
  model=OpenAIChat(id="gpt-4o-mini"),
  tools=[YFinanceTools()],
  instructinotallow=[
"你是一个金融数据专家。提供简洁准确的数据。",
"使用表格展示股票价格、基本面(市盈率、总市值)",
],
)


team_leader =Team(
  name="Reasoning Finance Team Leader",
  mode="coordinate",
  model=Claude(id="claude-3-7-sonnet-latest"),
  members=[web_agent, finance_agent],
  tools=[ReasoningTools(add_instructinotallow=True)],
  instructinotallow=[
"使用表格展示数据",
"仅输出最终答案,不包含其他文本。",
],
  show_members_respnotallow=True,
  enable_agentic_cnotallow=True,
  add_datetime_to_instructinotallow=True,
  success_criteria="团队已成功完成任务。",
)


if __name__ =="__main__":
  team_leader.print_response(
"""\
分析近期美国关税对以下关键行业市场表现的影响:
-钢铁和铝业:(X, NUE, AA)
-技术硬件:(AAPL, DELL, HPQ)


对每个行业:
1.比较关税实施前后的股票表现
2.识别供应链中断和成本影响百分比
3.分析公司的战略应对(回岸生产、价格调整、供应商多元化)""",
  stream=True,
  stream_intermediate_steps=True,
  show_full_reasnotallow=True,
)

级别5:代理系统

代理系统标志着代理从工具转变为基础设施。此级别涉及完整API,接受用户请求,启动异步工作流程,并流式返回生成的结果。

图片图片

理论上流程清晰,实际操作极具挑战。需在请求时持久化状态,启动后台作业,跟踪进度,并流式输出结果。WebSocket可提供支持,但扩展和维护难度较大,后端复杂性常被低估。

这一级别是将代理转化为实际产品的关键,不仅是构建功能,而是打造完整系统。

从失败到成功:代理设计的关键经验教训

构建AI代理的核心在于夯实基础,而非追逐潮流或堆砌功能。从基本工具使用到完全异步的代理系统,每一级别需建立在稳固的架构之上,方能增强能力。

失败往往源于忽视基础原则:清晰的模块边界、扎实的推理、有效的记忆管理,以及适时引入人工干预。

通过从简单开始,逐步有针对性地增加复杂性,仅在解决实际问题时引入新功能,开发者能够构建出不仅有趣且真正可靠的代理系统。

相关资讯

Anthropic发布AI代理开发“圣经”:超越提示工程的7大实战策略

Anthropic 最新发布了一份针对 AI 代理开发人员的重要指南,强调构建强大且实用的代理远不止巧妙地编写提示。 这份“圣经”总结了以下7个核心策略:代理设计是结构化工作流: 不要将代理视为简单的无状态函数。 成功的代理需要具备推理、行动、反思、重试和升级的结构化工作流程。
5/20/2025 10:01:06 AM
AI在线

15 个在2025 实现AI 代理商业创意

AI 肯定会成为未来……2025 年最大的商业机会肯定是 AI 代理。 如果您希望构建一些有利可图的东西,那么这就是您的好机会。 实际上,AI 代理是自主应用程序,我们知道它可以为您处理任务——节省时间、精力和金钱。
2/13/2025 10:39:23 AM
佚名

想要开发AI代理?首先,你需要了解这些

出品 | 51CTO技术栈(微信号:blog51cto)如何理解AI代理,它们如何工作? 想象一下开发一个生成式AI时代的API。 这个API将支持自然语言输入,利用大型语言模型的智能,通过与SaaS和企业系统的集成来自动化决策,并通过连接到其他生成式AI支持的API来实现业务流程编排。
2/8/2025 10:29:03 AM
  • 1