先这样答
Prompt 优化要先结构化,再用示例和评测集迭代验证;压缩不能只看字数,还要看固定集上的效果。
我通常把 Prompt 分成角色、任务、约束和示例几段。角色说明当前身份。任务说明要完成什么。约束说明输出边界。示例展示期望的输入和输出。这样的结构能减少信息混在一起的问题。few-shot 也要选择合适的示例,不能只追求数量。
压缩时,我会先删掉冗余示例,再合并重复或相近的指令。低频约束可以下沉到工具层,不必每次都放进 Prompt。过长的上下文可以先做摘要,保留完成当前任务所需的信息。最后用同一份固定评测集对比压缩前后的效果。如果效果下降,就回看被删掉的示例、指令或约束。Prompt 不是越短越好,而是要在长度和效果之间找到合适的平衡。
面试官会怎么追问
-
「你会怎么判断哪些 few-shot 示例可以删?」 我会先看示例是否重复表达同一种规则。能被其他示例覆盖的内容,可以优先删除。删除后要用固定评测集比较效果,不能只凭直觉判断。
-
「为什么低频约束可以放到工具层?」 低频约束不需要在每次请求中重复出现。把它放到工具层,可以减少 Prompt 中的重复内容。前提是工具层仍能执行这条约束,并且压缩后效果要经过固定集验证。
-
「Prompt 压缩后效果变差,你会怎么排查?」 我会先对比压缩前后的评测结果,再定位删改了哪些示例、指令和约束。然后逐项恢复可疑内容,确认是哪一部分影响了结果。修复后继续用同一份固定集验证。
回答的坑
- 把 Prompt 压缩理解成单纯删字,忽略压缩前后的效果对比。
- 只会罗列角色、任务、约束和示例,却说不清如何选 few-shot 和迭代调试。
同系列的题
这家公司的面经实录
—— 本题完 ——