架构与原理
NLI 文本分类服务采用「Go BFF → Python mDeBERTa 服务 → Redis 缓存」三层架构,独立部署在 nli 容器(端口 3005),与 DFA 敏感词服务解耦,互不影响。
模型与服务
| 参数 | 类型 | 必填 | 说明 |
|---|
| model | string | 可选 | MoritzLaurer/mDeBERTa-v3-base-mnli-xnli(HuggingFace) |
| runtime | string | 可选 | Flask HTTP 服务,容器名 nli,端口 3005 |
| supported_langs | string | 可选 | 100+ 语言(含中文、英文、日文、阿拉伯文等) |
| latency | string | 可选 | 首次 200-500ms;Redis 缓存命中 <10ms |
| violation_threshold | number | 可选 | top 标签概率 ≥ 0.5 且非安全标签时判定违规(config.json nli.violation_threshold 可配置) |
端点对照
| 参数 | 类型 | 必填 | 说明 |
|---|
| POST /classify | Python | 可选 | NLI 服务原生端点(容器内) |
| POST /detect | Python | 可选 | 综合审核(含 is_safe / risk_level 判定) |
| POST /api/v1/moderate/nli | Go BFF | 可选 | 对外公开端点(需 Bearer Token) |
| POST /api/admin/nli/test | Go BFF | 可选 | 管理员测试端点 |
管理后台接口(需 Admin 鉴权)
| 参数 | 类型 | 必填 | 说明 |
|---|
| GET /api/admin/nli/status | - | 可选 | 服务状态(在线/模型就绪/候选标签) |
| GET /api/admin/nli/config | - | 可选 | 读取 NLI 服务配置 |
| PUT /api/admin/nli/config | - | 可选 | 更新配置(候选标签、阈值、启用状态等) |
| POST /api/admin/nli/test | - | 可选 | 测试 NLI 分类 (body: {text, candidate_labels}) |
与 DFA 文本审核的关系
两者互补,建议组合使用:
| 参数 | 类型 | 必填 | 说明 |
|---|
| /api/v1/moderate | DFA | 可选 | 快速敏感词命中(<1ms),适合已知违规词库拦截 |
| /api/v1/moderate/nli | NLI | 可选 | 语义级风险预判(200-500ms),适合识别变体、隐晦表达 |