大约在一个重要产品上线前的两周,我的原型智能体以最糟糕的方式崩溃了。
表面上看,它一切正常:能抓取数据、调用工具、甚至解释自己的操作步骤。但在背后,它其实只是在“装聪明”。没有真实的状态管理,没有记忆,更没有推理。只是不断循环的提示词链,假装自己是智能体。
直到一个边缘用例完全让它崩溃,我才猛然意识到:我根本没有构建一个智能体,我只是写了一个花哨的提示词链 。
要修复它,就意味着要完全重新设计 —— 不只是调用链的堆叠,而是管理状态、做出决策,以及处理长期流程。一旦我明白了这一点,一切都变得简单起来:代码、逻辑、还有结果。
这篇指南正是基于这个过程,将智能体的设计分解为五个实用的难度等级 —— 每个等级都有可运行的代码示例 。
无论你是刚入门,还是在尝试扩展现实世界中的任务能力,这篇文章都能帮你避开我曾踩过的坑,构建真正有用的智能体 。
五个等级如下:
•Level 1:带工具和指令的智能体 •Level 2:具备知识和记忆的智能体 •Level 3:具备长期记忆与推理能力的智能体 •Level 4:多智能体协作团队 •Level 5:智能体系统化平台
好了,让我们深入了解每一个等级吧。
Level 1:带工具和指令的智能体
这是最基础的配置 —— 一个遵循指令并循环调用工具的大语言模型(LLM)。 当人们说“智能体就是 LLM 加上工具调用”,他们指的就是这个层级(同时也暴露了他们对智能体的理解还不够深入)。
“指令” 告诉智能体该做什么,“工具” 让它能采取行动 —— 比如抓取数据、调用 API,或触发工作流。这看起来很简单,但已经足够强大,可以自动化一些任务。
from agno.agent importAgent
from agno.models.openai importOpenAIChat
from agno.tools.duckduckgo importDuckDuckGoTools
from textwrap import dedent
agno_assist =Agent(
name="Agno AGI",
model=OpenAIChat(id="gpt-4.1"),
description=dedent("""\
你是“Agno AGI”,一个可以使用Agno框架构建智能体的自主 AI Agent。
你的目标是帮助开发者理解并使用Agno,通过提供解释、可运行的代码示例、
以及可选的关键概念可视化与音频说明。"""),
instructions="在网上搜索关于 Agno 的信息。",
tools=[DuckDuckGoTools()],
add_datetime_to_instructions=True,
markdown=True,
)
agno_assist.print_response("What is Agno?", stream=True)
Level 2:具备知识与记忆的智能体
大多数任务都需要模型本身不具备的信息。你无法把所有内容都塞进上下文中,因此智能体需要在运行时获取知识的能力 —— 这正是 agentic RAG (检索增强生成)或动态 few-shot 提示的用武之地。
检索 应该是混合型的(全文 + 语义),重排序 (reranking) 是必须的。二者结合 —— 混合检索 + 重排序,是构建 agent 检索能力的最佳即插即用方案。
存储 赋予智能体记忆能力。LLMs 默认是无状态的,通过存储过去的动作、消息和观察,智能体变得有状态 —— 能够参考已有的交互历史,并据此做出更好的决策。
# ... 引入必要模块
# 你也可以参考 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"),
),
)
# 创建本地存储(SQLite 形式)
storage =SqliteStorage(
table_name="agent_sessions",
db_file="tmp/agent.db"
)
# 配置智能体
agno_assist =Agent(
name="Agno AGI",
model=OpenAIChat(id="gpt-4.1"),
description=...,# 略
instructions=...,# 略
tools=[PythonTools(),DuckDuckGoTools()],
add_datetime_to_instructions=True,
# 提供 knowledge 参数会自动启用 Agentic RAG
knowledge=knowledge_base,
# 使用 SQLite 持久化存储 agent 会话
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("What is Agno?", stream=True)
Level 3:具备长期记忆与推理能力的智能体
记忆 让智能体能在不同会话之间记住细节 ——例如用户偏好、过去的操作记录或失败的尝试,并能随时间调整行为。这带来了个性化和对话连贯性的可能。我们目前只是刚刚开始探索这类能力,但最令人兴奋的前景是“自我学习”:让智能体基于过往经验,不断优化自己的行为模式。
推理 则将能力提升到另一个层次。
它帮助智能体分解复杂问题、做出更优的决策,并更可靠地执行多步骤任务。这不仅仅是理解用户指令的问题,更是提高每一步操作成功率 的关键。任何认真构建智能体的人,都必须理解何时 以及如何 使用推理。
# ... 引入必要模块
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",
description=...,# 略
instructions=...,# 略
tools=[
PythonTools(),
DuckDuckGoTools(),
ReasoningTools(add_instructions=True)# 启用推理工具
],
...
# 存储记忆
memory=memory,
# 启用 agent 主动管理记忆
enable_agentic_memory=True,
)
if __name__ =="__main__":
# 可在首次运行后注释掉,Agent 将自动记住这些信息
agno_assist.print_response("Always start your messages with 'hi ava'", stream=True)
agno_assist.print_response("What is Agno?", stream=True)
Level 4:多智能体协作团队
智能体在聚焦某一任务领域 并配有精简工具集 (理想情况下不超过10个工具)时最为高效。要处理更复杂或更广泛的任务,我们可以将多个智能体组合成一个“团队”,每个智能体各司其职,协同解决更大的问题。
但问题来了:如果缺乏强有力的推理能力,团队协调者(Leader Agent)会在复杂情境下崩溃。 根据目前的观察结果,自主多智能体系统的稳定性仍然较差,成功率甚至不到一半 —— 这远远不够好。
尽管如此,某些架构确实提升了智能体之间的协调效率。以Agno[1] 框架为例,它支持三种协作执行模式:coordinate(协调),route(路由),collaborate(协同),同时还内置了记忆系统 和上下文管理 机制。尽管你仍然需要精心设计每一个子智能体的分工和调用逻辑,但这些功能模块让构建严谨可靠的多智能体系统成为可能。
# ... 引入必要模块
# 定义一个 Web 搜索智能体
web_agent =Agent(
name="Web Search Agent",
role="处理网页搜索请求",
model=OpenAIChat(id="gpt-4o-mini"),
tools=[DuckDuckGoTools()],
instructions="始终附带信息来源。",
)
# 定义一个财经数据智能体
finance_agent =Agent(
name="Finance Agent",
role="处理财经数据请求",
model=OpenAIChat(id="gpt-4o-mini"),
tools=[YFinanceTools()],
instructions=[
"你是一位财经数据专家,提供简洁而准确的数据。",
"使用表格展示股票价格和基本面信息(如市盈率、总市值)。",
],
)
# 创建一个团队协调者智能体
team_leader =Team(
name="推理型财经团队负责人",
mode="coordinate",# 协调模式
model=Claude(id="claude-3-7-sonnet-latest"),
members=[web_agent, finance_agent],
tools=[ReasoningTools(add_instructions=True)],
instructions=[
"使用表格展示数据。",
"仅输出最终结论,禁止输出其他额外文字。",
],
show_members_responses=True,
enable_agentic_context=True,
add_datetime_to_instructions=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_reasoning=True,
)
Level 5:智能体系统(Agentic Systems)
这是智能体从「工具」跃升为「基础设施」的阶段。智能体系统 (Agentic Systems) 不只是调用接口的应用,而是完整的系统:接收用户请求、启动异步工作流、并在结果可用时持续流式返回结果。
理论上听起来很优雅,但实际操作上 —— 非常困难 。
你需要在请求进入时持久化状态 ,启动 一个后台任务,跟踪 执行进度,以流式方式输出 结果。可以使用 WebSocket 实现流式通信,但 WebSocket 的扩展性和维护难度极高,很多团队都会低估其后端复杂性。
这一阶段,标志着你已不再只是开发某个功能,而是在构建一个真正的系统。将 Agent 产品化,真正落地应用 —— 就是从这里开始。
构建 AI 智能体,不是追风口、堆功能,而是要把基本功打扎实 。从最初的工具调用到完整的异步智能体系统,每一层能力的提升都只有在底层架构可靠 的前提下才真正有意义。
大多数失败并不是因为缺了最新框架,而是因为忽视了基础:
•清晰的职责边界 •稳健的推理能力 •有效的记忆机制 •以及知道何时该让人类介入
如果你能从简单开始,有目的地逐步构建,不在一开始就过度复杂化,而是在真正需要时才引入复杂度 ,
你最终做出来的,不只是一个看起来炫酷的系统,而是一个真正能跑得通、跑得稳的智能体 。
更多信息
山行AI希望本文对你有所帮助,由笔者翻译整理自:https://medium.com/data-science-collective/ai-agents-in-5-levels-of-difficulty-with-full-code-implementation-15d794becfb8,感谢点赞、转发、评论,谢谢!
References
[1]
Agno: https://github.com/agno-agi/agno