欢迎光临
我们一直在努力

如何开发一个AI Agent?从规划记忆到工具调用的完整架构

如何开发一个AI Agent?从规划记忆到工具调用的完整架构

很多人把调用一次大语言模型 API 误认为是做出了一个 AI Agent,这其实是当前行业落地中最常见的一个认知偏差。大模型本身只是一个具备概率预测能力的推理计算核心,它没有主动解决问题的意志,也无法直接维持跨任务的状态。真正能够在真实业务场景中闭环执行复杂任务的 AI Agent,本质上是一个以大模型为决策中枢、具备状态机特征的自主控制系统。

在国家人力资源和社会保障部、工业和信息化部联合颁布的《人工智能训练师国家职业技能标准》(职业编码:4-04-05-05)中,针对高级工(三级)和技师(二级)的技能要求明确指出了“人机交互设计”、“业务逻辑工程化拆解”以及“智能系统联调与运维”的实操规范。开发一个工业级 AI Agent,正是这套国家职业技能标准在软件架构上的完整映射。

一个严谨的 Agent 架构,可以用一个闭环控制公式概括:Agent = 规划(Planning) + 记忆(Memory) + 工具调用(Tool Use) + 执行环境(Action Environment)。下面我们逐层拆解从逻辑设计到底层代码的完整实现路径。


一、规划模块(Planning):让模型从“发散回答”转向“严密推演”

规划模块的作用是把用户的模糊目标拆解为机器可执行的具体步骤,并根据外部环境的反馈动态调整后续动作。目前工业界最成熟的规划方法有两种:ReAct(Reasoning + Acting)模式与Plan-and-Execute(规划后执行)模式。

1. 两种主流规划架构对比

架构模式 运行机制 优点 局限性 典型适用业务
ReAct 模式 单步循环:思考(Thought) $rightarrow$ 行动(Action) $rightarrow$ 观察(Observation) 容错率高,能根据工具返回的报错实时修正下一步动作 接口交互轮次多,单次任务整体延迟偏高,Token 消耗较大 数据查询纠错、接口排错、交互式多轮诊断
Plan-and-Execute 模式 两阶段运行:先由规划器一次性生成整体步骤列表,再由执行器逐项调用外部能力 整体任务规划结构清晰,减少模型推理来回震荡,执行速度快 步骤之间的动态适应性差,一旦前置步骤产生未知中断,全流程容易失效 批量报表生成、标准化审计报告撰写、固定 SOP 执行

2. ReAct 核心提示词(Prompt)工程规范

在搭建 ReAct 调度器时,必须通过系统提示词向大模型下达严格的格式约定,强制模型输出结构化的推理过程,严禁自行胡编调用结果。

你是一个严格遵循 ReAct 决策框架的任务执行智能体。
请根据用户的输入目标,按照以下固定循环步骤执行,直到得出确定的最终答案:

1. 思考(Thought):分析当前已知信息,明确当前这一步需要做什么。
2. 行动(Action):选择必须调用的外部工具名称,必须且只能从已注册工具列表中选择。
3. 输入(Action Input):向工具传递的 JSON 格式参数。
4. 观察(Observation):读取工具执行后的真实返回值(此步骤由执行环境填入,你严禁伪造)。

当获取到全部所需信息后,输出最终结果:
最终答案(Final Answer):向用户输出完整、事实明确的最终结论。

注意事项:
- 严禁在未获得 Observation 之前自行捏造数据。
- 单次任务最多允许执行 6 轮循环,如果第 6 轮仍无法解决,直接输出 Final Answer 说明卡点并终止。

避坑提醒:在编写规划循环控制代码时,必须显式设置最大迭代轮数(Max Iterations,推荐 5~8 次)。一旦外部接口返回畸变数据,没有步数限制的 Agent 会在“思考-调用-报错”中陷入无限死循环,直接烧空 API 额度。


二、记忆模块(Memory):构建分层状态管理机制

很多初学者直接把多轮对话的全部历史拼接在 Prompt 里发送给模型,这种做法在第 3 轮交互后就会遭遇三大瓶颈:Token 开销成倍增加、推理延迟成倍拉长,以及长上下文带来的“注意力迷失”(Lost in the Middle)。

专业级架构必须将记忆分拆为短期工作记忆(Working Memory)和长期语义记忆(Long-term Memory)。

1. 记忆管理方案对比

方案名称 存储介质 上下文 Token 成本 历史信息保真度 适用场景
全量追加(Full History) 应用进程内存 随交互轮数线性激增 100%(但易受上下文长度限制截断) 3 轮以内的极简即时问答
滑动窗口(Sliding Window) Redis / 内存列表 固定可控(仅保留最近 $K$ 轮) 丢失窗口之外的早期背景信息 强时效、前后关联弱的客服工作台
摘要压缩(Summary Buffer) 关系数据库 + 定期 LLM 压缩 极低(保留少量轮次 + 背景摘要) 细节损失约 20%~30%,保留核心主干 长时间跨度但需连贯背景的智能助手
向量检索(Vector RAG) 向量数据库(如 Qdrant / Milvus) 按需消耗(仅召回相似度前 Top-K 片段) 结构化逻辑弱,语义相关性高 专业领域知识库、过往项目历史档案调用

