提示词工程的底层逻辑:别再‘许愿‘了,这是一门工程学科 📅 发布时间:2026/7/15 3:34:23 👁️ 浏览次数: 提示词工程的底层逻辑别再许愿了这是一门工程学科你在 Agent 代码里写的那几行 System Prompt决定了 Agent 是聪明还是智障。但大部分人写 Prompt 靠的是玄学——试到对为止。前言Prompt 是 Agent 的操作系统Agent 的 System Prompt 是什么它是 Agent 的系统指令定义了 Agent 的角色、行为、工具、规则。但多数人写 System Prompt 是这样system_prompt 你是一个有用的 AI 助手。 你可以使用以下工具 - get_weather(city) - send_email(to, subject, body) 然后跑了一遍发现 Agent 不听话就开始加请你务必“一定要”“注意”——越写越长越写越乱。问题出在哪你不是在写 Prompt你是在许愿。你没有理解模型到底是怎么理解你的文字的。一、模型如何理解提示词1.1 提示词是条件概率从技术角度看Prompt 的作用是设定条件概率的输入。P(回答 | Prompt)模型的任务是给定 Prompt生成最可能的 token 序列。这意味着Prompt 中的每个词都在影响输出的概率分布越靠近输入末尾的词影响越大重复出现的模式会被强化1.2 模型不是读你的文字是预测下一个词Prompt你是一个 AI 助手。 模型的处理 1. 在训练数据中搜索你是一个 AI 助手的上下文 2. 发现大量你是一个 AI 助手可以帮助用户的句子 3. 所以输出你可以帮助用户的概率很高关键洞察模型不是理解了你的 Prompt而是匹配到了训练数据中与你的 Prompt 最相似的模式。1.3 System Prompt 的工作原理System Prompt 之所以有效不是因为它是系统指令而是因为它占据了上下文窗口的前面位置设定了后续对话的语境。[System Prompt] → 设定角色、工具、规则 [User Message] → 受 System Prompt 影响 [Assistant Response] → 受 System Prompt User Message 共同影响 [User Message] → 进一步受之前对话影响 ...System Prompt 的位置优势在 Attention 中开头的 token 有全局可见性——它们可以影响所有后续的 token。二、提示词设计的三个层次2.1 层次一指令Instruction告诉模型做什么。翻译以下内容为英文 用 Python 写一个二分查找函数。 总结这篇文章的核心观点。关键指令要清晰、具体、唯一。模糊的指令得到模糊的输出。2.2 层次二上下文Context告诉模型在什么场景下。你是一个客服 Agent专门处理退换货问题。 用户刚购买了一个产品现在对产品不满意。 以下是公司的退换货政策...关键上下文不是装饰是模型生成的基础。没有上下文模型只能依赖训练数据中的通用模式。2.3 层次三约束Constraint告诉模型不能做什么。不要询问用户的个人信息。 如果不知道答案就说我不确定。 始终用中文回复。 输出格式必须为 JSON。关键约束要具体、可验证。模糊的约束“请友好回复”不如具体的约束“每句话都以’您好’开头”。三、提示词设计的核心原则3.1 原则一明确输出格式错误做法请告诉我北京今天的天气。模型可能输出一篇文章、一段话、一个列表正确做法请告诉我北京今天的天气。 输出格式{temperature: 温度, condition: 天气状况, humidity: 湿度}模型输出可解析的结构化数据3.2 原则二给出示例Few-shot零样本Zero-shot把以下句子翻译成英文今天天气很好。少样本Few-shot把以下句子翻译成英文 今天天气很好。 → The weather is nice today. 昨天下了雨。 → It rained yesterday. 明天会下雪。 → It will snow tomorrow. 现在刮风了。 → 为什么 Few-shot 有效因为模型在训练数据中见过示例 → 输出的模式。给 3 个示例就是在告诉模型我正在做这种任务。3.3 原则三位置越靠后影响越大# 错误做法把最重要的信息放前面system_prompt 你是 xx 公司的客服 Agent。 你可以使用以下工具 - search_knowledge_base(query) - check_order_status(order_id) - escalate_to_human(issue) 公司退换货政策... 注意如果用户询问退款请先查询订单状态。 注意不要透露公司内部信息。 # 正确做法把最重要的信息放最后system_prompt 你是 xx 公司的客服 Agent。 你可以使用以下工具 - search_knowledge_base(query) - check_order_status(order_id) - escalate_to_human(issue) 公司退换货政策... 最重要的规则 1. 如果用户询问退款请先查询订单状态。 2. 不要透露公司内部信息。 3.4 原则四减少歧义模糊请优化这段代码 # 优化什么性能可读性安全性清晰请优化这段代码的性能目标是将运行时间减少 50% 以上。3.5 原则五避免否定指令错误不要提到竞争对手的名字。 不要输出 Markdown 格式。正确只使用中文不提及任何公司名称。 以纯文本格式输出不要使用 Markdown。为什么模型在训练时更多看到的是应该做什么而不是不应该做什么。否定指令容易让模型混淆。四、提示词模板Agent 的 System Prompt 设计4.1 标准 System Prompt 模板【角色设定】 你是一个 [角色名称]专门负责 [任务描述]。 【核心能力】 你可以使用以下工具 1. [工具名称]([参数]): [工具描述] 2. [工具名称]([参数]): [工具描述] 【行为规则】 1. [规则 1] 2. [规则 2] ... 【输出格式】 [指定输出格式如 JSON] 【重要提醒】 [最关键的 1-2 条规则放在最后]4.2 Agent 专用示例system_prompt 你是一个智能助手 Agent专门负责协助用户完成各种任务。 【核心能力】 你可以使用以下工具来完成任务 1. search_web(query: str): 搜索网络获取最新信息 - 适合需要最新信息、不确定答案、需要验证事实 2. get_weather(city: str): 查询指定城市的天气 - 适合用户询问天气相关问题时 3. send_email(to: str, subject: str, body: str): 发送邮件 - 需要用户明确指定收件人、主题和内容 【工作流程】 1. 分析用户需求确定需要哪些工具 2. 按顺序调用工具每次都等待工具返回结果 3. 根据工具返回的结果决定下一步操作 4. 如果工具返回错误尝试修复或告诉用户 【重要规则】 1. 始终用中文回复 2. 如果不知道答案请使用搜索工具不要编造 3. 工具调用结果必须如实报告给用户 4. 不要执行任何可能对用户有害的操作 4.3 动态注入System Prompt 中的某些部分应该是动态的根据当前上下文生成defbuild_system_prompt(user_context,available_tools,session_info):promptf 你是一个帮助你完成任务的 AI Agent。 用户信息 - 名称{user_context.name}- 偏好{user_context.preferences}当前对话 - 已进行轮次{session_info.turn_count}- 已完成任务{session_info.completed_tasks}ifavailable_tools:promptf 你可以使用的工具当前对话中已加载{format_tools(available_tools)}returnprompt五、提示词优化的系统方法5.1 A/B 测试不要靠感觉判断哪个 Prompt 好做 A/B 测试prompt_a请把以下内容翻译成英文prompt_b现在需要你扮演一个翻译专家。请将以下中文内容准确翻译为英文保持原文风格和语气# 测试 100 个用例results_atest_translation(prompt_a,100)results_btest_translation(prompt_b,100)# 比较结果print(fPrompt A 准确率{results_a.accuracy})print(fPrompt B 准确率{results_b.accuracy})5.2 迭代优化V1初始 Prompt ↓ 评估找到薄弱环节 ↓ V2针对性修改 ↓ 评估对比 V1 和 V2 ↓ V3继续优化 ↓ ...每次只改一个变量同时改多个地方你不知道哪个改动的效果最好。5.3 反模式Prompt 越长越好不。有研究显示Prompt 超过一定长度后效果不再提升太长反而让模型迷失重点核心信息应该在 Prompt 末尾建议System Prompt 控制在 800-1500 字以内关键规则放在最后 200 字。六、Prompt 在 Agent 中的特殊考量6.1 工具调用 vs 自然回复Agent 的 Prompt 需要同时控制两种行为system_prompt 你的行为有两种模式 模式一工具调用 当你需要获取信息或执行操作时输出工具调用 {tool: search_web, params: {query: ...}} 模式二自然回复 当用户与你对话或你根据工具结果生成回复时以自然语言输出。 选择规则 1. 优先使用工具获取信息而不是凭记忆回答 2. 工具调用后根据结果生成回复 3. 如果工具返回错误分析原因并尝试修复 6.2 多轮对话中的 Prompt 设计在 Agent 的多轮对话中System Prompt 会逐渐在 Attention 中稀释。解决方案方案 1每轮重申关键规则defbuild_message(user_input,history):messages[{role:system,content:system_prompt},*history,# 在每轮用户输入前重申关键规则{role:system,content:提醒优先使用工具获取信息不要编造},{role:user,content:user_input},]returnmessages方案 2关键规则注入到用户消息中defbuild_message(user_input,history):messages[{role:system,content:system_prompt},*history,# 把关键规则放在用户消息末尾{role:user,content:f{user_input}\n\n[系统提示请使用工具获取信息不要凭记忆回答]},]returnmessages总结原则含义实践条件概率Prompt 设定输出概率精确措辞比模糊强调更有效位置优势末尾信息影响力最大关键规则放最后输出格式明确指定输出格式给定模板或示例配合 Structured Output API少样本示例比指令更有效给 2-3 个示例迭代优化每次改一个变量A/B 测试持续改进Prompt 不是玄学是工程。理解模型的工作原理然后系统性地设计、测试、优化。下一篇文章我们将深入结构化提示词——多角色、多段落、格式约束以及如何让 Agent 输出完全可控。思考题你现在的 Agent System Prompt 有多长哪些部分是可以精简的如果你要让 Agent 在 10 轮对话后仍然记得第一条规则你会怎么做少样本示例在 Agent 的工具调用中应该怎么用给一个具体的例子上一篇[08] 模型评估与基准测试下一篇[10] 结构化提示词多角色、多段落
Python商品价格追踪工具:多平台自动比价+本地SQLite存储+可视化操作界面 本文还有配套的精品资源,点击获取 简介:用Python写的轻量级电商价格监控小工具,能自动抓取京东、淘宝等主流平台指定商品的实时售价,去重归类后存进本地SQLite数据库。带图形界面(tkinter实现)ÿ… 2026/7/15 3:34:23
企业级SSD的DWPD与PBW:如何根据实际业务负载评估真实寿命? 1. 企业级SSD寿命的核心指标:DWPD与PBW的本质 第一次接触企业级SSD规格参数时,我盯着产品手册上的"5年3.4 DWPD"和"10PBW"发愣——这些字母组合到底在说什么?后来在数据中心实际部署SSD时踩过几次坑才明白,这… 2026/7/15 3:32:22
Claude Code与MiniMax双引擎配置指南:代码理解+中文语义协同工作流 1. 项目概述:为什么需要同时配置 Claude Code 与 MiniMax? 你是不是也遇到过这样的场景:写一段 Python 数据清洗脚本,想让 AI 帮你补全逻辑、解释报错、甚至生成单元测试——但本地 IDE 插件调用的模型要么响应慢得像拨号上网&am… 2026/7/15 3:28:21
简单使用 SQLite-元一软件 创建 SQLite 数据库 打开 SQLiteStudio 软件,点击菜单“Database”,选择“Add a database”菜单项,如下图:在数据库弹窗中,数据类型选择“SQLite 3”,点击“”按钮创建一个 db 数据库文件,这里笔… 2026/7/15 5:49:19
从逻辑到架构:基于工资支付系统案例的DFD与SC映射实战 1. 工资支付系统的现实困境与需求分析每次月底看到财务科的同事加班到深夜,手工计算全校教职工的工资明细,我就忍不住思考:这种低效的工作方式真的无法改变吗?某职业高中的财务科长向我吐槽,现在每月需要两名会计连续工… 2026/7/15 5:49:19
数据挖掘-从Apriori到FP-Growth:算法演进与性能对比 1. 关联规则挖掘的进化之路想象你是一家超市的经理,想要知道哪些商品经常被顾客一起购买。比如买了啤酒的顾客往往也会买尿布,这就是经典的"啤酒与尿布"关联规则。20世纪90年代,Apriori算法是解决这类问题的首选工具,但… 2026/7/15 5:49:19
Webapi # 🔌 Webapi> 通用 Web API 接口项目,打造万能接口平台。---## 🔧 功能模块| 模块 | 说明 | |------|------| | RESTful API | 标准化的接口设计 | | 接口管理 | 统一的接口管理平台 | | 数据处理 | 灵活的数据转换与处理 | | 文档自动生成… 2026/7/15 5:47:19
C++ shared_ptr线程安全与循环引用陷阱深度解析 1. 项目概述:从“智能”到“陷阱”的深度剖析 在C现代内存管理的工具箱里, std::shared_ptr 无疑是那颗最耀眼的明星。它承诺了自动化的生命周期管理,让开发者从手动 new / delete 的泥潭中解放出来,尤其是在多线程和复杂对… 2026/7/15 5:47:19
Web 前端项目集合 # 🌐 Web 前端项目集合> 前端项目四件套!UI 组件库 在线笔记 媒体播放器 文件仓库,前端开发全覆盖。---## 📦 子项目| 项目 | 说明 | |------|------| | 🎨 CandyUI | 一套好看的前端 UI 样式库 | | Ὅ… 2026/7/15 5:47:19
行星减速机的工作原理是什么?从齿轮运动关系到减速比计算 一、行星齿轮机构的组成 标准行星齿轮机构主要包括: 太阳轮; 行星轮; 内齿圈; 行星架。 太阳轮位于机构中心。 多个行星轮围绕太阳轮均匀布置,行星轮内侧与太阳轮外啮合,外侧与内齿圈内啮合。 行星轮通过轴… 2026/7/15 0:03:00
阅读Java开源框架源码的心得分享! 前几日闲来无事有幸看到了一位博主分享自己阅读开源框架源码的心得,看了之后也引发了我的一些深度思考。我们为什么要看源码?我们该怎么样去看源码? 其中前者那位博主描述的我觉得很全了(如下图所示),就不做… 2026/7/15 0:03:00
【LINUX】驱动 【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】 2026/7/15 0:07:01
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/14 18:25:04
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41