把三千字的客服规范整体挪进 system 之后,gpt-4.1 的首字延迟从四百毫秒涨到一点三秒,同一批问题的 P95 跟着翻倍;试过把 temperature 降到 0、也换过 gpt-4.1-mini,延迟只回到一点一秒,规范仍然每轮全量重发。
一开始怀疑是「没有开前缀缓存,长前缀每次按原价重新计算」,查了一圈,方向不对。
排查方向其实有限,先把可能性排一排。system 每轮都全量发送,输入 token 从两千涨到七千。另一种情况是规范里大段重复条款,真正生效的只有最前面几条。
不容易想到的是,客户端把整份规范拼进 user 消息,缓存前缀对不上。
上来先统计 system 与 user 各自的 token 占比
python -c "import tiktoken;e=tiktoken.get_encoding('o200k_base');s=open('sys.txt',encoding='utf-8').read();print(len(e.encode(s)))"
再往下把重复条款合并后压到三千 token 以内
python shrink_system.py --in sys.txt --max-tokens 3000 --report
长前缀固定放最前并用 curl 复测一次
curl https://api.openai.com/v1/chat/completions -H "Authorization: Bearer $KEY" -d @req_short.json
等前面都确认过,再改完压测同一批问题看首字延迟
python bench_ttft.py --questions q.jsonl --repeat 3
改完先别撤,确认这几项。同一批五十个问题首字延迟回到五百毫秒以内,输入 token 稳定在三千左右,回答里规范条款的引用没有缺失。
提醒一点。首字延迟和输入长度基本线性相关,规范不是越长越稳,重复条款既费钱又稀释指令。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
