本实践项目是把一个机器学习及深度学习模型从训练阶段,完整走到可用的生产级 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)
- 输入一段邮件/消息 → 调用
/predictAPI→ 展示结果(诈骗概率、分类) - 关键按钮:“用户标记反馈”
- 不直接在 Streamlit 里收集反馈
- 而是触发 Agent(n8n + LLM)去联系用户并收集反馈(Human-in-the-loop)
4) RAG + LLM(沟通与解释层,基于GROQ大模型-QW向量模型)
你们这里的 RAG 主要服务两件事:
- 给用户写“解释性通知”
- 结合模型输出(风险分数、可疑点)
- 知识库(公司安全政策、诈骗案例库、FAQ、处理流程)
- 生成更像真人客服的消息:说明原因 + 给出建议 + 提供确认/申诉链接
- 结合模型输出(风险分数、可疑点)
- 让客服/内部人员问答
- “为什么这条被判诈骗?”、“怎么处理?”
- RAG 返回基于知识库的可追溯回答(带引用片段)
知识库来源例子:
- 内部规则/安全指南、历史诈骗模板、常见钓鱼手法、处理 SOP
5) Agent(n8n + LLM)自动化闭环
Agent 的职责是把“预测结果 → 沟通 → 收集反馈 → 回写数据”串起来:
- 接到 “Notifier” 请求后:
- 调用
/predict取到结果 - 用 LLM(可结合 RAG)生成邮件/消息内容
- 发送给用户(email/表单/链接)
- 用户点击确认(诈骗/非诈骗)→ 触发 webhook
- 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(完成“持续部署”)


关于作者