INNER 06 / AGENT / 05 · ENGINE v1
元认知与自我反思机制(Lesson 09: Metacognition Design Pattern)
本关练习:构建“自然语言转 SQL 报表 Agent”的自检自愈闭环。
30 SECONDS / 30 秒看懂
这一关只解决一件事:为什么顶级 Agent 写出的代码或报告极少出错?因为它们不会把第一次生成的结果直接丢给用戶!
- 设计 Generator → Validator → Refiner 三步元认知工作流;
- 在 Validator 阶段同时设置【确定性规则检查】(如拦截 DROP/DELETE/UPDATE、强制检查是否包含 LIMIT 与分区日期过滤)与【语义对⻬检查】(核对是否遗漏业务口径)(
- 5 分);
3 MINUTES / 3 分钟拆解
先看来源里的例子:PDF 本关任务(来源)
业务人员用自然语言让 Agent 查询数据库生成月度销售报表,直接执行模型生成的 SQL 极易出现字段名拼写错误、漏加时间过滤条件或慢查询锁表。
发生了什么
来源要求:设计 Generator → Validator → Refiner 三步元认知工作流; / 在 Validator 阶段同时设置【确定性规则检查】(如拦截 DROP/DELETE/UPDATE、强制检查是否包含 LIMIT 与分区日期过滤)与【语义对⻬检查】(核对是否遗漏业务口径)( / 5 分);
输出
参考答案:参考答案:Text-to-SQL 报表智能体的 Actor-Critic 自愈闭环 def run_self_healing_sql_agent(user_query: str, max_retries: int = 3): draft_sql = sql_generator_agent.run(user_query) for attempt in range(1, max_retries + 1): # 1. 确定性安全与性能护栏检查
术语拆开
- Metacognition
- Agent 观察、评估并修正自己的推理。
- Refiner
- 根据错误反馈修复结果的组件。
为什么有效
来源核心原理:为什么顶级 Agent 写出的代码或报告极少出错?因为它们不会把第一次生成的结果直接丢给用戶! 根据 Microsoft AI Agents for Beginners 第 9 课(Metacognition) 与 Agentic AI Masterclass 的 Execution Hooks 机制,元认知(Metacognition)是指让 Agent 具备“自我监控、自我评估与自我纠错”能力。核心实现模式是构建 Actor-Critic(执行者-审查者)内部循环:当 Actor 生成初稿或 SQL/Python 代码后,先由验证器(确定性单元测试 / 语法检查器 + Critic 审查提示词)按评分标准打分;只有全部指标达标才放行输出,否则将具体报错信息喂回给 Actor 进行定向修复(上限 2‒3 轮)。
结构长什么样
设计 Generator → Validator → Refiner 三步元认知工作流; 在 Validator 阶段同时设置【确定性规则检查】(如拦截 DROP/DELETE/UPDATE、强制检查是否包含 LIMIT 与分区日期过滤)与【语义对⻬检查】(核对是否遗漏业务口径)( 5 分); 定义带着数据库报错堆栈(Error Traceback)回传给 Refiner 的结构化修复模板与最大重试上限。
为什么校验要同时包含硬规则和语义核对?
SOURCE READING / 来源精读
为什么顶级 Agent 写出的代码或报告极少出错?因为它们不会把第一次生成的结果直接丢给用戶!
逐点读懂
- 设计 Generator → Validator → Refiner 三步元认知工作流;
- 在 Validator 阶段同时设置【确定性规则检查】(如拦截 DROP/DELETE/UPDATE、强制检查是否包含 LIMIT 与分区日期过滤)与【语义对⻬检查】(核对是否遗漏业务口径)(
- 5 分);
怎么对应本关练习
先读 30 秒与 3 分钟拆解,再读本关原文与实验,最后做客观题和实操题;答案在下方。
例子在哪
本关任务与参考答案见页面下方;来源为本册 PDF 对应关卡。
本关先记住:设计 Generator → Validator → Refiner 三步元认知工作流;
核心原理
为什么顶级 Agent 写出的代码或报告极少出错?因为它们不会把第一次生成的结果直接丢给用戶!
根据 Microsoft AI Agents for Beginners 第 9 课(Metacognition) 与 Agentic AI Masterclass 的 Execution Hooks 机制,元认知(Metacognition)是指让 Agent 具备“自我监控、自我评估与自我纠错”能力。
核心实现模式是构建 Actor-Critic(执行者-审查者)内部循环:当 Actor 生成初稿或 SQL/Python 代码后,先由验证器(确定性单元测试 / 语法检查器 + Critic 审查提示词)按评分标准打分;只有全部指标达标才放行输出,否则将具体报错信息喂回给 Actor 进行定向修复(上限 2‒3 轮)。
第 5 关实操练习题:构建“自然语言转 SQL 报表 Agent”的自检自愈闭环
任务背景
业务人员用自然语言让 Agent 查询数据库生成月度销售报表,直接执行模型生成的 SQL 极易出现字段名拼写错误、漏加时间过滤条件或慢查询锁表。
通关硬性要求(满分 12.5 分)
1. 设计 Generator → Validator → Refiner 三步元认知工作流(4 分);
2. 在 Validator 阶段同时设置【确定性规则检查】(如拦截 DROP/DELETE/UPDATE、强制检查是否包含 LIMIT 与分区日期过滤)与【语义对⻬检查】(核对是否遗漏业务口径)(
5.5 分);
3. 定义带着数据库报错堆栈(Error Traceback)回传给 Refiner 的结构化修复模板与最大重试上限(3 分)。
PRACTICE / 本关练习 · 本地规则 + 覆盖检查
构建“自然语言转 SQL 报表 Agent”的自检自愈闭环
本地检查在你的浏览器里完成,不上传。覆盖检查需要先登录(免费注册),并把这段答案发送到服务器计算一次,算完即弃、不存档,需你点同意;只核对本关评分项覆盖的方向,不在评分项里的题目不会被检查。
评分项
结构分 — / 12.5 分
查看参考答案与得分点 先自己写,再打开+
参考答案与得分要点
参考答案:Text-to-SQL 报表智能体的 Actor-Critic 自愈闭环 def run_self_healing_sql_agent(user_query: str, max_retries: int = 3): draft_sql = sql_generator_agent.run(user_query) for attempt in range(1, max_retries + 1): # 1. 确定性安全与性能护栏检查 (Deterministic Hook) if any(bad in draft_sql.upper() for bad in ["DROP ", "DELETE ", "UPDATE ", "TRUNCATE "]): return {"error": "安全拦截:禁止执行非只读 SQL 语句"} if "LIMIT" not in draft_sql.upper() or "dt >=" not in draft_sql: feedback = "缺少分区字段 dt 过滤或未添加 LIMIT 限制,存在全表扫描⻛险,请修正。" draft_sql = sql_refiner_agent.run(query=user_query, bad_sql=draft_sql, error=feedback) continue # 2. 沙盒 EXPLAIN 语法与字段验证 + Critic 语义核对 exec_result = db_sandbox.explain_and_validate(draft_sql) if not exec_result.is_valid: # 将真实数据库报错堆栈喂回 Refiner 定向修复 draft_sql = sql_refiner_agent.run( query=user_query, bad_sql=draft_sql, error=exec_result.traceback ) continue critic_Check = sql_critic_agent.verify_business_logic(user_query, draft_sql) if critic_Check.passed: return db_sandbox.execute_readonly(draft_sql) draft_sql = sql_refiner_agent.run(query=user_query, bad_sql=draft_sql, error=critic_Check.reason) return {"error": "超过最大自愈重试次数,已转人工数据工程师处理"} 得分要点拆解:清晰实现 Generator → Validator → Refiner 循环(4 分);结合确定性正则/分区拦截与 Critic 业务逻辑核验(5.5 分);将真实 Traceback 注入修复提示并限制最大重试次数(3 分)。 第 6 关
网页永久免费。完整 PDF 会按顺序发给留邮箱的读者,不转售、不群发广告。
留邮箱,获取完整 PDF ↗