kevinmeix1/sherlockml

GitHub: kevinmeix1/sherlockml

SherlockML 是一个基于多 agent 架构的 ML 事件响应演示实验室,用 LangGraph 编排专家 agent 自主调查和修复合成欺诈模型故障。

Stars: 0 | Forks: 0

# SherlockML SherlockML 是一个确定性的、离线优先的笔记本电脑演示,用于展示多 agent ML 可靠性调查。它将合成的欺诈模型事件转化为可审计的工程案例:agent 收集证据、辩论相互冲突的原因、推荐处理方案、运行恢复实验,并生成案例报告。 它故意被设计为**不是聊天机器人**。主要的交互方式是一个调查控制室:选择一个事件,并观察一个受约束、可重复的工作流如何产生证据和建议。 ## 问题所在 机器学习系统可能会悄无声息地发生故障。当数据分布发生偏移、特征转换发生改变,或新的训练配置导致质量倒退时,模型可能仍在继续提供预测服务。当警报到达人类手中时,证据可能已经分散在指标、数据样本、代码和部署信号中。 ## 解决方案:SherlockML 方法 SherlockML 针对合成数据上演示了该事件响应循环的精简版本: 1. 从健康的欺诈模型基线开始。 2. 触发确定性事件:数据漂移、特征流水线 bug 或模型回归场景。 3. 通过 LangGraph supervisor 编排专家 agent。 4. 收集证据、对嫌疑对象进行排序,并记录一次“作战室”(War Room) 讨论。 5. 对合成的流水线契约应用受控修复,并保留可审查的 diff/配置产出物。 6. 根据显式的验证关卡比较基线和候选结果。 7. 保存恢复报告和产出物以供审查。 该演示从不使用客户数据、不调用托管模型、不部署模型,也不对远程仓库执行操作。其受控的本地流水线契约修复以 diff 产出物的形式展示。它被设计为在面试或黑客马拉松环境中可以安全地进行检查、重复和讨论。 ## 演示内容 | 领域 | 评委可以看到的内容 | | --- | --- | | 模型健康状况 | 基线欺诈模型评分、事件严重程度和证据时间线 | | 事件模拟器 | 可重现的合成漂移、流水线 bug 和回归场景 | | 多 Agent 大脑 | 侦探、统计学家、基础设施、主持人、医生、工程师和实验等角色 | | 作战室 (War Room) | 存储的、与证据关联的辩论,而不是不透明的单一答案 | | 恢复 | 受控的本地流水线契约修复、diff、候选实验、关卡和报告 | | 仪表盘 | 由 FastAPI API 支持的 Streamlit 控制室 | 确切的指标值是根据所选的合成场景和 seed 生成的。它们是**演示观察结果**,而不是关于已部署欺诈模型的声明。 ## 架构 ``` flowchart TD U["Engineer or judge"] --> UI["Streamlit Control Room :8502"] UI --> API["FastAPI Investigation API :8788"] API --> SIM["Deterministic Incident Simulator"] SIM --> SUP{"LangGraph Supervisor"} SUP --> DET["Detective\ncollect evidence"] SUP --> STAT["Statistician\nmeasure drift and data health"] SUP --> INFRA["Infra\ninspect latency and service signals"] DET --> WAR["War Room Moderator\nrecord disagreement and consensus"] STAT --> WAR INFRA --> WAR WAR --> DOC["Doctor\nwrite diagnosis and treatment"] DOC --> ENG["Engineer\nprepare bounded remediation"] ENG --> EXP["Experiment Agent\ntrain and compare candidate"] EXP --> VAL{"Validation gates"} VAL --> REP["Recovery report and local artifacts"] VAL -. "not approved" .-> WAR ``` 请参阅[架构指南](docs/ARCHITECTURE.md)了解数据流、agent 职责和安全边界。 ## 快速开始 要求:Python 3.10+ 和一个虚拟环境。Docker 是可选的。 ``` cd /Users/kaiwenmei/Desktop/SherlockML python3 -m venv .venv source .venv/bin/activate make install ``` 在单独的终端中,运行 API 和控制室: ``` make run-api make run-ui ``` 在 打开 Streamlit 仪表盘。API 可在 访问,当服务器运行时,交互式 API 文档位于 。 在演示前验证项目: ``` make check ``` ### 本地 API 快速参考 | 方法 | 路径 | 目的 | | --- | --- | --- | | GET | /health | 检查本地服务是否存活。 | | GET | /api/incidents | 列出确定性的演示场景。 | | POST | /api/incidents/{incident_type}/investigate | 运行一次有边界的调查。 | | POST | /api/reset | 恢复合成的流水线契约基线。 | 支持的事件类型包括 data_drift、pipeline_bug 和 model_regression。 仪表盘还接受易于理解的 feature_pipeline_bug 别名。这些仅是本地演示操作。 ## 演示:五个步骤 1. 打开仪表盘并建立健康的基线。 2. 触发诸如 **Data Drift** 的场景。 3. 选择 **Investigate Incident** 并观察证据时间线和作战室逐渐填充。 4. 检查提议的补救措施和候选实验比较。 5. 阅读审批决定和生成的恢复报告。 [演示脚本](docs/DEMO_SCRIPT.md) 包含面向评委的简明叙述和一次恢复演练。 ## 项目布局 ``` SherlockML/ ├── agents/ # Specialist investigation roles and LangGraph orchestration ├── api/ # FastAPI application and investigation interface ├── dashboard/ # Streamlit control room ├── ml/ # Training, evaluation, prediction, and drift utilities ├── simulator/ # Deterministic synthetic incident generators ├── experiments/ # Optional scratch space; runtime records live under artifacts/ ├── models/ # Generated local model artifacts ├── artifacts/ # Case reports and evidence snapshots ├── runtime/ # Ephemeral local state ├── tests/ # Deterministic test suite └── docs/ # Architecture, runbook, study material, and demo guidance ``` ## 使用 Docker 运行(可选) 默认的 Compose 命令仅运行 API: ``` docker compose up --build ``` 仪表盘位于一个显式配置文件之后,以便评委可以仅在需要时选择它: ``` docker compose --profile dashboard up --build ``` 这是本地容器打包,不是生产部署。Compose 将生成的产出物写入本地的 `artifacts/` 和 `runtime/` 文件夹。 ## 诚实界定范围的可选集成 - **MLflow:** 仅限本地 SQLite 支持的实验跟踪。笔记本电脑演示不使用 MLflow 服务器或远程产出物存储;便携式案例产出物仍然是规范的演示证据,并在跟踪不可用时作为后备。 - **Git:** 受控的本地修复始终会生成 diff 证据。可以启用可选的本地提交,但演示绝不需要凭据、推送分支或声称部署修复。 - **Docker:** 用于 FastAPI 服务和仪表盘的可选可重现打包。它不是 Kubernetes、CI/CD 或生产运行时。 [实现矩阵](docs/IMPLEMENTATION_MATRIX.md) 区分了可在本地运行的内容与可选及仅限设计路径的内容。 ## 学习和面试用途 SherlockML 有意设计得足够紧凑,以便能够端到端地理解。从 [学习指南](docs/STUDY_GUIDE.md) 开始,然后使用 [操作手册](docs/RUNBOOK.md) 排练正常路径和故障/恢复演练。 ## 安全性和可重现性 - 所有输入数据均为生成的合成类欺诈数据。 - 固定的 seed 使默认场景可重复。 - 除非操作员明确选择其他路径,否则产出物将保留在笔记本电脑上。 - 修复仅应用于合成的本地流水线契约。验证决定是供审查的工程建议,而不是生产发布。 ## 许可和范围 本仓库是一个技术演示和面试学习项目。它不是欺诈决策系统、生产监控平台,也不能替代安全、合规、模型风险或人工审批流程。
标签:Apex, Kubernetes, LangGraph, MLOps, 可靠性测试, 大模型智能体, 机器学习, 模块化设计, 自动化修复, 请求拦截, 逆向工具