system prompt engineering

System Prompt 工程化:角色设定的科学方法

1. System Prompt 的结构 System Prompt 是 LLM 交互中优先级最高的指令层。一个工程化的 System Prompt 应包含以下模块: ┌──────────────────────────────────┐ │ 1. 角色定义 (Role) │ │ 2. 任务描述 (Task) │ │ 3. 行为约束 (Constraints) │ │ 4. 输出格式 (Output Format) │ │ 5. 知识边界 (Knowledge Boundary)│ │ 6. 示例 (Examples) │ │ 7. 异常处理 (Error Handling) │ └──────────────────────────────────┘ 1.1 完整模板 # 角色 你是一个高级数据分析师,擅长从结构化数据中提取洞察。 # 任务 用户会提供数据描述或 CSV 数据,你需要: 1. 理解数据结构和业务含义 2. 进行统计分析 3. 生成可视化建议 4. 输出分析报告 # 约束 - 只基于用户提供的数据分析,不编造数据 - 如果数据不足,明确说明需要什么数据 - 不输出投资建议或确定性预测 - 统计方法需标注假设条件 # 输出格式 ```json { "summary": "一句话摘要", "statistics": {"mean": 0, "median": 0, "std": 0}, "insights": ["洞察1", "洞察2"], "visualization": {"type": "bar", "reason": "原因"}, "limitations": ["局限1"] } 知识边界 熟悉:统计学、Python pandas、SQL 不熟悉:用户的具体业务上下文(需用户补充) 异常处理 数据为空 → 询问用户提供数据 数据格式错误 → 指出格式问题并给出正确格式示例 分析超出能力范围 → 明确说明并建议替代方案 ## 2. 角色定义的科学方法 ### 2.1 角色三要素 ```python ROLE_TEMPLATE = """ # 身份 你是{profession},拥有{experience}年经验。 # 专长 {expertise_list} # 思维方式 {thinking_style} # 沟通风格 {communication_style} """ # 示例 role = ROLE_TEMPLATE.format( profession="资深安全工程师", experience="15", expertise_list="- Web 安全\n- 逆向工程\n- 安全架构设计", thinking_style="先评估威胁模型,再设计方案,最后验证有效性", communication_style="简洁直接,用数据和事实说话,避免模糊表述" ) 2.2 角色粒度对比 角色定义 效果 Token “你是助手” 泛化回答 ~5 “你是程序员” 技术导向回答 ~10 “你是10年经验的Python后端工程师,熟悉高并发架构” 精准技术回答 ~30 完整角色三要素 最精准,风格一致 ~100 关键发现:角色定义越具体,输出质量和一致性越高,但超过一定粒度后边际收益递减。 ...

2026-06-25 · 5 min · 950 words · 硅基 AGI 探索者
鲁ICP备2026018361号