102 lines
3.5 KiB
Markdown
102 lines
3.5 KiB
Markdown
# FastGPT 迁移前基线
|
||
|
||
> 采集日期:2026-07-26
|
||
> Git 基线:`5c719ed`
|
||
> 环境:本地 macOS,项目 `.venv`,FakeBackend/FakeClient;未调用真实 FastGPT
|
||
> 用途:冻结可复现工程基线,不冒充生产业务指标
|
||
|
||
## 自动化基线
|
||
|
||
执行:
|
||
|
||
```bash
|
||
.venv/bin/python -m pytest -q
|
||
```
|
||
|
||
Phase 0 开始前结果:
|
||
|
||
```text
|
||
32 passed in 0.32s
|
||
```
|
||
|
||
覆盖范围:
|
||
|
||
- Pydantic 公共请求/响应 schema;
|
||
- `/chat` 对 backend-neutral contract 的适配;
|
||
- FastGPT backend 的 SDK/Event 转换;
|
||
- state prefix 跨 chunk 的基础兼容;
|
||
- 文本分句。
|
||
|
||
未覆盖范围:
|
||
|
||
- 真实 FastGPT 网络延迟和错误;
|
||
- 真实 workflow 状态序列稳定性;
|
||
- `/set_info`、`/get_info` 完整兼容行为;
|
||
- 生产转人工比例和 prefix 失败率;
|
||
- 数据库、并发恢复和 LangGraph。
|
||
|
||
Phase 0 完成后的测试数量和耗时见本报告底部。
|
||
|
||
## 本地 API 适配层耗时
|
||
|
||
使用内存 FakeBackend,关闭日志后直接调用 endpoint 并完整消费流式响应。该数据只衡量 Python 适配、prefix/SSE 处理开销,不包含 HTTP、网络、FastGPT 或模型延迟。
|
||
|
||
```text
|
||
nonstream n=2000 p50=0.004ms p95=0.014ms p99=0.030ms
|
||
stream-consume n=1000 p50=0.011ms p95=0.034ms p99=0.051ms
|
||
```
|
||
|
||
这组数据用于后续发现 API 适配层的明显性能回退,不能与生产端到端延迟混用。
|
||
|
||
## 生产指标采集口径
|
||
|
||
以下数据无法从仓库推导,必须由部署环境日志或监控采集。负责人应使用同一时间窗口、同一调用方集合,并排除压测流量。
|
||
|
||
| 指标 | 计算方式 | 当前值 |
|
||
|---|---|---|
|
||
| `/chat` 请求数 | 成功与失败总请求 | 待生产采集 |
|
||
| 非流式 P50/P95/P99 | endpoint 总耗时 | 待生产采集 |
|
||
| 流式 TTFB P50/P95/P99 | 收到请求至首个 `text_delta` | 待生产采集 |
|
||
| 响应体错误率 | `code != "200"` / 请求数 | 待生产采集 |
|
||
| FastGPT 超时率 | timeout / FastGPT 调用数 | 待生产采集 |
|
||
| Prefix 失败率 | 缺失、格式错误、未知码 / 模型回复数 | 当前未结构化记录 |
|
||
| 转人工率 | `0001/0002/0003/0004/0005` / session 数 | 待生产采集 |
|
||
| `formUpdate` 产生率 | 非空 patch / `needFormUpdate=true` 轮次 | 待生产采集 |
|
||
| 平均轮次 | chat 轮次 / 完结 session 数 | 待生产采集 |
|
||
| `/set_info`、`/get_info` 错误率 | `code != "200"` / 请求数 | 待生产采集 |
|
||
|
||
## 当前可观测性限制
|
||
|
||
当前日志虽然记录延迟,但也记录完整 `sessionId`、输入、输出和 `formUpdate`,不能直接作为长期生产基线方案。Phase 1/8 应先加入 request ID、session hash、结构化事件和脱敏,然后再持续采集。
|
||
|
||
建议临时聚合时只输出:
|
||
|
||
- 时间桶;
|
||
- endpoint;
|
||
- 成功/稳定错误类别;
|
||
- 耗时;
|
||
- stage code;
|
||
- 是否产生 form patch;
|
||
- 不可逆 session hash。
|
||
|
||
不得导出原始对话、身份证、手机号、车牌、Token 或完整表单。
|
||
|
||
## Phase 0 最终验证
|
||
|
||
完成日期:2026-07-26
|
||
|
||
```text
|
||
48 passed in 0.49s
|
||
```
|
||
|
||
相对 Phase 0 开始前新增 16 个测试,覆盖:
|
||
|
||
- `/set_info`、`/get_info` 的 FastGPT 辅助调用和兼容序列化;
|
||
- SSE 成功事件顺序、唯一终止事件和文本拼接;
|
||
- 当前缺失流式 prefix 的历史行为;
|
||
- 状态/迁移/字段注册表闭合性;
|
||
- 黄金场景唯一性和敏感号码扫描;
|
||
- 源码、文档、测试和配置样例中的 FastGPT Token 扫描。
|
||
|
||
生产业务指标仍标记为“待生产采集”。这是外部可观测数据依赖,不用估算值替代;最迟必须在 Phase 9 shadow 前完成采集。
|