Pakistan Notice Helper:一款面向本地安全问题的轻量 AI 工具
Building Pakistan Notice Helper: A Small AI Tool for a Very Local Safety Problem
Pakistan Notice Helper 是一款安全工具,帮助巴基斯坦用户在点击链接、拨打电话、分享 OTP 或支付前识别可疑消息。它接受文本或截图输入,返回风险等级、简短解释、可见警示标志和安全下一步建议。工具支持英文和乌尔都语,乌尔都模式采用从右向左布局并全界面翻译。最终部署选用 Qwen3.5 4B Q8 模型(通过 llama.cpp + CUDA),在 10 个测试用例中通过了所有高风险诈骗和截图场景。此前曾测试 Qwen3.6 27B(质量高但成本高)和 MiniCPM-V 4.6 Q8(速度慢且不稳定),最终选择了精度、速度和成本平衡的 4B 模型。项目受限于 hackathon 的 32B 模型上限规则。
一个只有4B的小模型,把巴基斯坦本地诈骗文案分析得明明白白,比那些参数大但看不懂乌尔都语的通用模型实用得多。做给特定地区特定问题的小工具,这才是AI落地的真节奏。
针对 Hugging Face Build Small Hackathon,我想构建一个实用、本地化、且超越演示价值的工具。最终成果是 Pakistan Notice Helper,一个以安全为核心的 AI 工具,帮助巴基斯坦民众在点击链接、拨打电话、分享 OTP 或进行付款之前,识别可疑消息。
这个想法源于一个普遍存在的问题:人们经常收到看似来自银行、快递公司、税务部门、交警、公用事业公司、移动运营商或政府部门的短信。有些是真实的,很多是诈骗。困难之处往往不在于阅读短信本身,而在于知道下一步该怎么做。
Pakistan Notice Helper 并非真实性核查工具。它不会声称某条消息是官方真实信息或欺诈信息。相反,它充当分诊工具:接收文本或截图,返回风险标签、简短说明、可见的危险信号以及安全的后续操作建议。
为什么这契合 Build Small
该项目契合 Backyard AI 赛道,因为它聚焦于一个特定的本地化问题:巴基斯坦的诈骗式通知和可疑消息。
我没有去构建一个大型通用助手,而是想看看当范围明确、产品行为定义清晰、界面围绕真实用户设计时,一个小模型能走多远。
我最初测试了一个更大的 Qwen 模型,但最终的生产选择变成了Qwen3.5 4B Q8通过llama.cpp。它在我包含十个案例的评测中通过了所有高风险诈骗案例以及两个截图案例。这使它成为小型模型安全助手的实用选择。
该项目使用了:
Hugging Face Space
→ custom Gradio frontend
→ queued Gradio Server endpoint
→ Modal endpoint
→ CUDA llama.cpp
→ Qwen3.5 4B Q8 MTP GGUF + vision projector
这让我得到了一套小模型技术栈,既能处理文本又能处理截图,同时保持在黑客松 32B 模型限制以内。
这款应用的功能
Pakistan Notice Helper 同时支持英语和乌尔都语。这是最重要的产品决策之一,因为在巴基斯坦,可疑信息通常以英语、乌尔都语、罗马乌尔都语或三者混用的形式出现。
乌尔都语模式不仅仅是翻译后的界面。当用户切换到乌尔都语时,应用会将布局改为从右到左,翻译标题、标签、风险卡片、验证消息和结果控件,同时还会要求模型用清晰的乌尔都语文字生成评估结果。
这意味着用户可以提交一条可疑信息,并以乌尔都语收到完整的安全响应,包括风险标签、解释、危险信号、安全的后续步骤,以及在适当情况下可选的回复草稿。对于一款本地安全工具而言,这一点很重要,因为当建议以人们最习惯使用的语言书写时,人们更容易信任并据此采取行动。
该应用会查找以下警示信号:
- 紧急威胁或账号封停类措辞;
- 索要 OTP、PIN、密码、CVV、CNIC 信息或银行卡数据;
- 可疑的支付链接或个人手机号码;
- 冒充银行、电信公司、快递公司、税务机关或警方;
- 要求预先付费的奖品、退款、工作机会或福利。
随后,该工具会向用户提供更安全的后续操作建议,例如通过独立查找到的官方渠道进行核实,而不是使用可疑消息中的链接或电话号码。
我在构建过程中学到的经验
这个项目让我明白,用小模型做开发,与其说是追求最高的基准测试分数,不如说是在质量、速度、成本和产品安全性之间找到恰当的平衡。
1. 范围明确时,小模型表现最佳
最大的收获之一是:当任务被仔细限定边界时,小模型可以表现得出奇地好。
Pakistan Notice Helper 不需要成为一个通用的诈骗调查工具。它只需要识别可见的风险信号、避免过度断言,并给出安全的后续操作建议。这使得产品范围、提示词设计和输出契约与模型本身同样重要。
这款应用的设计初衷是:这看起来有风险,以下是警示信号,接下来是你应该安全采取的行动。它并非旨在断言:这绝对是真的,或者绝对是假的。
2. 从更大的模型开始
我从 Qwen3.6 27B 开始,质量非常出色。在我的测试中,它处理可疑消息的表现非常好,并给出了有力、可靠的解释。
问题在于部署成本和实用性。该模型需要多得多的 VRAM、更大的 GPU 机器,以及冷启动时更长的恢复时间。对于流量不规律的黑客松演示来说,这并不理想。它能用,但对于我想构建的那种小而专注的工具来说,它太贵、太重了。
就质量而言,对于这项任务,我会给更大的模型打大约 95/100。但仅有质量还不够。我还必须考虑成本、速度、冷启动,以及应用能否保持响应。
3. 测试更小的本地选项
在那之后,我尝试转向一个小得多的视觉语言模型 MiniCPM-V 4.6 Q8,希望它能在更大程度上本地运行并降低服务成本。
那个实验效果不佳。它在 GPU 上运行非常慢,而当我尝试通过 ZeroGPU 运行它时,又遇到了配额和运行时问题。即便界面显示我还剩大约 35 分钟配额,应用的表现也不可靠。我至今仍不完全确定是什么导致了这些问题,但它让部署变得不稳定。
随后我回退,并通过 Modal 部署了模型。部署本身很快,几秒内就开始响应,但模型质量不够好。它在检测可疑消息时很吃力,在我的测试用例中失败太多,所以我不得不放弃它。
4. 寻找“刚刚好”的模型
接着我浏览了 Artificial Analysis 上的小型开源模型排行榜,找到了最终成为这个项目最佳选择的模型:Qwen3.5 4B。
它足够小,契合 Build Small 的精神;足够快,能满足应用体验;能力也足够强,能实现我所需的安全行为。与 Qwen3.6 27B 相比,在这个任务上我会给它打大约 80/100,而更大的那个模型则接近 95/100。
但这种取舍是合理的。
4B 模型服务成本更低、加载更快、部署更容易,并且能在较小的 Modal 机器上实际运行。模型质量、速度、成本和冷启动行为之间的这种平衡,使它成为 Pakistan Notice Helper 的“刚刚好”模型。
5. 提示词与输出契约至关重要
一些早期版本以很有参考价值的方式失败了。
思考模式在返回最终结构化 JSON 之前就耗尽了 500 token 的输出预算,因此我在生产环境中禁用了思考模式。一张密集的罗马乌尔都语截图达到了最初的补全上限,所以现在图像请求会获得更大的 token 预算。
另一个模型回复建议了一个看似官方但未经核实的域名。这是一个严重的产品问题,因此我更新了系统提示词,禁止编造 URL、电话号码、组织机构和事实。
这些修复让系统更安全、更可预测。模型不再只是被要求“检测诈骗”,而是被要求遵循一份严格的安全契约。
6. 乌尔都语用户体验需要真正的产品化工作
乌尔都语界面所需的工作量也超出了我的预期。
直接翻译听起来不自然。一些标题需要不同的行高。乌尔都语与拉丁字母混排的模型名称可能会意外重排。移动端控件需要更多垂直空间,尤其是在从右到左的布局中。
我还测试了一款打包的 Nastaliq 网页字体。它单独看很漂亮,但在产品界面内却降低了可读性,让界面显得不够统一。我将其移除,改回系统阿拉伯字体栈,同时保留了改进后的乌尔都语文案和 RTL 布局。
这些不仅仅是设计细节。它们影响着这款应用是否让人感到清晰、易用且值得信赖。
7. 主要教训
最后的教训是,对一款产品而言,最好的模型并不总是最大的模型。
对于这个项目,Qwen3.6 27B 给出了最佳的原始质量,但 Qwen3.5 4B 给出了最佳的产品平衡。它体积小、速度快、成本低,而且对于明确定义的任务来说足够好。
正是这种权衡取舍,让这个项目感觉非常适合 Build Small。
用 Codex 构建
Codex 帮助我在整个项目中推进得快得多,尤其是因为这不仅仅是一个简单的模型演示。Pakistan Notice Helper 需要一个自定义前端、一个 Gradio 后端、一个托管在 Modal 上的 llama.cpp 服务器、截图支持、乌尔都语模式、测试、文档,以及一条更安全的输出流水线。
完整代码可在 GitHub 仓库中获取。
我把 Codex 当作工程协作伙伴,而不仅仅是代码生成器。它帮助检查现有仓库、实现更改、运行测试、调试问题、更新文档,并让 Modal、Gradio 和 llama.cpp 的设置与已部署的系统保持一致。
最有用的部分之一,是在保持通过 Gradio Server 兼容 Hugging Face Spaces 的同时,构建一个自定义的 HTML、CSS 和 JavaScript 界面。该应用没有使用默认的 Gradio 组件布局,而是采用产品风格的前端,在后台与 Gradio 的队列 API 路由和 SSE 协议通信。
这让最终的 Space 更像一个真正的本地安全工具,而不是标准的模型试验场。Codex 还帮助进行了反复的 UI 优化,包括英语/乌尔都语切换、移动端布局修复、结果卡片、缓存示例、追踪控制,以及更清晰的部署流程文档。
对我来说,最大的好处是迭代速度。我可以描述我想要的产品行为,审查实现,进行测试,然后不断优化应用,直到前端、后端、模型端点和安全约束协同工作。
隐私安全的追踪
我还添加了一个可选的公开追踪功能,让人们可以了解该应用的使用情况,而不会暴露用户的私密内容。
追踪选项在应用内可见,并可在每次请求前禁用。启用后,它仅记录有限的请求级元数据,而非完整的用户消息或截图。文本经过脱敏并设有长度上限。图像通过固定摘要表示,不予存储。
追踪不包含原始截图、链接、标识符、生成的解释、回复草稿、错误、凭证,以及任何可能意外重复私密细节的自由格式模型输出。
我还发布了 trace 数据集,方便人们查看其 schema,并了解会共享哪些类型的元数据。
你可以在这里查看该数据集:
Pakistan Notice Helper 公开 trace
这一点很重要,因为敏感信息可能不只从原始输入中泄露。模型解释、回复草稿、提取出的电话号码、URL 或异常消息,即便原始消息已被移除,也可能重复暴露个人详细信息。为避免这种情况,trace 系统只发布有限的类别、布尔值、计数和固定摘要。
该应用仍会将实时文本和图像发送到私有的 Modal endpoint 进行推理,因此我并不会将其描述为匿名的本地推理。用户会被警告不要提交敏感个人数据,并且每次请求前都可以关闭公开 trace 共享。
目前的结果
这个小规模评测套件并不能作为真实世界准确率的估计,但它对回归测试很有用。
最终评测达到了:
| 指标 | 结果 |
|---|---|
| 初始严格通过数 | 10 个中的 9 个 |
| 初始平均分 | 89.5/100 |
| 最终回归通过数 | 10 项中通过 10 项 |
| 最终回归平均分 | 100/100 |
| 高风险诈骗案例 | 全部通过 |
| 截图案例 | 两项均通过 |
| MTP 草稿接受数 | 440 个 token 中接受 222 个 |
| 草稿接受率 | 50.5% |
最重要的结果并不是分数本身,而是一个经过范围限定的 4B 模型在完成提示词、输出契约和 UI 修复后,仍能保留我所需要的安全行为。
接下来我会构建什么
下一个主要功能将是一个智能体验证工作流。
目前,Pakistan Notice Helper 只做到初步筛查这一步。它会读取提交的文本或截图,识别出可见的风险信号,并给出安全的后续操作建议。在下一个版本中,我希望这款应用能更进一步,帮助核实该通知是原创的、抄袭的,还是已经在网上被讨论为骗局。
针对这一工作流,我计划使用 Olostep 来进行网络搜索和网页抓取。该智能体可以在网上搜索当前的诈骗警告,检查是否有其他人报告过类似的消息,识别被冒充的机构,并将这些说法与独立发现的官方来源进行比对。
我还计划使用 OpenAI Agents SDK 来管理这一核实工作流。该智能体不会随意浏览,而是遵循一套受控流程:提取可能的机构名称,搜索相关警告,抓取相关页面,对来源进行排序,然后将证据与模型的评估一并呈现。
这一工作流需要严格的安全边界。该智能体绝不能信任可疑消息中的链接、电话号码或联系方式。它只应使用独立发现的来源,并将证据与推理明确区分开来。
这里还存在产品层面的权衡。当前应用通常在约 5 秒内返回结果,冷启动时约为 9 秒。加入网页搜索、抓取、来源核查和智能体推理,会同时增加推理成本和响应时间。完整的验证工作流可能需要接近 30 秒,这比当前的分诊体验慢得多。
这就是为什么我让黑客松版本专注于快速的安全指引。对于可疑消息,速度很重要。当前版本帮助用户迅速暂停并避免高风险操作,而未来的智能体版本则可以在用户愿意等待更久时提供更深入的验证。
最后的一些思考
Pakistan Notice Helper 在设计上就是小而精的。
它并不试图解决所有类型的欺诈。它不声称能验证官方通知。它不取代银行、快递公司、电信运营商或政府门户网站。
相反,它帮助用户暂停下来、注意到危险信号,并采取更安全的下一步行动。
我在紧张的三天里完成了这个项目,期间不断编写、部署、测试、改进,并打磨粗糙的边角。大部分进展来自花时间与产品本身相处:测试真实案例、发现小的失败、修正提示词、调整界面,并思考每一个决策背后的工程约束。
这个过程让项目变得好得多。因为我花在测试和规划上的时间比单纯添加功能更多,我有了更多空间去思考模型规模、延迟、冷启动、成本、安全边界、乌尔都语可用性,以及一个小模型现实上能把什么做好。
我在用小模型构建方面学到了很多。最大的心得是:当问题足够本地化、聚焦且经过精心设计时,小模型就会变得强大。它们或许无法解决一切,但只要范围界定得诚实,它们依然能帮助解决真实的问题。
在这个数字世界里,我们被诈骗、欺诈和可疑信息所包围。Pakistan Notice Helper 并不是完整的答案,但它是一个小小的起点:黑暗天空中的一盏灯,旨在帮助人们放慢脚步、保持更安全,并在为时已晚之前做出更好的决定。
这正是我想为这次黑客松构建的那种小型 AI:本地化、聚焦、坦诚面对自身的局限,并且对它所服务的人群真正有用。
项目链接
你可以在这里试用应用、查看代码,并检视公开的 trace 数据集:
- Web 应用:Hugging Face Spaces 上的 Pakistan Notice Helper
- YouTube 演示:Pakistan Notice Helper 演示:检查可疑短信、账单、银行提醒和通知
- GitHub 仓库:kingabzpro/pakistan-notice-helper
- 公开 trace 数据集:Pakistan Notice Helper traces on Hugging Face Datasets
该 GitHub 仓库包含应用代码、部署配置、文档、模型实验记录以及其他项目细节。该 Space 托管着线上应用,而数据集则展示了隐私安全的 trace 格式,用于发布有限的请求级元数据,同时不暴露用户的原始消息或截图。
注意: 该应用旨在提供安全指引,而非法律、财务、银行或政府验证方面的建议。
来源:Hugging Face:Blog(RSS) · huggingface.co