*** AI拉呱,专注于人工智领域与AI工具、前沿技术解读。***

距离一个重要的产品截止日期还有大约两周时,我的智能体原型出现了最严重的故障。

它表面上看起来没什么问题:能获取数据、调用工具,甚至还能解释自身的操作步骤。但实际上,它只是在“装样子”——没有真实的状态、没有记忆功能、也没有推理能力,仅仅是通过循环提示来伪装成智能的样子。

直到一个边缘案例让它彻底失控,我才意识到问题所在:我根本没有构建出真正的智能体,只是做出了一个花哨的提示链。

要解决这个问题,就必须重新设计整个系统——不能只做调用链,还要管理状态、决策过程和长期流程。想通这一点后,一切都变得简单了:代码、逻辑和结果都得到了优化。

本指南正是围绕这一经历展开:将智能体设计拆解为五个切实可行的难度等级,每个等级都配有可运行的代码。

无论你是刚入门的新手,还是正尝试扩展实际任务的开发者,这份指南都能帮你避开我曾踩过的坑,构建出真正可用的智能体。

这五个难度等级分别是:

  • 等级1:具备工具与指令的智能体
  • 等级2:具备知识与记忆的智能体
  • 等级3:具备长期记忆与推理能力的智能体
  • 等级4:多智能体团队
  • 等级5:智能体系统

好了,让我们开始深入探讨。

等级1:具备工具与指令的智能体

这是最基础的配置——一个能遵循指令、循环调用工具的大语言模型(LLM)。人们常说“智能体不过是大语言模型加工具调用”,其实指的就是这个等级(这也暴露了他们对智能体的探索深度)。

指令告诉智能体该做什么,工具则让它能够采取行动,比如获取数据、调用API或触发工作流。这种配置虽然简单,但已足以实现部分任务的自动化。

from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools

agno_assist = Agent(
    name="Agno AGI",
    model=OpenAIChat(id="gpt-4.1"),
    description=dedent("""\\
    你是“Agno AGI”,一款能够使用Agno框架构建智能体的自主AI智能体。你的目标是通过提供解释、可运行的代码示例以及关键概念的可选可视化和音频讲解,帮助开发者理解并使用Agno框架。"""),
    instructions="在网络上搜索有关Agno的信息。",
    tools=[DuckDuckGoTools()],
    add_datetime_to_instructions=True,
    markdown=True,
)
agno_assist.print_response("什么是Agno?", stream=True)

等级2:具备知识与记忆的智能体

大多数任务都需要模型本身不具备的信息。我们无法将所有内容都塞进上下文,因此智能体需要一种能在运行时获取知识的方式——这就是智能体检索增强生成(agentic RAG)或动态少样本提示发挥作用的地方。

搜索应采用混合模式(全文搜索+语义搜索),并且必须进行重排序。混合搜索结合重排序,是智能体检索的最佳即插即用配置。

存储功能为智能体提供了记忆能力。大语言模型默认是无状态的,而存储过往操作、消息和观察结果能让智能体具备状态,使其能够参考已发生的情况并做出更优决策。

# 导入相关库
# 你也可以使用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"),
    description=...,
    instructions=...,
    tools=[PythonTools(), DuckDuckGoTools()],
    add_datetime_to_instructions=True,
    # 向智能体提供“knowledge”参数时,会默认启用智能体检索增强生成(agentic 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:具备长期记忆与推理能力的智能体

记忆功能让智能体能够跨会话回忆细节,比如用户偏好、过往操作或失败尝试,并随之调整行为。这为个性化服务和操作连续性提供了可能。目前我们对此的探索还处于初级阶段,但最令人兴奋的是其自学习能力:智能体可以根据过往经验优化自身行为。

推理能力则更进一步。

它能帮助智能体拆解问题、做出更优决策,并更可靠地遵循多步骤指令。这不仅关乎理解能力,更能提高每个步骤的成功率。任何认真的智能体开发者都需要知道何时以及如何应用推理能力。

# 导入相关库

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"),
    # 记忆所属的用户
    user_id="ava",
    description=...,
    instructions=...,
    # 赋予智能体推理能力
    tools=[PythonTools(), DuckDuckGoTools(), ReasoningTools(add_instructions=True)],
    ...
    # 将记忆存储在SQLite数据库中
    memory=memory,
    # 允许智能体自主管理记忆
    enable_agentic_memory=True,
)

if __name__ == "__main__":
    # 首次运行后可注释该行,智能体将保留记忆
    agno_assist.print_response("你的消息始终以‘嗨,艾娃’开头", stream=True)
    agno_assist.print_response("什么是Agno?", stream=True)

等级4:多智能体团队

智能体在专注于特定领域时效率最高——它们应专精于一个领域,且工具集精简(理想情况下不超过10个)。要处理更复杂或范围更广的任务,我们需要将多个智能体组合成团队。每个智能体负责解决问题的一部分,协同合作以覆盖更广泛的任务范围。

但这里有个问题:如果缺乏强大的推理能力,团队领导者在处理任何细微任务时都会崩溃。根据我目前的观察,自主多智能体系统的运行仍不可靠,成功率不足50%——这远远不够。

尽管如此,某些架构确实能让协作更轻松。例如,Agno支持三种执行模式(协调、路由和协作),并内置了记忆和上下文管理功能。你仍需精心设计,但这些基础组件让复杂的多智能体协作变得更可行。

# 导入相关库

web_agent = Agent(
    name="网页搜索智能体",
    role="处理网页搜索请求",
    model=OpenAIChat(id="gpt-4o-mini"),
    tools=[DuckDuckGoTools()],
    instructions="始终包含信息来源",
)

finance_agent = Agent(
    name="金融智能体",
    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,  # 显示完整推理过程
    )

等级5:智能体系统

在这个等级,智能体从工具升级为基础设施。智能体系统是完整的API——这类系统接收用户请求后,启动异步工作流,并在结果生成时实时流式返回。

理论上听起来很简洁,但在实际操作中却极具挑战性,难度远超想象。

你需要在接收请求时持久化存储状态、启动后台任务、跟踪进度,并在结果生成时流式输出。WebSocket协议或许能提供帮助,但它的扩展和维护难度很大。大多数团队都低估了这里的后端复杂性。

而这正是将智能体转化为实际产品的关键所在。在这个等级,你构建的不再是一个功能,而是一套完整的系统。

从演示失败到实战成功:智能体设计的关键经验

构建AI智能体不应追逐热点或堆砌功能,而应扎实掌握基础。无论是基础的工具使用,还是全异步的智能体系统,每个等级的功能提升都必须建立在可靠的底层架构之上。

大多数失败并非源于未采用最新框架,而是因为忽视了基础:清晰的边界定义、可靠的推理能力、高效的记忆功能,以及懂得何时该让人类介入。

如果你从简单起步,有目的地逐步构建,不提前过度复杂化系统,只在需要解决实际问题时才增加复杂度,那么你打造出的将不只是一个酷炫的产品,更是一个真正能用的系统。

关注“AI拉呱”,评论+转发此文即可私信获取一份教程+一份学习书单!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