数据分析 Agent 实战:用独立审查层防止 LLM 既当运动员又当裁判员
手把手拆了一个数据分析 Agent 的三层架构,主模型只写 SQL,另一个模型负责审查,连 200 行限制和人工审批都写好了,做 Agent 的人直接抄作业。
Sumanth_077 分享了一个数据分析 Agent 的三层架构案例:生成层用 Qwen 通过 Vercel AI Gateway 编写只读 SQL,模型不直接接触数据库。守卫层用纯代码实现硬性规则,只允许单条 SELECT、SQLite 只读模式、超 200 行拒绝执行、无 WHERE 子句需人工批准。审查层引入独立模型 TypeSafe AI Jev,在执行前检查问题清晰度和 SQL 相关性,执行后验证答案是否基于返回数据。例如“谁是我们的最佳客户”这类问题会因“最好”定义含糊被 93% 置信度要求澄清,未通过接地性检查的回答会被标记为“未验证草稿”。
不要让 LLM 既当运动员,又当裁判员! 应该引入一个独立的“审查层”来做判断。 @Sumanth_077 构建一个数据分析 Agent,用户用自然语言提问,Agent 生成 SQL 查询本地数据库并回答。 核心架构:三层职责分离 1. 生成层:主模型 Qwen( @vercel AI Gateway),负责理解问题、编写只读 SELECT、解释查询结果。模型从不直接接触数据库。 2. 确定性守卫层:完全用代码实现、不依赖任何模型的硬性规则,只允许单条 SELECT、SQLite 只读模式、超 200 行的查询拒绝、无 WHERE 子句需人工批准。 3. 审查层:TypeSafe AI Jev,一个独立模型,在三个关键点介入: · 问题清晰度(执行前),如 "Who is our best customer?" 因“最好”定义含糊,被以 93% 置信度要求澄清; · SQL 相关性(执行前),比对问题、schema 与 SQL 是否匹配,不匹配给主模型一次修改机会; · 答案接地性(执行后),检查最终解释是否真的基于返回的数据行,不达标则降级标记为“未验证草稿”,同时保留 SQL 和数据供人工检查。 Sumanth @Sumanth_077 x.com/i/article/2107… 🔗 View Quoted Tweet 💬 3 🔄 0 ❤️ 3 👀 338 📊 3 ⚡
- arXiv cs.AI10-05 17:48原文