Files
ZNJJ-api-server/docs/baselines/fastgpt-baseline-20260726.md
2026-07-27 17:21:29 +08:00

102 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 前完成采集。