核心要点

  • 能说清职责:角色与边界、能力与工具说明、行为与输出格式规范、安全与拒答策略、少样本示例、上下文与记忆约定

  • 能识别膨胀代价:token 成本上升、关键指令被「淹没」导致注意力稀释、长文本难维护与回归

  • 能给分层方案:稳定的静态系统提示 + 运行时动态注入(用户画像、检索结果、当前任务),二者分离

  • 能讲按需加载:渐进式披露、Skill/工具描述外置,只在需要时把详细说明注入上下文,并用 prompt caching 摊薄成本

标准回答

System Prompt 的职责

在 Agent 系统里,System Prompt 是定义「这个智能体是谁、能做什么、怎么做」的最高优先级指令层,通常承载六类职责:角色与边界(人设、服务范围、不该做什么);能力与工具说明(有哪些工具、参数语义、调用时机);行为与格式规范(语气、步骤、输出结构如 JSON 约定);安全与拒答策略(合规红线、越权请求如何拒绝);少样本示例(用 1~3 个范例锚定期望行为);上下文与记忆约定(如何使用对话历史、长期记忆与检索内容)。

为什么会越来越长

随着场景变多、工具增加、补丁式地不断加规则与例外,System Prompt 容易膨胀。代价有三:token 成本随每次调用线性增加;注意力稀释——关键指令淹没在大段文本里,模型遵循度反而下降;维护困难——规则相互冲突、改一处牵动全局,难以回归测试。

如何处理膨胀

核心思路是上下文工程而非一味堆字。第一,模块化与分层:把不变的静态系统提示与运行时动态注入(用户信息、检索片段、当前子任务)分开管理。第二,按需加载 / 渐进式披露:工具与 Skill 的详细说明外置,平时只暴露简短摘要,命中时再注入完整描述,避免一次性塞满。第三,精简与外置示例:少样本示例改为按任务类型动态选取,而非全部常驻。第四,用 prompt caching 降成本:把稳定前缀缓存,复用时只计增量。第五,定期裁剪与评测:建评测集回归遵循度,删冗余、合并重复规则,用数据驱动取舍。

常见误区

⚠️ 常见踩坑

误区一:把所有规则、工具文档、例外都堆进 System Prompt,以为「写得越全模型越听话」——实际会注意力稀释、成本飙升。误区二:把每次请求都变化的动态内容(检索结果、用户输入)硬写进系统提示,导致 prompt caching 失效、缓存命中率为零。静态与动态必须分层。

追问

追问 1System Prompt 和动态注入的上下文应该怎么划分边界?

判断标准是「是否随请求变化」。跨会话稳定的内容(角色、工具清单、格式与安全规范)放静态 System Prompt,可被 prompt caching 复用;随用户、会话、子任务变化的内容(用户画像、检索片段、当前目标、对话历史)放动态注入区,拼在静态前缀之后。这样既保证缓存命中,又让单次请求只携带当下必要的信息。

追问 2工具很多时,工具描述也会让上下文爆炸,怎么办?

用渐进式披露:默认只给模型一份简短的工具名称与一句话用途清单,让它先决定大致用哪个;命中后再把该工具的完整参数 Schema 与用法注入。也可做工具检索(按当前任务向量召回 Top-K 工具)或按角色/场景分组只暴露子集,避免几十个工具的详细描述常驻上下文。

追问 3怎么验证精简 System Prompt 后行为没有退化?

建立覆盖核心场景与边界 case 的评测集(含正例与该拒答的负例),对遵循度、格式正确率、拒答准确率等指标做离线回归。每次改 System Prompt 都跑一遍对比基线,必要时用 LLM 作为评判者批量打分,再配合线上抽样与用户反馈做长期监控,确保删减没有引入回归。

🔗 相似问题

同一考点的不同问法,面试官可能换着问,一起刷更稳

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

按主题分类的相关资源,便于系统复习