场地分析 Agent · 演示
输入全国任意一个地址(中国大陆),自动检索周边 1 km 设施,由大模型撰写学术风格的场地简报,并由代码逐个校验简报中的数字。
| 类别 | 数量 | 最近设施 | 距离 |
|---|
数量为高德 POI 点位数,不等于用地性质;地铁按出入口计数;“≥”表示高德返回总数已封顶,实际更多。
周边设施地图
设施对比
它是怎么工作的
- 1输入地址用户仅限北京;不存在或不在北京的地址会被明确拒绝。
- 2地址转坐标高德地理编码接口,并检查结果确实在北京市内。
- 3检索周边 1 km 的 7 类设施高德地铁出入口、公交、教育、医疗、商业、公园绿地、工业;分类编码已用真实接口逐个核实。
- 4统计代码计数、按距离排序、取最近设施。数字全部由代码计算,不交给大模型,因为大模型数数不可靠。
- 5撰写简报大模型DeepSeek 只负责把统计数据写成书面语,并被要求:不得计算、估算数字,设施名称必须来自数据。
- 6断言校验代码逐条核对简报里的断言:「设施名」是否存在于数据、其后的距离是否属于这个设施、“某类别 N 处”的 N 是否等于该类别的数量,其余数字至少要出现在统计表里。有问题就带着具体的纠错信息让模型重写一次;仍不通过则在页面上标红警告,不会悄悄放行。
- 7展示页面统计表先出,简报随后出现,并标明校验是否通过。
设计原则:模型负责写作,事实由代码裁决。
校验拦截
校验器是怎么演进的
第一版:只查数字是否出现在统计表里。能拦住凭空编造的数字,但有一个漏洞:把“地铁站出入口共 32 处”改成“共 36 处”,而 36 恰好是另一处设施的距离,就会被放行——因为它检查的是“这个数字在不在表里”,不是“这个数字说的是哪一项”。
第二版(现在):逐条核对断言。「设施名」必须存在于数据;名称后的距离必须属于这个设施;“某类别 N 处”的 N 必须等于该类别的数量。为了让校验器认得出来,提示词要求模型使用固定句式。认不出的数字仍会核对“是否在统计表里”,但只计入覆盖率、不判违规。
旧版与新版对比(在一份真实的国贸简报上做六种篡改)
| 篡改方式 | 旧版 | 新版 |
|---|---|---|
| 数量改成别处设施的距离 | 漏过 | 发现 |
| 数量改成另一类别的数量 | 漏过 | 发现 |
| 距离改成另一个设施的距离 | 漏过 | 发现 |
| 互换两个设施的距离 | 漏过 | 发现 |
| 改一个设施名 | 漏过 | 发现 |
| 编造一个不存在的数量 | 发现 | 发现 |
下方的交互工具可以自己复现这张表:每次篡改后会同时显示旧版与新版的判定。
两次真实发生的问题(开发记录)
1. 提示词里的数字被抄进简报。我加了一条规则“每类最多列举 3 处设施”,随后首钢园的简报第一段出现了“……每个类别最多列举距离最近的 3 处设施”。“3”不在统计数据里,被校验器拦下。这是提示词的缺陷而非模型编造,改成不含具体数字的说法后不再出现。
2. 校验器自己的误报。升级后第一次用真实数据测量,12 份简报里有 2 份被判违规,重试后仍不通过:“「国贸地铁站(公交站)」距离 1000 m(数据中为 0 m)”。原因是模型写了“以「国贸地铁站(公交站)」为中心,分析半径 1000 m”,中心地址恰好也是数据里的一个公交站,其后的半径 1000 m 被解析器当成了它的距离。这是解析器的缺陷,模型没有错。修复解析器(名称与数字之间出现“半径”则不视为距离断言)并在提示词里要求场地地址不加「」之后,12 份新简报全部一次通过。真实数据测出来的问题,单元测试是想不到的。
自己试一试
下面是当前所选案例的简报,可以直接改文字,或点按钮追加一条错误的断言。校验规则在你的浏览器里实时运行,与项目中的 lib/verify.ts 一致;红色标出的是新版判定为不合规的位置。
数据局限
- 数据为地图 POI 点位,不等于用地性质;工业类结果为 0 是正常现象。
- 地铁按出入口计数,不是车站数。
- 高德返回的总数在约 600 处封顶(如国贸的商业类),页面标注为“≥”。
- 分类存在噪音:教育、医疗、工业三类已折叠校园/医院/园区内部的院系、科室、楼栋,并剔除培训机构、党校、药店等不属于该类别的点位;仍有个别漏网(如名称看不出问题的点位)。在自建的小型人工标注测试集上,误杀约 0.5%、漏网约 8%,测试集有限,不代表所有场地。简报会提示。
- 校验器只认得固定句式。在提示词要求的固定句式下,对 24 份真实简报中的 766 个数字,全部被配对核对过(覆盖率 100%;此后新生成的简报偶尔有 1 个数字未配对,例如免责说明里泛指的“数量为 0 的类别”,它在统计表里,不算违规)。但这是对“按模板写出来的文字”的度量,不代表任何自由文本都能被核对:认不出的数字只核对是否出现在统计表里,不判违规,如果模型换了一种校验器不认识的说法,把错数字放在里面,仍可能漏过。
- 名称与距离的配对不区分类别:同名设施只要距离匹配任意一条记录即通过。
- 覆盖中国大陆,港澳台暂不支持;噪点过滤规则与人工标注测试集基于北京,外地抽查发现噪点更多(见 README)。本页为预先生成的结果,更新算法后需重新导出。
关于这个项目
- 技术栈:Next.js、TypeScript、Tailwind CSS、DeepSeek API、高德 Web 服务 API。
- 开发方式:借助 AI 编程 Agent 完成,由我提出需求、审阅设计并逐条验收;每个阶段的派工单与验收记录保存在仓库的
docs/tasks/。 - 数据来源:高德开放平台。本页仅作技术演示。