提示具有“基于振动”的声誉,你输入某些东西,模型响应,你调整一个句子,它得到 最好,你继续点击,直到它起作用 - 如果它起作用。 轻微 对于任何严肃的事情来说,这是一个噩梦:合规性文本,数据管道,代码生成或“请不要在团队面前尴尬”输出。 以下是升级: . Prompt Reverse Engineering 这正是它听起来的样子: ,然后应用有针对性的修复 - 例如调试,而不是猜测。 use the model’s wrong answer to backtrack into what your prompt failed to define 想想糟糕的输出作为你的模型的说法: “你没有告诉我重要的是什么。 “你没有告诉我重要的是什么。 让我们把它变成一个可重复的工作流程。 为什么反向工程击中随机提示调整 即使你写出一个“看起来很好”的提示(清晰的问,礼貌的语气,合理的限制),模型仍然错过: 你关心的时间窗口, 你所期望的完美, 您的下游代码需要的格式, 您希望模型留在的角色 “正确”的定义。 反向工程为您提供了找到缺失的特征的方法 没有把你的快递吹进小说里。 fast 四种失败模式(以及他们真正告诉你的东西) 大多数快速故障都落入这些桶中之一. 如果你可以命名桶,你通常可以在一个通道中修复提示。 (一)实际失败 答案自信地指出错误的事实,混淆年份,或发明数字。 Symptom: 知识密集的任务:市场报告,学术写作,政策总结。 Typical trigger: What your prompt likely missed: 明确的时间范围(“2023年历年”与“过去12个月”), 源要求(引用、命名数据集), 当模型不知道时的倒退行为。 你问: 该模型使用2022数字回应,永远不会说它从哪里得到它们。 Example (UK-flavoured): “分析2023年全球销售的三大电动汽车品牌。 Prompt patch pattern: 添加“事实界限”:年份、地理、单位。 需要引用或透明的“我不确定”反馈。 如果没有准确的数字可用,请将数据断开。 2)破碎的逻辑 / 错过的步骤 结果看起来可信,但它跳过了步骤,跳过了结论,或提供了一个假装是一个过程的“线程”。 Symptom: 程序,调试,多步推理,架构计划。 Typical trigger: What your prompt likely missed: “覆盖所有核心步骤” “解释依赖性 / 订单” “使用固定的框架(检查清单 / 管道 / 食谱)” 你问: 它只列出了“处理缺失的值”和“删除漏洞”,并称之为一天。 Example: “解释一个完整的Python数据清理工作流程。 Prompt patch pattern: 强迫一个序列(A → B → C → D)。 需要一个为何订单。 需要一个决策测试(“我怎么知道这个步骤是必要的?”)。 (三)形式驱动 你要求标记表 / JSON / YAML / 代码块......它会像写博客文章一样返回一个友好的段落。 Symptom: 对于机器来说,什么都意味着:结构化输出、配置文件、负载、表。 Typical trigger: What your prompt likely missed: 严格性(“输出只有有效的JSON”), 方案限制(键、类型、所需字段), 一个简短的例子(几张)模型可以模仿。 你问: 它以小说回应,并在一个句子中混合供应商 + 发布日期。 Example: “给我三个流行的LLM的标记表。 Prompt patch pattern: 添加一个方案,加上“没有额外的密钥”。 添加“区块外无散文”。 包括一个小小的例子行。 角色 / 调音驱动 你要求儿科医生解释,并获得一份医学期刊摘要。 Symptom: 角色扮演,客户支持,教练,利益相关者 comms。 Typical trigger: What your prompt likely missed: 角色如何说话(阅读水平,温暖,禁忌语句), 角色的主要目标(安慰、说服、减缓) 禁止的内容(“避免医学术语;如果不可避免,定义术语”) Prompt patch pattern: 指定受众(“一个担忧的父母”,“一个年轻的工程师”,“一个CTO”). 指定语音规则(“友好,非审判性,英国英语”) 做/不做词汇 五步反向工程工作流程 这是“停止猜测”循环,保持轻量级,一次做一个变化。 步骤 1:确定偏差(标记准确错误) 将预期输出记录为检查列表,然后突出显示输出差异的位置。 檢查清單例子: 第2023章 市场份额 ↓↓↓ 资料来源 ↓↓ 比较三大品牌 ↓↓↓ 如果你不能准确地描述错误,你就无法准确地修复它。 步骤 2: 输入缺失的规格(提示故障) 对于每一个偏差,请问: 什么指示可以阻止这种情况? 该模型在错误的方向“解决”了哪些模糊? 典型的缺陷: 缺少边界(时间、地区、单位) 缺少完整性, 缺少输出计划 缺少色调/角色限制。 步骤 3:用最小提示编辑测试假设 不要重写整个提示,修补一个缺陷并重新运行。 如果结果以预期的方式改善,您的假设是正确的;如果不是,您错误诊断 - 回到步骤 2。 步骤 4:应用目标优化模式 一旦确认,应用最小的持久修复: 边界条款:“使用2023(一月至十二月)数据;如果不确定,那么说。 格式条款:“返回符合此格式的有效 JSON...” 覆盖条款:“包括这6个步骤......” 语音条款:“解释我像新人一样;避免语。 步骤 5:记录更改(构建您的快速更改日志) 这是大多数人跳过的部分 - 以及促使成为工程实践的部分。 保持一个小记录: 早期原创 失败的输出模型 假设错误 Patch 应用 结果 随着时间的推移,您将建立一个“常见故障 →标准补丁”的个人库。 完整工作示例:修复“数据清理工作流”提示 让我们把事情做好。 初步快速 “使用Python,用步骤和代码写下完整的数据清理过程。 “使用Python,用步骤和代码写下完整的数据清理过程。 恶劣的产量 它只返回两个项目: 填充缺失的价值观 移除外界 它丢弃了没有背景、没有命令和没有决策检查的代码。 反向工程诊断 Deviation points 缺少核心步骤(重复,类型铸造,标准化) 没有命令的理由 代码缺少评论和适用性说明 Prompt defects 没有“核心步骤列表” →模型选择部分子集 无订单约束 →模型输出以任意顺序 没有“解释何时使用” →代码变成复制/粘贴字符 补丁提示(最小但具体) 使用panda,以此顺序描述完整的数据清除工作流程: duplicates → 2) data types → 3) missing values → 4) outliers. For each step include: purpose, when it applies, and commented code. Also state how to detect whether the step is needed.” 使用panda,以此顺序描述完整的数据清除工作流程: 重复 → 2) 数据类型 → 3) 缺失的值 → 4) outliers. 对于每个步骤,包括:目的,当它适用,并评论代码。 结果(看起来很好) 下面是A 你可以重复使用的例子. 注意我们不使用硬代码 盲目地;我们由dtype分支。 slightly tweaked fillna(0) import pandas as pd def clean_frame(df: pd.DataFrame) -> pd.DataFrame: # 1) Duplicates: reduce noise before anything else dup_count = df.duplicated().sum() if dup_count: df = df.drop_duplicates().copy() # 2) Types: make sure comparisons and maths behave # Example: parse dates if you expect time-series logic later if "created_at" in df.columns: df["created_at"] = pd.to_datetime(df["created_at"], errors="coerce") # 3) Missing values: strategy depends on data type and meaning for col in df.columns: if df[col].isna().any(): if pd.api.types.is_numeric_dtype(df[col]): # Use median for robustness (less sensitive than mean) df[col] = df[col].fillna(df[col].median()) else: # For categorical/text, choose a clear placeholder df[col] = df[col].fillna("Unknown") # 4) Outliers: apply only to numeric columns where it makes sense num_cols = df.select_dtypes(include="number").columns for col in num_cols: q1 = df[col].quantile(0.25) q3 = df[col].quantile(0.75) iqr = q3 - q1 if iqr == 0: continue # no spread, no meaningful outliers lower = q1 - 1.5 * iqr upper = q3 + 1.5 * iqr df = df[(df[col] >= lower) & (df[col] <= upper)] return df 这不是“完美的数据清理”(取决于域),但它 一个一致的,可防御的管道与决策检查 - 正是你的原始提示没有要求的。 是 隐藏的陷阱:模型能力的界限 有时,模型是错误的,因为它没有数据 - 特别是对于“最新的”数字。 如果你在紧缩边界和询问来源后看到相同的事实失败,停止循环。 添加一个健康的倒退: “如果你不知道,就说你不知道。 “记住你最有信心的一年。 “建议我应该咨询哪个来源。 这将幻觉变成一个有用的答案。 常见的错误(以及如何避免它们) 错误1:“请正确”作为修复 这不是一个限制,这是一个愿望。 相反:通过边界 + 验证 + 倒退来定义正确性。 错误二:过度限制一切 如果你通过添加十个无关的规则来修复一个缺陷,你会很快出现肿胀和更糟糕的遵守。 修补缺陷,而不是你的焦虑。 错误三:不验证你的假设 你不能声称修复工作,除非你用最小的补丁重新运行它,并看到预期的改进。 把它当作一个单位测试。 实践习惯,使这个支架 保持一个失败分类(事实 / 逻辑 / 格式 / 角色)。 在调试过程中使用One-patch-per-run。 构建一个快速的变更日志(严肃地说,这是骗局代码)。 当您需要结构时,使用方案 + 微小的示例。 当你需要可靠性时,要求不确定性披露。 错误的答案不只是烦人的 - 他们是 如果你学会阅读它们,你会停止“劝告”并开始。 . 信息 engineering