2. 状态写入与遗忘工作流 SOP

注意看,工业级记忆管理的核心不在于“存了多少”,而在于“写入纪律”:

•写入过滤:工具调用的中间调试日志、报错堆栈绝不写入长期记忆,只在短期工作记忆中消费。

•信息抽取:每当完成一个阶段性闭环,由后台异步轻量模型(如 8B 级别小模型)从对话中提取键值对实体(如:`用户预算: 50万`、`截止日期: 11月30日`),结构化存入 SQLite 或 Redis。

•动态组装:用户发起新指令时,Agent 的 Prompt 模板仅挂载:基础人设 + 核心变量状态 + Top-3 相关历史记忆 + 当前任务上下文。


三、工具调用模块(Tool Use):打通物理环境的执行手脚

大模型本身无法连接私有网络、查询业务数据库或发送企业微信通知。工具调用模块的作用,就是把自然语言指令翻译成标准的软件工程接口协议(Function Calling)。

1. 函数描述规范(JSON Schema)

给模型注册工具时,工具描述不是写给程序员看的注释,而是直接决定大模型能否正确触发接口的语义依据。函数名称必须表意清晰,每个参数的 `description` 必须明确指出取值格式和边界。

{
  "name": "query_database_record",
  "description": "通过 SQL 查询内部业务系统的工单记录,仅支持只读 SELECT 语句,严禁执行修改或删除动作",
  "parameters": {
    "type": "object",
    "properties": {
      "sql_query": {
        "type": "string",
        "description": "符合 PostgreSQL 标准语法的单条只读查询语句,例如:SELECT id, status FROM tickets WHERE user_id = 1001 LIMIT 5;"
      },
      "timeout_seconds": {
        "type": "integer",
        "description": "查询超时时间,默认填 5,最大不得超过 10"
      }
    },
    "required": ["sql_query"]
  }
}

2. 调度执行的 Python 原生核心实现

在实际生产部署中,不一定必须绑定重型开源框架。掌握原生逻辑下的 Agent 执行控制器,有助于排查各类底层通讯与解析异常。

import json
from typing import Dict, Any, List

class AgentExecutionEngine:
    def __init__(self, llm_client, registered_tools: Dict[str, Any], max_steps: int = 5):
        self.client = llm_client
        self.tools = registered_tools
        self.max_steps = max_steps
        self.messages: List[Dict[str, str]] = []

    def run(self, user_prompt: str) -> str:
        self.messages.append({"role": "user", "content": user_prompt})
        step = 0

        while step < self.max_steps:
            step += 1
            # 1. 触发模型推理,传入工具声明列表
            response = self.client.chat.completions.create(
                model="gpt-4o-mini",
                messages=self.messages,
                tools=[tool.get_schema() for tool in self.tools.values()],
                tool_choice="auto"
            )
            response_msg = response.choices[0].message
            self.messages.append(response_msg)

            # 2. 判断模型是否发起工具调用请求
            if not response_msg.tool_calls:
                # 无需调用工具,直接返回模型的最终结论
                return response_msg.content

            # 3. 遍历并执行模型决定的工具操作
            for tool_call in response_msg.tool_calls:
                func_name = tool_call.function.name
                func_args = json.loads(tool_call.function.arguments)

                if func_name in self.tools:
                    try:
                        # 执行真实业务工具
                        exec_result = self.tools[func_name].execute(**func_args)
                    except Exception as err:
                        exec_result = f"工具执行报错: {str(err)}"
                else:
                    exec_result = f"错误: 目标工具 {func_name} 未在系统中注册。"

                # 4. 将真实的观察结果追加回上下文队列
                self.messages.append({
                    "role": "tool",
                    "tool_call_id": tool_call.id,
                    "content": str(exec_result)
                })

        return "系统执行达到最大步数限制,流程已强制熔断中止。"

四、开发框架选型与实操对比

目前市面上开发 Agent 的框架非常多,技术选型直接关系到后期的维护成本。盲目跟风选择热门工具往往会导致排错极其困难。

