FeedLens反馈透镜

业务流程

本文描述三条流程:用户使用产品的流程、一次请求在系统内的处理流程、以及模型从数据到上线的迭代流程。

1. 用户使用流程

flowchart TD
    A[收集到一批用户反馈] --> B{数量}
    B -- 一条 --> C[单条分析页粘贴]
    B -- 多条 --> D[批量分诊页粘贴<br/>每行一条 最多50条]
    C --> E[查看 类别/情感/紧急度/摘要]
    D --> F[查看按紧急度排序的列表<br/>和类别分布]
    E --> G{结果可信吗}
    F --> G
    G -- 不确定 --> H[展开模型原始输出<br/>对照规则基线]
    H --> I[人工修正]
    G -- 可信 --> J[复制摘要作工单标题<br/>或导出 CSV]
    I --> J
    J --> K[进入团队现有的工单/周报流程]

设计上的两个要点:

2. 一次请求的处理流程

sequenceDiagram
    participant U as 浏览器
    participant S as 后端 FastAPI
    participant P as 提示词与解析<br/>schema.py
    participant M as FeedLens-MiniMind
    U->>U: 前端校验(非空、≤140字)
    U->>S: POST /api/analyze {text}
    S->>S: 后端再次校验长度
    alt 模型未加载
        S-->>U: 503 model_not_loaded
        U->>U: 提示处于演示模式
    else 模型已加载
        S->>P: 拼接固定指令 + 反馈原文<br/>套用 MiniMind 对话模板
        P->>M: token 序列
        M->>M: 贪心解码,最多 48 个 token<br/>遇到结束符停止
        M-->>P: 生成的文本
        P->>P: 按行解析四个字段<br/>校验标签是否在取值集合内
        S->>S: 另算一份规则基线结果(仅作对照)
        S-->>U: 结果、是否合规、原始输出、耗时
        U->>U: 渲染结果卡;不合规则显示错误与原始输出
    end

几个容易被问到的细节:

环节 做法 原因
提示词 训练和推理调用同一个函数生成前缀 保证逐 token 一致,避免“训练时见过的格式”和“上线时用的格式”不同
解码 贪心(不采样) 分类型任务要可复现;同一输入每次结果相同
生成长度上限 48 个 token 正常答案 23–35 个 token;上限防止异常输入导致长时间生成
解析 字段可乱序、容忍全半角冒号;标签必须精确在集合内 对无关紧要的差异宽容,对实质错误严格
解析失败 原样返回并标记 valid=false 不用规则或猜测去“修”模型的错
并发 推理串行执行(加锁) 单模型实例非线程安全;v0.1 的访问量不需要并发

3. 模型迭代流程

flowchart LR
    A[标注规范<br/>lexicon.py 顶部] --> B[合成语法生成<br/>generate.py]
    A --> C[手写分布外集<br/>ood_handwritten.txt]
    B --> D[清洗 校验 去重<br/>分组划分 泄漏检查<br/>build.py]
    C --> D
    D --> E[train / val]
    D --> F[test / ood_test<br/>只用于最终报告]
    D --> G[ood_dev<br/>用于错误分析]
    E --> H[训练<br/>train.py]
    H --> I[按验证损失选检查点]
    I --> J[评测<br/>evaluate.py]
    F --> J
    G --> J
    J --> K[失败案例分析]
    K -- 发现缺失的说法或类型 --> A
    J --> L[打包与说明卡<br/>package.py]
    L --> M[网页应用加载]

这条流程里有三处刻意的隔离:

  1. 测试集不参与任何决定。选检查点只看验证集;调整数据只看 ood_dev 的失败案例;test 和 ood_test 只在最后出报告时使用。
  2. 按“核心表达”分组划分。同一种核心说法的所有变体只会落在一个划分里,测试集里的说法训练时没见过。
  3. 分布外数据不走生成器。它的作用是检验“语法之外”的表现,所以不能由同一套语法产生。

每一步对应的脚本、输入输出和实际运行结果见 数据说明、训练记录、评测报告。

本页由 docs/05-business-flow.md 生成。