AI神功 KNOWLEDGE BASE
内功06 · AI Agent 智能体·第 17 关 / 36 约 5 分钟

INNER 06 / AGENT / 05 · ENGINE v1

元认知与自我反思机制(Lesson 09: Metacognition Design Pattern)

本关练习:构建“自然语言转 SQL 报表 Agent”的自检自愈闭环。

约 5 分钟·免费阅读·整理自 AI 现代必修课 · 内功06·来源精读 ↓·直接做题 ↓

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 写出的代码或报告极少出错?因为它们不会把第一次生成的结果直接丢给用戶!

逐点读懂

  1. 设计 Generator → Validator → Refiner 三步元认知工作流;
  2. 在 Validator 阶段同时设置【确定性规则检查】(如拦截 DROP/DELETE/UPDATE、强制检查是否包含 LIMIT 与分区日期过滤)与【语义对⻬检查】(核对是否遗漏业务口径)(
  3. 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”的自检自愈闭环

本地检查在你的浏览器里完成,不上传。覆盖检查需要先登录(免费注册),并把这段答案发送到服务器计算一次,算完即弃、不存档,需你点同意;只核对本关评分项覆盖的方向,不在评分项里的题目不会被检查。

0 字未保存

评分项

评分项加载中…

结构分 — / 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 ↗
← 上一关 下一关 →