2023 年,人们惊叹于大模型能调用计算器;2024 年,Function Calling 成为标配;2025 年,MCP 把工具接入标准化。到了 2026 年,真正被讨论的问题已经变成了:如何让 Agent 在生产环境里稳定跑完一个业务流程。

演示视频里的 Agent 只需要成功一次,生产系统里的 Agent 要连续成功一万次,并且失败时知道该退到哪里。这两件事之间,隔着一整套工程细节。

一、Agent 到底是什么

一个常见的定义是:Agent = 大模型 + 工具 + 记忆 + 控制循环。它和单轮问答最大的区别不在模型大小,而在于根据执行结果决定下一步。

比如用户说「帮我查一下订单 A1024,物流异常就建个工单」。单轮模型只能回答「请提供更多信息」;Agent 则会依次调用订单查询、物流查询、工单创建三个工具,并在中间处理超时和参数错误。

Agent 的价值不在第一次回答,而在第 N 次重试之后,仍然知道自己在做什么。

二、一个最小可用的 Agent 架构

先别急着上框架。一个可用的 Agent 循环,核心代码通常不到 40 行:

from typing import Any

MAX_STEPS = 8

def run_agent(task: str, tools: dict[str, Any], model) -> str:
    messages = [
        {"role": "system", "content": "你是业务助手。先规划,再调用工具,最后给出结论。"},
        {"role": "user", "content": task},
    ]

    for step in range(MAX_STEPS):
        reply = model.chat(messages, tools=tools)  # 返回 tool_calls 或最终答案

        if not reply.tool_calls:
            return reply.content

        for call in reply.tool_calls:
            tool = tools[call.name]
            try:
                result = tool(**call.arguments)
            except Exception as exc:
                result = {"error": str(exc), "hint": "检查参数后重试"}
            messages.append({
                "role": "tool",
                "tool_call_id": call.id,
                "content": str(result),
            })
        messages.append({"role": "assistant", "content": reply.raw})

    return "任务步数超限,已转人工处理。"

这段代码里真正重要的不是调用方式,而是三个约束:

  • 步数上限:防止模型在错误路径上无限循环,成本失控。
  • 错误回传:把异常当作工具结果交还给模型,让它有机会自行修正。
  • 兜底出口:超过上限必须转人工,而不是编一个答案。

三、工具设计比提示词更重要

Agent 失败的原因,十有八九不是「提示词写得不够好」,而是工具本身设计得糟糕。工具是模型和真实世界之间的接口,接口模糊,模型就只能猜。

设计点推荐做法常见错误
工具粒度一个工具只做一件事把查询和修改混在一个工具里
参数设计3 到 5 个必填参数,类型明确让模型自由拼接 SQL
返回内容精简 JSON,附带一句摘要把整页 HTML 或上万字日志塞回去
写操作幂等键 + 人工确认允许模型直接退款、删数据

还有一个容易被忽略的细节:工具描述要写清楚「什么时候不要用」。比如 search_orders 应注明「仅在用户提供订单号或邮箱时使用」,否则模型会在信息不足时随便猜一个查询条件。

四、记忆:别急着上向量库

很多人一上来就给 Agent 配向量数据库,结果延迟翻倍,效果却没变好。记忆至少可以分成三类,它们需要的技术完全不同:

  • 工作记忆:当前任务的上下文,直接用对话消息维护即可。
  • 情节记忆:过去任务的摘要,存成结构化记录,按用户或任务类型检索。
  • 语义记忆:长期知识库,才轮到 RAG 和向量检索。

大多数业务流程只需要第一类和第二类。一个更朴素的做法是:让模型在每个关键步骤后更新一段 notes,把已经确认的事实、待办和失败原因写进去,下一轮直接读这段摘要。它比向量检索更可控,也更容易调试。

五、评测与可观测性

Agent 没有单元测试,几乎必然会在上线后失控。最低限度要准备三样东西:

  1. 黄金任务集:20 到 50 个真实任务,标明期望的工具调用顺序和最终结果。
  2. 关键指标:任务成功率、平均步数、单任务成本、延迟、转人工率。
  3. 完整轨迹日志:每一次工具调用的输入、输出、耗时和错误,都要能回放。

每次换模型、改提示词、调整工具,都跑一遍黄金任务集。没有这层回归测试,你无法判断一次改动是「感觉更聪明」还是「真的更好」。

安全提醒

检索到的网页、邮件和用户上传文件都可能包含提示词注入。工具返回的内容必须当作不可信输入处理:限制工具权限、对写操作做二次确认,并记录每一条指令的来源。

六、写在最后

2026 年的 Agent 竞争,不在模型参数,而在三件事:对业务流程的理解、工具的质量、失败时的处理方式。先做一个「窄而深」的单流程 Agent,把它跑到 99% 的成功率,再谈通用助手。

能稳定完成一件小事的 Agent,比能演示一百件事的 Agent 更有价值。

Agent 工作流 工程实践
← 返回全部文章