钓鱼邮件文本检测AI大模型项目演示——LLM+RAG+N8N

钓鱼邮件文本检测AI大模型项目演示——LLM+RAG+N8N

AI钓鱼邮件检测-JonasLu

本实践项目是把一个机器学习及深度学习模型从训练阶段,完整走到可用的生产级 MLOps 流水线,包括服务化、前端交互、监控与漂移检测、反馈闭环,以及触发式再训练与持续部署。

首先是整体架构。我们把系统拆成多个可独立运行的服务,并用 Docker 容器化,再用 Docker Compose 进行编排,使得 API、Web 应用、监控、以及 Agent 模块都能在同一个可复现的网络环境中互相通信。这样做的价值是:部署一致、环境稳定、便于协作与上线迁移。

第二部分是模型 Serving。我们使用 FastAPI 实现一个预测服务,提供一个 POST /predict 的标准接口:外部应用只需要提交 JSON 格式的数据,API 就会加载我们在 artifacts 中保存的“完整预测流水线”(embedding / scaler / 模型),并返回预测结果。这个 Serving API 是系统的“决策核心”,后续的前端与 Agent 都通过它来获取预测。

第三部分是用户界面。我们用 Streamlit 实现一个简单 Web 端:用户输入或上传数据,点击“预测”后,Web 端调用 FastAPI 并展示结果;同时也可以显示一些简单统计或可视化,帮助用户理解当前预测分布与风险水平。更关键的是,我们设计了“通知用户/触发 Agent”的按钮,用于把预测结果交给后面的智能自动化模块。

第四部分是监控与报告。我们引入 Evidently 来做两类监控:一类是模型性能指标,比如 F1、Precision、Recall 等;另一类是 数据漂移(data drift) 检测。Evidently 对比两份数据:ref_data.csv 作为参考数据,以及 prod_data.csv 作为生产数据。通过持续对比,我们能判断模型是否“在生产环境中变差”,或者数据分布是否发生了明显变化。

最后采用 Agent IA(n8n + LLM(RAG))与 Human-in-the-Loop 闭环。当模型给出高风险预测时,Agent 会自动生成更易理解的解释或通知内容,并通过邮件等方式联系用户/操作员,让对方确认或纠正结果;这些反馈会写入 prod_data,成为新的带标注数据。系统还会设置触发条件:当反馈数据达到阈值,或检测到显著漂移时,自动启动再训练,并更新 production 中使用的模型版本,实现“持续训练 + 持续部署”。

总结来说,这个项目我们实现了一个完整的现代 MLOps 生命周期:训练 → 部署 → 服务化 → 监控 → 反馈收集 → 自动更新。它不仅能用于表格数据,也适用于图像等多模态任务,并且通过 Agent + LLM 把模型从“只输出一个分数”升级为“可解释、可交互、可持续优化”的生产系统。

具体实施流程:

1) 数据与训练(离线阶段)

  • 收集/整理数据:历史邮件/消息文本 + 标签(fraud / legit,或多类别)
  • 文本预处理:清洗、去噪、分词/截断、处理类别不平衡
  • 向量化(Embedding)采用TF-IDF+停用词设定:把文本变成向量(用于模型、也用于 drift 检测)
  • 训练分类模型:LogReg / SVM / LightGBM / 小型深度模型
  • 导出 artifacts:embedding + scaler(可选) + classifier(pickle)

输出:

  • ref_data.csv:参考数据的向量(+ label)
  • model.pkl / embedder.pkl:部署用模型文件

2) 线上预测服务(Serving API:FastAPI)

核心 endpoint:

  • POST /predict:输入 {text: "..."}
    • 生成 embedding
    • 分类器输出:label + 概率(风险分数)
    • 返回预测结果(比如 risk_score, predicted_label)

可扩展 endpoint:

  • POST /feedback:接收用户确认结果(真/假诈骗),用于写入生产数据

3) Web 界面(Streamlit)

  • 输入一段邮件/消息 → 调用 /predict API→ 展示结果(诈骗概率、分类)
  • 关键按钮:“用户标记反馈”
    • 不直接在 Streamlit 里收集反馈
    • 而是触发 Agent(n8n + LLM)去联系用户并收集反馈(Human-in-the-loop)

4) RAG + LLM(沟通与解释层,基于GROQ大模型-QW向量模型)

你们这里的 RAG 主要服务两件事:

  1. 给用户写“解释性通知”
    • 结合模型输出(风险分数、可疑点)
      • 知识库(公司安全政策、诈骗案例库、FAQ、处理流程)
    • 生成更像真人客服的消息:说明原因 + 给出建议 + 提供确认/申诉链接
  2. 让客服/内部人员问答
    • “为什么这条被判诈骗?”、“怎么处理?”
    • RAG 返回基于知识库的可追溯回答(带引用片段)

知识库来源例子:

  • 内部规则/安全指南、历史诈骗模板、常见钓鱼手法、处理 SOP

5) Agent(n8n + LLM)自动化闭环

Agent 的职责是把“预测结果 → 沟通 → 收集反馈 → 回写数据”串起来:

  • 接到 “Notifier” 请求后:
    1. 调用 /predict 取到结果
    2. 用 LLM(可结合 RAG)生成邮件/消息内容
    3. 发送给用户(email/表单/链接)
    4. 用户点击确认(诈骗/非诈骗)→ 触发 webhook
    5. webhook 调 /feedback 回写反馈

6) 生产数据积累 & Monitoring(Evidently)

  • /feedback 把每次样本保存到 prod_data.csv(向量 + 预测 + 用户真实标签)
  • Evidently 定期对比:
    • 性能:F1、precision、recall、balanced accuracy(基于已反馈数据)
    • data drift:新数据向量分布 vs ref_data.csv 的差异
  • Dashboard 展示当前健康状态(你们 TP 的 reporting 部分)

7) 触发再训练 & “持续部署”

触发条件(任选其一或组合):

  • prod_data.csv 新增数据达到阈值 k
  • 或 drift 超阈值 / 性能下降

再训练流程:

  • concat:ref_data + prod_data(已标注)
  • 重新训练模型 → 更新 artifacts
  • FastAPI reload 全局模型变量
  • 采用evidently(完成“持续部署”)

关于作者

Jonaslu

Jonaslu administrator

jonaslu@163.com

发表评论