框架/技术路线 上手学习门槛 工程可控性 调试排错难度 推荐适用业务定位
原生 SDK 自研控制器 中等(需手写调度状态机) 极高(代码逻辑 100% 透明) 低(单步断点即可定位) 企业级高并发核心系统、对稳定性和延迟要求苛刻的商用服务
LangChain / LangGraph 较高(抽象类和中间层封装厚重) 中等(需适应其图节点与状态结构) 较高(调用链层层嵌套不易穿透) 复杂多分支业务流程、带人机交互确认(Human-in-the-loop)的流程式 Agent
LlamaIndex Workflows 中等 中高(专注于数据与索引操作) 中等 强依赖多源异构数据知识库检索的专业分析型 Agent
Dify / FastGPT 等低代码平台 低(可视化画布拖拽) 较低(受限于平台预设节点功能) 低至中等(依赖平台监控面板) 内部运营轻量原型验证、非研发团队协同搭建的基础辅助小工具

五、官方认证标准与职业资质考评路径

很多工程师在掌握了 Agent 的规划、记忆与工具调用开发后,希望在职场履历中获得官方背书。在这个领域,最权威、最具规范性的官方依据是人社部发布的《人工智能训练师》(职业编码:4-04-05-05)国家职业技能标准。

该职业资格考核由人社部统一部署,各省市职业技能鉴定中心或经备案的第三方评价机构统一组织实施,证书信息可全国联网查询。

1. 职业等级与申报条件(以三级/高级工为例)

等级名称 对应国家职业资格 核心专业申报条件(满足其一即可) 对应考核技能模块
四级(中级工) 职业技能等级四级 累计从事本职业或相关职业工作满 5 年;或取得技工学校本专业或相关专业毕业证书 数据采集清洗、基础场景标注、简单交互测试
三级(高级工) 职业技能等级三级 取得本职业四级证书后累计工作满 4 年;或具备相关专业大专及以上学历且累计工作满 2 年 业务流程建模、提示词工程设计、Agent 接口编排与系统性能评测
二级(技师) 职业技能等级二级 取得本职业三级证书后累计工作满 4 年;并具备高级技工学校或技师学院毕业证书 复杂智能系统架构设计、算法调优、工程故障攻关与带教指导

2. 考试科目与分值分布

《人工智能训练师》评价实行全国统一标准,分为理论知识考试和技能考核两大部分,两门均实行百分制,60 分(含)以上为合格。

考试科目 考核形式 考试时长 核心考核内容与权重
理论知识考试 机考客观题(单选、多选题) 90 分钟 基础职业道德(5%) + 计算机基础(15%) + 机器学习与大模型基础概念(40%) + 数据安全与伦理合规(40%)
专业技能考核 真实环境上机操作与代码/方案编写 120 分钟 数据预处理与工程规范(30%) + 交互流程与提示词架构设计(40%) + 工具接口联调与系统调优(30%)

3. 官方查询官网与地方技能补贴真实政策

•全国官方查询网站:证书信息在考后一般 15 至 30 个工作日统一录入技能人才评价工作网(osta.org.cn),这是人社部唯一样式核验与真伪查询官网。

•地方职业技能补贴:根据人社部与各省人社厅现行的技能补贴管理办法,依法参加失业保险并累计缴纳失业保险费满一定期限(多数省份要求连续缴纳 12 个月或 36 个月以上)的企业在职职工,取得正规职业技能等级证书后可申领职业技能进阶补贴。

•初级工(五级):补贴标准通常为 1000 元。

•中级工(四级):补贴标准通常为 1500 元。

•高级工(三级):补贴标准通常在 2000 元至 2600 元 之间(具体金额以当地人社厅最新发文为准)。

•申领途径:通过所在省份人社厅政务服务一体化网厅或地方人社微信小程序(如“上海人社”、“粤省事”等)直接在线提交社保卡银行账户申领,全程不经任何中介机构。


六、Agent 落地实施的四步闭环 SOP

在具体业务中推进智能体落地时,不要一开始就做大而全的复杂网络,严格按照以下四步 SOP 进行快速验证:

1.第一步:定义原子工具与清晰 Schema

将业务能力拆解为相互独立的原子函数,每个函数单一职责。在 JSON Schema 中严密定义入参约束,通过 Pydantic 等库进行参数合法性强校验。

2.第二步:编写强约束的 System Prompt 与状态机循环

明确角色边界,限定单次任务的最大循环轮数,加入“无法解决时主动向用户澄清”的分支逻辑,杜绝盲目重试。

3.第三步:实施分层记忆与状态持久化

将运行过程中的工作日志与长期实体数据分离存储,对话完成后仅将有价值的业务实体和摘要归档至长期存储介质。

4.第四步:架设安全审计与调用熔断护栏

对所有需要修改系统状态的高危工具(如删除数据、支付退款、对外发邮件)设置人工二次确认节点(Human-in-the-loop),同时监控 API 消费频次,防范并发雪崩。

构建 AI Agent 并不是玄学,它的本质是一门严谨的软件工程:把非确定性的大模型概率推理,通过确定性的规划规则、受约束的记忆读写以及强类型的工具调用,稳固收敛在业务可控的安全边界之内。

赞(0)
分享到

评论 抢沙发

评论前必须登录!

立即登录   注册